diff options
-rw-r--r-- | lib/gallery.dialog.js | 2 | ||||
-rw-r--r-- | modules/tag/views/admin_tags.html.php | 95 | ||||
-rw-r--r-- | themes/admin_default/js/ui.init.js | 34 | ||||
-rw-r--r-- | themes/default/js/ui.init.js | 2 |
4 files changed, 116 insertions, 17 deletions
diff --git a/lib/gallery.dialog.js b/lib/gallery.dialog.js index cfc89227..ed17cf9d 100644 --- a/lib/gallery.dialog.js +++ b/lib/gallery.dialog.js @@ -4,7 +4,7 @@ * @see openDialog() */ function handleDialogEvent(event) { - openDialog(event.data.element); + openDialog(event.currentTarget); event.preventDefault(); } diff --git a/modules/tag/views/admin_tags.html.php b/modules/tag/views/admin_tags.html.php index 8700fc09..c1d32de5 100644 --- a/modules/tag/views/admin_tags.html.php +++ b/modules/tag/views/admin_tags.html.php @@ -1,15 +1,78 @@ <?php defined("SYSPATH") or die("No direct script access.") ?> -<h1> <?= t("Tags") ?> </h1> - -<div id="gTagSearch"> - <form method="get" action="<?= url::site("admin/tags") ?>"> - <fieldset> - <legend> <?= t("Search Tags") ?> </legend> - <input name="filter" value="<?= $filter ?>"/> - <input type="submit" value="<?= t("Search Tags") ?>"/> - </fieldset> - </form> -</div> +<style> + #gTagAdmin ul { + padding-bottom: .3em; + } + #gTagAdmin li { + padding: .1em 0 .2em .3em; + } + #gTagAdmin .gColumn { + float: left; + width: 200px; + } + .gEditable { + padding: .1em .3em .2em .3em; + } + .gEditable:hover { + background-color: #ffc; + cursor: text; + } + #gRenameTagForm input { + padding: 0 .2em 0 .2em; + clear: none; + float: left; + } + #gRenameTagForm input[type="submit"] { + height: 25px; + } + #gRenameTagForm a, #gEditTagForm span { + display: block; + float: left; + padding: .2em 0 0 .3em; + } +</style> +<div class="gBlock"> + <h2> + <?= t("Tag Admin") ?> + </h2> + + <? $tags_per_column = $tags->count()/5 ?> + <? $column_tag_number = 0 ?> + + <div id="gTagAdmin" class="gBlockContent"> + <div class="gColumn"> + <? foreach ($tags as $i => $tag): ?> + <? $current_letter = strtoupper(substr($tag->name, 0, 1)) ?> + + <? if ($i == 0): ?> + <strong><?= $current_letter ?></strong> + <ul> + <? elseif ($last_letter != $current_letter): ?> + <? if ($column_tag_number > $tags_per_column): ?> + </div> + <div class="gColumn"> + <? $column_tag_number = 0 ?> + <? endif ?> + </ul> + <strong><?= $current_letter ?></strong> + <ul> + <? endif ?> + + <li> + <span id="gTag-<?= $tag->id ?>" class="gEditable" + title="<?= t("Click to edit this tag") ?>"><?= $tag->name ?></span> + <span class="understate">(<?= $tag->count ?>)</span> + <a href="<?= url::site("admin/tags/form_delete/$tag->id") ?>" class="gDialogLink" + title="<?= t("Delete this tag") ?>">X</a> + </li> + + <? $column_tag_number++ ?> + <? $last_letter = $current_letter ?> + <? endforeach ?> + </ul> + + </div> + </div> <table> <tr> @@ -40,3 +103,13 @@ </tr> <? endforeach ?> </table> + +<div id="gTagSearch"> + <form method="get" action="<?= url::site("admin/tags") ?>"> + <fieldset> + <legend> <?= t("Search Tags") ?> </legend> + <input name="filter" value="<?= $filter ?>"/> + <input type="submit" value="<?= t("Search Tags") ?>"/> + </fieldset> + </form> +</div> diff --git a/themes/admin_default/js/ui.init.js b/themes/admin_default/js/ui.init.js index 04b7ab0c..efc2af04 100644 --- a/themes/admin_default/js/ui.init.js +++ b/themes/admin_default/js/ui.init.js @@ -17,13 +17,13 @@ $(document).ready(function(){ // Apply modal dialogs var dialogLinks = $(".gDialogLink"); for (var i=0; i < dialogLinks.length; i++) { - $(dialogLinks[i]).bind("click", {element: dialogLinks[i]}, handleDialogEvent); + $(dialogLinks[i]).bind("click", handleDialogEvent); } // Apply hide/show functionality on user admin view var panelLinks = $(".gPanelLink"); for (i=0; i<panelLinks.length; i++) { - $(panelLinks[i]).bind("click", {element: panelLinks[i]}, handlePanelEvent); + $(panelLinks[i]).bind("click", handlePanelEvent); } // Round corners @@ -33,11 +33,35 @@ $(document).ready(function(){ // Add drop shadows $(".gSelected").dropShadow(); - + + // In-place editing for tag admin + $(".gEditable").bind("click", editInplace); }); +function editInplace(element){ + // close already open inplace edit forms + if ($("#gRenameTagForm").length) { + var li = $("#gRenameTagForm").parent(); + $("#gRenameTagForm").parent().html($("#gRenameTagForm").parent().data("revert")); + //li.$(".gEditable"); // TODO: would be good if below statements could only execute within li + $(".gEditable").bind("click", editInplace); + $(".dialogLink").bind("click", handleDialogEvent); + } + + var tag_id = $(this).attr('id').substr(5); + $(this).parent().data("revert", $(this).parent().html()); + var form = '<form id="gRenameTagForm" method="post" action="/gallery3/index.php/admin/tags/rename/' + tag_id + '">'; + form += '<input id="name" name="name" type="text" class="textbox" value="' + tag_name + '" />'; + form += '<input type="submit" class="submit" value="Save" />'; + form += '<span>or</span> <a href="#">cancel</a>'; + form += '</form>'; + + $(this).parent().html(form); + $("#gRenameTagForm .textbox").focus(); +} + function handlePanelEvent(event) { - togglePanel(event.data.element); + togglePanel(event.currentTarget); event.preventDefault(); } @@ -89,3 +113,5 @@ function togglePanel(element, on_success) { } return false; } + + diff --git a/themes/default/js/ui.init.js b/themes/default/js/ui.init.js index 57b7ddec..2b8db1b7 100644 --- a/themes/default/js/ui.init.js +++ b/themes/default/js/ui.init.js @@ -50,7 +50,7 @@ $(document).ready(function() { $("#gLoginLink").addClass("gDialogLink"); var dialogLinks = $(".gDialogLink"); for (var i=0; i < dialogLinks.length; i++) { - $(dialogLinks[i]).bind("click", {element: dialogLinks[i]}, handleDialogEvent); + $(dialogLinks[i]).bind("click", handleDialogEvent); } // Short forms |