diff options
-rw-r--r-- | js/app/services/businesslayer/folderbusinesslayer.coffee | 20 | ||||
-rw-r--r-- | js/public/app.js | 21 | ||||
-rw-r--r-- | templates/part.listfolder.php | 23 |
3 files changed, 58 insertions, 6 deletions
diff --git a/js/app/services/businesslayer/folderbusinesslayer.coffee b/js/app/services/businesslayer/folderbusinesslayer.coffee index acb3b4a58..2be1c415a 100644 --- a/js/app/services/businesslayer/folderbusinesslayer.coffee +++ b/js/app/services/businesslayer/folderbusinesslayer.coffee @@ -155,6 +155,24 @@ FeedModel, $rootScope) -> @_folderModel.removeByName(folderName) + edit: (folderId) -> + folder = @_folderModel.getById(folderId) + folder.editing = true + folder.originalValue = folder.name + + + rename: (folderId, folderName) -> + folder = @_folderModel.getById(folderId) + folder.editing = false + @_persistence.renameFolder(folderId, folderName) + + + cancel: (folderId) -> + folder = @_folderModel.getById(folderId) + folder.editing = false + folder.name = folder.originalValue + + import: (xml) -> opml = @_opmlParser.parseXML(xml) @_importElement(opml, 0) @@ -187,4 +205,4 @@ FeedModel, $rootScope) -> ActiveFeed, Persistence, FeedType, ItemModel, OPMLParser, NewestItem, FeedModel, $rootScope) -]
\ No newline at end of file +] diff --git a/js/public/app.js b/js/public/app.js index f8002b608..789ab42e8 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -1494,6 +1494,27 @@ License along with this library. If not, see <http://www.gnu.org/licenses/>. return this._folderModel.removeByName(folderName); }; + FolderBusinessLayer.prototype.edit = function(folderId) { + var folder; + folder = this._folderModel.getById(folderId); + folder.editing = true; + return folder.originalValue = folder.name; + }; + + FolderBusinessLayer.prototype.rename = function(folderId, folderName) { + var folder; + folder = this._folderModel.getById(folderId); + folder.editing = false; + return this._persistence.renameFolder(folderId, folderName); + }; + + FolderBusinessLayer.prototype.cancel = function(folderId) { + var folder; + folder = this._folderModel.getById(folderId); + folder.editing = false; + return folder.name = folder.originalValue; + }; + FolderBusinessLayer.prototype["import"] = function(xml) { var opml; opml = this._opmlParser.parseXML(xml); diff --git a/templates/part.listfolder.php b/templates/part.listfolder.php index 23775f971..49a83eb24 100644 --- a/templates/part.listfolder.php +++ b/templates/part.listfolder.php @@ -11,10 +11,22 @@ data-id="{{ folder.id }}" droppable> <button class="collapse" + ng-hide="folder.editing" title="<?php p($l->t('Collapse'));?>" ng-click="folderBusinessLayer.toggleFolder(folder.id)"></button> + <div ui-if="folder.editing" class="rename-feed"> + <input type="text" ng-model="folder.name" autofocus> + <button title="<?php p($l->t('Cancel')); ?>" + ng-click="folderBusinessLayer.cancel(folder.id)" + class="action-button back-button action"></button> + <button title="<?php p($l->t('Save')); ?>" + ng-click="folderBusinessLayer.rename(folder.id, folder.name)" + class="action-button create-button action"> + </button> + </div> <a href="#" class="title folder-icon" + ng-hide="folder.editing" ng-click="folderBusinessLayer.load(folder.id)" ng-class="{ 'progress-icon': !folder.id, @@ -27,7 +39,7 @@ <span class="utils"> <button ng-click="folderBusinessLayer.delete(folder.id)" - ng-hide="!folder.id" + ng-hide="folder.editing || !folder.id" class="svg action delete-icon delete-button" title="<?php p($l->t('Delete folder')); ?>" oc-tooltip></button> @@ -49,10 +61,11 @@ ng-show="folder.error" oc-tooltip></button> -<!-- <button class="svg action edit-icon" - ng-click="renameFolder(folder.id)" - title="<?php p($l->t('Rename folder')); ?>"></button> ---> + <button class="svg action rename-feed-icon" + ng-hide="folder.editing" + ng-click="folderBusinessLayer.edit(folder.id)" + title="<?php p($l->t('Rename folder')); ?>" + oc-tooltip></button> </span> <ul> |