You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by sn...@apache.org on 2016/05/27 22:51:04 UTC

[42/47] roller git commit: Add new blogroll implemented

Add new blogroll implemented


Project: http://git-wip-us.apache.org/repos/asf/roller/repo
Commit: http://git-wip-us.apache.org/repos/asf/roller/commit/0f5c8691
Tree: http://git-wip-us.apache.org/repos/asf/roller/tree/0f5c8691
Diff: http://git-wip-us.apache.org/repos/asf/roller/diff/0f5c8691

Branch: refs/heads/bootstrap-ui
Commit: 0f5c86913c1e509872cd30c24575f3a29a52e32a
Parents: 8116858
Author: Dave Johnson <sn...@gmail.com>
Authored: Sun Mar 27 15:05:39 2016 -0400
Committer: Dave Johnson <sn...@gmail.com>
Committed: Sun Mar 27 15:05:39 2016 -0400

----------------------------------------------------------------------
 .../resources/ApplicationResources.properties   |   6 +
 .../webapp/WEB-INF/jsps/editor/Bookmarks.jsp    | 142 ++++++++++++++++---
 2 files changed, 129 insertions(+), 19 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/roller/blob/0f5c8691/app/src/main/resources/ApplicationResources.properties
----------------------------------------------------------------------
diff --git a/app/src/main/resources/ApplicationResources.properties b/app/src/main/resources/ApplicationResources.properties
index cee7e75..ac0f1a8 100644
--- a/app/src/main/resources/ApplicationResources.properties
+++ b/app/src/main/resources/ApplicationResources.properties
@@ -84,6 +84,7 @@ bookmarksForm.path=Blogroll
 bookmarksForm.blogrollName=Blogroll name
 bookmarksForm.switchTo=Switch to blogroll
 bookmarksForm.deleteFolder=Delete current blogroll
+bookmarksForm.newBlogroll=New blogroll...
 
 bookmarksForm.addBookmark=Add blogroll link
 bookmarksForm.addFolder=New blogroll
@@ -106,6 +107,11 @@ bookmarksForm.error.move=Error performing move, parent to child moves not allowe
 bookmarksForm.importBookmarks=Import Blogroll via OPML
 bookmarksForm.noresults=There are currently no Blogroll links
 
+bookmarksForm.addBlogroll.title=Add New Blogroll
+bookmarksForm.editBlogroll.title=Edit Blogroll
+bookmarksForm.blogroll.requiredFields=You must specify a blogroll name
+bookmarkForm.error.duplicateName=No duplicate blogroll names
+
 # --------------------------------------------------------- Bookmarks import.jsp
 
 bookmarksImport.title=Import OPML Bookmarks

http://git-wip-us.apache.org/repos/asf/roller/blob/0f5c8691/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
index f569c98..ee4eb61 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/Bookmarks.jsp
@@ -21,7 +21,7 @@
 <%--
 Blogroll link management
 
-We used to call them Bookmarks and Folders, now we call them blogroll links and blogrolls.
+We used to call them Bookmarks and Folders, now we call them Blogroll links and Blogrolls.
 --%>
 
 <%-- ================================================================================================ --%>
@@ -94,7 +94,7 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
 
         <%-- allow user to select the bookmark folder to view --%>
         <s:select name="viewFolderId" list="allFolders" listKey="id" listValue="name"
-                 label="%{getText('bookmarksForm.switchTo')}" onchange="changeFolder()" />
+                 label="%{getText('bookmarksForm.switchTo')}" onchange="viewChanged()" />
 
     </s:if>
 
@@ -231,6 +231,7 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
     var renameCancel;
     var deleteSelectedButton;
     var moveSelectedButton;
+    var viewSelector;
     var moveToSelector;
 
     $( document ).ready(function() {
@@ -245,10 +246,17 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
         renameCancel         = $("#rename_cancel:first");
         deleteSelectedButton = $("#delete_selected:first");
         moveSelectedButton   = $("#move_selected:first");
+        viewSelector         = $("#bookmarks_viewFolderId:first");
         moveToSelector       = $("#bookmarks_targetFolderId:first");
 
         nameChanged();
         selectionChanged();
+
+        // add the "New Blogroll" option to blogroll selectors
+        viewSelector.append(
+                new Option('<s:text name="bookmarksForm.newBlogroll"/>', "new_blogroll" ));
+        moveToSelector.append(
+                new Option( '<s:text name="bookmarksForm.newBlogroll"/>', "new_blogroll" ));
     });
 
     function nameChanged() {
@@ -270,7 +278,7 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
     function selectionChanged() {
         var checked = false;
         var selected = $("[name=selectedBookmarks]");
-        for ( i in selected ) {
+        for ( var i in selected ) {
             if ( selected[i].checked ) {
                 checked = true;
                 break;
@@ -283,6 +291,8 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
             moveSelectedButton.attr("disabled", false );
             moveSelectedButton.addClass("btn-warning");
 
+            moveToSelector.attr("disabled", false);
+
         } else {
             deleteSelectedButton.attr("disabled", true );
             deleteSelectedButton.removeClass("btn-danger");
@@ -290,13 +300,12 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
             moveSelectedButton.attr("disabled", true );
             moveSelectedButton.removeClass("btn-warning");
 
-            moveToSelector.attr("disabled", true)
+            moveToSelector.attr("disabled", true);
         }
     }
 
     function renameFolder( event ) {
         event.preventDefault();
-        alert("renameFolder");
     }
 
     function cancelRenameFolder( event ) {
@@ -305,12 +314,14 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
     }
 
     function confirmDelete() {
+        // TODO: do not use plain old DHTML confirm here
         if (confirm("<s:text name='bookmarksForm.delete.confirm' />")) {
             document.bookmarks.submit();
         }
     }
 
     function deleteFolder() {
+        // TODO: do not use plain old DHTML confirm here
         if (confirm("<s:text name='bookmarksForm.deleteFolder.confirm' />")) {
             document.bookmarks.action = '<s:url action="bookmarks!deleteFolder" />';
             document.bookmarks.submit();
@@ -318,17 +329,33 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
     }
 
     function onMoveToFolder() {
+        // TODO: do not use plain old DHTML confirm here
         if (confirm("<s:text name='bookmarksForm.move.confirm' />")) {
             document.bookmarks.action = '<s:url action="bookmarks!move" />';
             document.bookmarks.submit();
         }
     }
 
-    function changeFolder() {
-        // user changed the blogroll/folder, post to "view" action to get new page
+    function viewChanged() {
+
         var bookmarksForm = $("#bookmarks")[0];
-        bookmarksForm.action = "bookmarks!view.rol";
-        bookmarksForm.submit();
+        var folderEditForm = $("#folderEditForm")[0];
+
+        if ( "new_blogroll" == bookmarksForm.viewFolderId.value ) {
+
+            // user selected New Blogroll option, show the add/edit blogroll modal
+            $('#blogroll-edit-title').html('<s:text name="bookmarksForm.addBlogroll.title" />');
+
+            folderEditForm.action = "folderAdd!save.rol";
+            folderEditForm.actionName.value = "folderAdd";
+
+            $('#addedit-bookmarkfolder-modal').modal({show: true});
+
+        } else {
+            // user changed the blogroll/folder, post to "view" action to get new page
+            bookmarksForm.action = "bookmarks!view.rol";
+            bookmarksForm.submit();
+        }
     }
 
 </script>
@@ -338,19 +365,96 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
 
 <%-- add/edit blogroll / folder form --%>
 
-<s:form name="folderEdit" cssStyle="display:none" theme="bootstrap" cssClass="form-horizontal">
-    <s:hidden name="salt" />
-    <s:hidden name="weblog" />
-    <s:hidden name="bean.id" />
-    <s:textfield name="bean.name" size="70" maxlength="255" />
-    <s:submit value="%{getText('generic.save')}" action="%{#mainAction}!save"/>
-    <s:submit value="%{getText('generic.cancel')}" action="folderEdit!cancel" />
-</s:form>
+<div id="addedit-bookmarkfolder-modal" class="modal fade addedit-bookmarkfolder-modal" tabindex="-1" role="dialog">
+
+    <div class="modal-dialog modal-lg">
+
+        <div class="modal-content">
+
+            <div class="modal-header">
+                <h3 id="blogroll-edit-title"></h3>
+            </div>
+
+            <div class="modal-body">
+                <s:form action="#" id="folderEditForm" theme="bootstrap" cssClass="form-horizontal">
+                    <s:hidden name="salt" />
+                    <s:hidden name="actionName" />
+                    <s:hidden name="weblog" />
+                    <s:hidden name="bean.id" />
+
+                    <%-- action needed here because we are using AJAX to post this form --%>
+                    <s:hidden name="action:folderEdit!save" value="save"/>
+
+                    <s:textfield name="bean.name" label="%{getText('generic.name')}" maxlength="255"/>
+                </s:form>
+            </div> <!-- modal-body-->
+
+            <div class="modal-footer">
+                <p id="feedback-area-blogroll-edit"></p>
+                <button onclick="submitEditedBlogroll()" class="btn btn-primary">
+                    <s:text name="generic.save"/>
+                </button>
+                <button type="button" class="btn" data-dismiss="modal">
+                    <s:text name="generic.cancel"/>
+                </button>
+            </div>
+
+        </div> <!-- modal-content-->
 
+    </div> <!-- modal-dialog -->
+
+</div>
+
+<script>
+
+    <%-- JavaScript for add/edit blogroll modal --%>
+
+    function submitEditedBlogroll() {
+
+        var folderEditForm = $("#folderEditForm")[0];
+
+        var feedbackAreaBlogrollEdit = $("#feedback-area-blogroll-edit");
+
+        // if name is empty reject and show error message
+        if ($("#folderEditForm_bean_name").val().trim() == "") {
+            feedbackAreaBlogrollEdit.html('<s:text name="bookmarksForm.blogroll.requiredFields" />');
+            feedbackAreaBlogrollEdit.css("color", "red");
+            return;
+        }
+
+        // post blogroll via AJAX
+        $.ajax({
+            method: 'post',
+            url: folderEditForm.attributes["action"].value,
+            data: $("#folderEditForm").serialize(),
+            context: document.body
+
+        }).done(function (data) {
+
+            // kludge: scrape response status from HTML returned by Struts
+            var alertEnd = data.indexOf("ALERT_END");
+            if (data.indexOf('<s:text name="bookmarkForm.error.duplicateName" />') < alertEnd) {
+                feedbackAreaBlogrollEdit.css("color", "red");
+                feedbackAreaBlogrollEdit.html('<s:text name="bookmarkForm.error.duplicateName" />');
+
+            } else {
+                feedbackAreaBlogrollEdit.css("color", "green");
+                feedbackAreaBlogrollEdit.html('<s:text name="generic.success" />');
+                $('#blogroll-edit-modal').modal("hide");
+                location.reload(true);
+            }
+
+        }).error(function (data) {
+            feedbackAreaBlogrollEdit.html('<s:text name="generic.error.check.logs" />');
+            feedbackAreaBlogrollEdit.css("color", "red");
+        });
+    }
+
+</script>
 
 <%-- ================================================================================================ --%>
 
-<%-- add/edit blogroll link form: a modal --%>
+<%-- add/edit link form: a modal --%>
 
 <div id="addedit-bookmark-modal" class="modal fade addedit-bookmark-modal" tabindex="-1" role="dialog">
 
@@ -445,7 +549,7 @@ We used to call them Bookmarks and Folders, now we call them blogroll links and
 
 <%-- ---------------------------------------------------- --%>
 
-<%-- JavaScript for add/edit blogroll link modal --%>
+<%-- JavaScript for add/edit link modal --%>
 
 <script>