summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ajax/collapsefolder.php40
-rw-r--r--appinfo/database.xml8
-rw-r--r--appinfo/version2
-rw-r--r--css/news.css19
-rw-r--r--js/menu.js14
-rw-r--r--lib/folder.php14
-rw-r--r--lib/foldermapper.php18
-rw-r--r--templates/part.listfolder.php15
8 files changed, 109 insertions, 21 deletions
diff --git a/ajax/collapsefolder.php b/ajax/collapsefolder.php
new file mode 100644
index 000000000..eccaecf7c
--- /dev/null
+++ b/ajax/collapsefolder.php
@@ -0,0 +1,40 @@
+<?php
+/**
+* ownCloud - News app
+*
+* @author Bernhard Posselt
+* Copyright (c) 2012 - Bernhard Posselt <nukeawhale@gmail.com>
+*
+* This file is licensed under the Affero General Public License version 3 or later.
+* See the COPYING-README file
+*
+*/
+
+// Check if we are a user
+OCP\JSON::checkLoggedIn();
+OCP\JSON::checkAppEnabled('news');
+OCP\JSON::callCheck();
+
+$folderId = (int)$_POST['folderId'];
+if($_POST['opened'] === 'false'){
+ $opened = false;
+} else {
+ $opened = true;
+}
+
+
+$folderMapper = new OCA\News\FolderMapper();
+$folder = $folderMapper->find($folderId);
+$folder->setOpened($opened);
+echo $folder->getOpened();
+$success = $folderMapper->update($folder);
+
+$l = OC_L10N::get('news');
+
+if(!$success) {
+ OCP\JSON::error(array('data' => array('message' => $l->t('Error collapsing folder.'))));
+ OCP\Util::writeLog('news','ajax/setallitemsread.php: Error collapsing folder with id '. $folderId, OCP\Util::ERROR);
+ exit();
+}
+
+OCP\JSON::success(); \ No newline at end of file
diff --git a/appinfo/database.xml b/appinfo/database.xml
index 34be67eea..c5b06bcac 100644
--- a/appinfo/database.xml
+++ b/appinfo/database.xml
@@ -30,7 +30,13 @@
<notnull>true</notnull>
<length>64</length>
</field>
-
+ <field>
+ <name>opened</name>
+ <type>boolean</type>
+ <default>true</default>
+ <notnull>true</notnull>
+ </field>
+
<index>
<name>PRIMARY</name>
<unique>true</unique>
diff --git a/appinfo/version b/appinfo/version
index 7495c0a15..f1d68e6b5 100644
--- a/appinfo/version
+++ b/appinfo/version
@@ -1,2 +1,2 @@
-7.2.2
+7.5
diff --git a/css/news.css b/css/news.css
index a04e02d0e..3e1e16297 100644
--- a/css/news.css
+++ b/css/news.css
@@ -181,9 +181,6 @@ div.add_parentfolder {
box-shadow: none;
-moz-box-shadow: none;
display: none;
- }
-
- #feeds button.collapsable_trigger.triggered {
-moz-transform: rotate(-90deg);
-webkit-transform: rotate(-90deg);
-ms-transform:rotate(-90deg);
@@ -191,6 +188,14 @@ div.add_parentfolder {
transform: rotate(-90deg);
}
+ #feeds .open .collapsable_trigger {
+ -moz-transform: rotate(0deg);
+ -webkit-transform: rotate(0deg);
+ -ms-transform:rotate(0deg);
+ -o-transform:rotate(0deg);
+ transform: rotate(0deg);
+ }
+
#feeds .folder.collapsable:hover button.collapsable_trigger {
display: block;
}
@@ -264,6 +269,14 @@ div.add_parentfolder {
background-image: none;
}
+ #feeds .folder.collapsable ul {
+ display: none;
+ }
+
+ #feeds .folder.collapsable.open ul {
+ display: block;
+ }
+
#feeds .folder.collapsable.open {
padding: 0;
background-image: linear-gradient(top, rgb(238,238,238) 0%, rgb(245,245,245) 100%);
diff --git a/js/menu.js b/js/menu.js
index 1c1d6a6a2..752cb1bbd 100644
--- a/js/menu.js
+++ b/js/menu.js
@@ -656,8 +656,18 @@ var News = News || {};
*/
Menu.prototype._toggleCollapse = function($listItem){
$listItem.toggleClass('open');
- $listItem.children('.collapsable_trigger').toggleClass('triggered');
- $listItem.children('ul').toggle();
+
+ var folderId = this._getIdAndTypeFromNode($listItem).id;
+ var data = {
+ 'folderId': folderId,
+ 'opened': $listItem.hasClass('open')
+ };
+
+ $.post(OC.filePath('news', 'ajax', 'collapsefolder.php'), data, function(jsondata){
+ if(jsondata.status != 'success'){
+ OC.dialogs.alert(jsonData.data.message, t('news', 'Error'));
+ }
+ });
};
/**
diff --git a/lib/folder.php b/lib/folder.php
index 6ed2103bb..93a37baa2 100644
--- a/lib/folder.php
+++ b/lib/folder.php
@@ -20,6 +20,7 @@ class Folder extends Collection {
private $name;
private $children;
private $parent;
+ private $opened;
public function __construct($name, $id = null, Collection $parent = null) {
$this->name = $name;
@@ -30,6 +31,9 @@ class Folder extends Collection {
if ($parent !== null) {
$this->parent = $parent;
}
+ if($this->opened === null){
+ $this->opened = true;
+ }
}
public function getName() {
@@ -40,6 +44,14 @@ class Folder extends Collection {
$this->name = $name;
}
+ public function getOpened() {
+ return $this->opened;
+ }
+
+ public function setOpened($opened) {
+ $this->opened = $opened;
+ }
+
public function getParentId() {
if ($this->parent === null) {
return 0;
@@ -59,4 +71,6 @@ class Folder extends Collection {
return $this->children;
}
+
+
} \ No newline at end of file
diff --git a/lib/foldermapper.php b/lib/foldermapper.php
index 431d80893..28abad0e6 100644
--- a/lib/foldermapper.php
+++ b/lib/foldermapper.php
@@ -43,6 +43,7 @@ class FolderMapper {
while( $row = $result->fetchRow()) {
$folderid = $row['id'];
$folder = new Folder($row['name'], $folderid);
+ $folder->setOpened($row['opened']);
$children = self::childrenOf($folderid);
$folder->addChildren($children);
$folderlist[] = $folder;
@@ -69,6 +70,7 @@ class FolderMapper {
while( $row = $result->fetchRow()) {
$folderid = $row['id'];
$folder = new Folder($row['name'], $folderid);
+ $folder->setOpened($row['opened']);
$children = self::childrenOfWithFeeds($folderid);
$folder->addChildren($children);
$collectionlist[] = $folder;
@@ -91,6 +93,7 @@ class FolderMapper {
$row = $result->fetchRow();
$folder = new Folder($row['name'], $row['id']);
+ $folder->setOpened($row['opened']);
return $folder;
}
@@ -103,8 +106,8 @@ class FolderMapper {
public function save(Folder $folder) {
$query = \OCP\DB::prepare('
INSERT INTO ' . self::tableName .
- '(name, parent_id, user_id)
- VALUES (?, ?, ?)
+ '(name, parent_id, user_id, opened)
+ VALUES (?, ?, ?, ?)
');
$name = $folder->getName();
@@ -117,9 +120,10 @@ class FolderMapper {
$parentid = $folder->getParentId();
$params=array(
- $name,
- $parentid,
- $this->userid
+ $name,
+ $parentid,
+ $this->userid,
+ $folder->getOpened()
);
$query->execute($params);
$folderid = \OCP\DB::insertid(self::tableName);
@@ -135,9 +139,9 @@ class FolderMapper {
*/
public function update(Folder $folder) {
$query = \OCP\DB::prepare('UPDATE ' . self::tableName
- . ' SET name = ? ' . ' WHERE id = ?');
+ . ' SET name = ?, opened = ?' . ' WHERE id = ?');
- $params = array($folder->getName(), $folder->getId());
+ $params = array($folder->getName(), $folder->getOpened(), $folder->getId());
$query->execute($params);
return true;
}
diff --git a/templates/part.listfolder.php b/templates/part.listfolder.php
index 93cc96c98..9057a14ba 100644
--- a/templates/part.listfolder.php
+++ b/templates/part.listfolder.php
@@ -2,16 +2,17 @@
$l = new OC_l10n('news');
-if(isset($_['mock'])) {
- $folderId = -1;
- $folderName = '';
+
+$folder = isset($_['folder']) ? $_['folder'] : null;
+$folderId = $folder->getId();
+$folderName = $folder->getName();
+if($folder->getOpened()){
+ $openedClass = 'open';
} else {
- $folder = isset($_['folder']) ? $_['folder'] : null;
- $folderId = $folder->getId();
- $folderName = $folder->getName();
+ $openedClass = 'collapsed';
}
-echo '<li class="folder open all_read" data-id="' . $folderId . '">';
+echo '<li class="folder ' . $openedClass . ' all_read" data-id="' . $folderId . '">';
echo '<button class="collapsable_trigger" title="' . $l->t('Collapse') . '"></button>';
echo '<a href="#" class="title">' . htmlspecialchars($folderName, ENT_QUOTES, 'UTF-8') . '</a>';
echo '<span class="buttons">';