diff options
author | Bernhard Posselt <nukeawhale@gmail.com> | 2012-09-08 19:11:22 +0200 |
---|---|---|
committer | Bernhard Posselt <nukeawhale@gmail.com> | 2012-09-08 19:11:22 +0200 |
commit | 9fcfdae0c275eea9d3835552404a291b00043492 (patch) | |
tree | 6e9057078c88f2446c9ec67ab760388fc1a02253 | |
parent | 9ad5cc8fda71ac11a1ddd52554837596dc6aa43a (diff) |
remember collapsed folders, simplyfied css and js
-rw-r--r-- | ajax/collapsefolder.php | 40 | ||||
-rw-r--r-- | appinfo/database.xml | 8 | ||||
-rw-r--r-- | appinfo/version | 2 | ||||
-rw-r--r-- | css/news.css | 19 | ||||
-rw-r--r-- | js/menu.js | 14 | ||||
-rw-r--r-- | lib/folder.php | 14 | ||||
-rw-r--r-- | lib/foldermapper.php | 18 | ||||
-rw-r--r-- | templates/part.listfolder.php | 15 |
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">'; |