diff options
-rw-r--r-- | ajax/changefoldername.php | 34 | ||||
-rw-r--r-- | css/news.css | 4 | ||||
-rw-r--r-- | js/main.js | 8 | ||||
-rw-r--r-- | js/menu.js | 7 | ||||
-rw-r--r-- | js/news.js | 30 | ||||
-rw-r--r-- | lib/foldermapper.php | 14 | ||||
-rw-r--r-- | templates/main.php | 37 | ||||
-rw-r--r-- | templates/part.dialogues.php | 46 |
8 files changed, 140 insertions, 40 deletions
diff --git a/ajax/changefoldername.php b/ajax/changefoldername.php new file mode 100644 index 000000000..7031364f6 --- /dev/null +++ b/ajax/changefoldername.php @@ -0,0 +1,34 @@ +<?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']; +$folderName = $_POST['folderName']; + +$folderMapper = new OCA\News\FolderMapper(); +$folder = $folderMapper->find($folderId); +$folder->setName($folderName); +$success = $folderMapper->update($folder); + +$l = OC_L10N::get('news'); + +if(!$success) { + OCP\JSON::error(array('data' => array('message' => $l->t('Error changing name of folder ' . $folderId . ' to ' . $folderName)))); + OCP\Util::writeLog('news','ajax/setallitemsread.php: Error changing name of folder ' . $folderId . ' to ' . $folderName, OCP\Util::ERROR); + exit(); +} + +OCP\JSON::success();
\ No newline at end of file diff --git a/css/news.css b/css/news.css index 69fdc2473..13b9ef47b 100644 --- a/css/news.css +++ b/css/news.css @@ -645,8 +645,8 @@ div.add_parentfolder { } /* dialog/menues */ -div.dialog { - overflow: visible; +#addfolder_dialog, #addfeed_dialog, #changefolder_dialog { + display: none; } .ui-dialog tbody tr:hover, .ui-dialog tr:active { diff --git a/js/main.js b/js/main.js index 2cfe51e8e..f219448de 100644 --- a/js/main.js +++ b/js/main.js @@ -77,11 +77,15 @@ $(document).ready(function(){ } }); - $('#addfolder_dialog,#addfeed_dialog').dialog({ + $('#addfolder_dialog,#addfeed_dialog,#changefolder_dialog').dialog({ dialogClass:'dialog', minWidth: 600, autoOpen: false - }).css('overflow','visible'); + }); + + $('#changefolder_dialog input[type=submit]').click(function(){ + News.Folder.changeName(this); + }); $('#folder_add_submit').click(function(){ News.Folder.submit(this); diff --git a/js/menu.js b/js/menu.js index e4453599c..0591fa828 100644 --- a/js/menu.js +++ b/js/menu.js @@ -546,7 +546,12 @@ var News = News || {}; * @param id the id */ Menu.prototype._edit = function(type, id){ - // TODO: + var $node = this._getNodeFromTypeAndId(type, id); + var name = $node.children('.title').html(); + var id = $node.data('id'); + $('#changefolder_dialog').find('input[type=text]').val(name); + $('#changefolder_dialog').find('input[type=hidden]').val(id); + $('#changefolder_dialog').dialog('open'); }; /** diff --git a/js/news.js b/js/news.js index deb3bfaba..483888005 100644 --- a/js/news.js +++ b/js/news.js @@ -50,6 +50,36 @@ News = { $(button).prop('value', t('news','Add folder')); }); }, + changeName:function(button){ + var folderName = $("#changefolder_dialog input[type=text]").val().trim(); + var folderId = parseInt($('#changefolder_dialog input[type=hidden]').val().trim()); + + if(folderName.length == 0) { + OC.dialogs.alert(t('news', 'Name of the folder cannot be empty.'), t('news', 'Error')); + return false; + } + + $(button).attr("disabled", true); + $(button).prop('value', t('news', 'Changing...')); + + var url = OC.filePath('news', 'ajax', 'changefoldername.php'); + var data = { + folderName: folderName, + folderId: folderId + }; + + $.post(url, data, function(jsonData){ + if(jsonData.status == 'success'){ + folderName = $('<div>').text(folderName).html(); + News.Objects.Menu.updateNode(News.MenuNodeType.Folder, folderId, {title: folderName}); + $('#changefolder_dialog').dialog('close'); + } else { + OC.dialogs.alert(jsonData.data.message, t('news', 'Error')); + } + $(button).attr("disabled", false); + $(button).prop('value', t('news','Change folder name')); + }); + } }, Feed: { id:'', diff --git a/lib/foldermapper.php b/lib/foldermapper.php index abc89b5af..eb64fa871 100644 --- a/lib/foldermapper.php +++ b/lib/foldermapper.php @@ -128,6 +128,20 @@ class FolderMapper { return $folderid; } + + /** + * @brief Updates the folder + * @param folder the folder to be updated + */ + public function update(Folder $folder){ + $query = \OCP\DB::prepare('UPDATE ' . self::tableName + . ' SET name = ? ' . ' WHERE id = ?'); + + $params = array(htmlspecialchars_decode($folder->getName()), $folder->getId()); + $query->execute($params); + return true; + } + /** * @brief Delete the folder and all its feeds from the database * @param folder the folder to be deleted (an instance of OCA\News\Folder) diff --git a/templates/main.php b/templates/main.php index 099a1a5a5..95e6ca976 100644 --- a/templates/main.php +++ b/templates/main.php @@ -61,40 +61,7 @@ if($showAll){ } else { echo $this->inc("part.nofeeds"); } -?> - -<div id="addfolder_dialog" title="<?php echo $l->t("Add Folder"); ?>"> - <table width="100%" style="border: 0;"> - <tr> - <td>Add new folder</td> - <td></td> - </tr> - <tr> - <td><input type="text" id="folder_add_name" placeholder="<?php echo $l->t('Folder name'); ?>" class="news_input" /></td> - <td><input type="submit" value="<?php echo $l->t('Add folder'); ?>" id="folder_add_submit" /></td> - </tr> - </table> -</div> + echo $this->inc("part.dialogues"); +?> -<div id="addfeed_dialog" title="<?php echo $l->t("Add Subscription"); ?>"> - <table width="100%" style="border: 0;"> - <tr> - <td>Add new feed</td> - <td> - <div class="add_parentfolder"> - <button class="dropdownBtn"> - <?php echo $l->t('Choose folder'); ?> - </button> - <input class="inputfolderid" type="hidden" name="folderid" value="0" /> - <ul class="menu dropdownmenu"> - </ul> - </div> - </td> - </tr> - <tr> - <td><input type="text" id="feed_add_url" placeholder="<?php echo $l->t('Address'); ?>" class="news_input" /></td> - <td><input type="submit" value="<?php echo $l->t('Add'); ?>" id="feed_add_submit" /></td> - </tr> - </table> -</div>
\ No newline at end of file diff --git a/templates/part.dialogues.php b/templates/part.dialogues.php new file mode 100644 index 000000000..114cbcfb5 --- /dev/null +++ b/templates/part.dialogues.php @@ -0,0 +1,46 @@ +<div id="addfolder_dialog" title="<?php echo $l->t('Add Folder'); ?>"> + <table> + <tr> + <td><?php echo $l->t('Add new folder'); ?></td> + <td></td> + </tr> + <tr> + <td><input type="text" id="folder_add_name" placeholder="<?php echo $l->t('Folder name'); ?>" class="news_input" /></td> + <td><input type="submit" value="<?php echo $l->t('Add folder'); ?>" id="folder_add_submit" /></td> + </tr> + </table> +</div> + +<div id="addfeed_dialog" title="<?php echo $l->t('Add Subscription'); ?>"> + <table> + <tr> + <td><?php echo $l->t('Add new feed'); ?></td> + <td> + <div class="add_parentfolder"> + <button class="dropdownBtn"><?php echo $l->t('Choose folder'); ?></button> + <input class="inputfolderid" type="hidden" name="folderid" value="0" /> + <ul class="menu dropdownmenu"> + </ul> + </div> + </td> + </tr> + <tr> + <td><input type="text" id="feed_add_url" placeholder="<?php echo $l->t('Address'); ?>" class="news_input" /></td> + <td><input type="submit" value="<?php echo $l->t('Add'); ?>" id="feed_add_submit" /></td> + </tr> + </table> +</div> + +<div id="changefolder_dialog" title="<?php echo $l->t('Change folder name'); ?>"> + <input class="inputfolderid" type="hidden" name="folderid" value="" /> + <table> + <tr> + <td><?php echo $l->t('Change folder name'); ?></td> + <td></td> + </tr> + <tr> + <td><input type="text" placeholder="<?php echo $l->t('Folder name'); ?>" class="news_input" /></td> + <td><input type="submit" value="<?php echo $l->t('Change folder name'); ?>" /></td> + </tr> + </table> +</div> |