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/06/26 20:13:14 UTC

[1/2] roller git commit: Fix problem with save button disable/enable logic.

Repository: roller
Updated Branches:
  refs/heads/bootstrap-ui 04a101d1e -> 2f4b2b3e1


Fix problem with save button disable/enable logic.


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

Branch: refs/heads/bootstrap-ui
Commit: 89135133fd6270ca2f0d74998befce81806a7404
Parents: 04a101d
Author: Dave Johnson <sn...@gmail.com>
Authored: Sat Jun 25 15:56:30 2016 -0400
Committer: Dave Johnson <sn...@gmail.com>
Committed: Sat Jun 25 15:56:30 2016 -0400

----------------------------------------------------------------------
 app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp | 11 +++++------
 1 file changed, 5 insertions(+), 6 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/roller/blob/89135133/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp b/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp
index fd21232..7f7b110 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp
@@ -110,22 +110,21 @@
             valid = true;
 
         } else {
-            saveButton.attr("disabled", true);
-            saveButton.addClass("btn-danger");
-            return;
+            valid = false;
         }
 
         if ( (password && password.trim().length) || (passwordConfirm && passwordConfirm.trim().length > 0 )) {
             if ( password != passwordConfirm ) {
-                saveButton.attr("disabled", true );
-                saveButton.addClass("btn-danger");
-                return;
+                valid = false;
             }
         }
 
         if ( valid ) {
             saveButton.attr("disabled", false);
             saveButton.removeClass("btn-danger");
+        } else {
+            saveButton.attr("disabled", true);
+            saveButton.addClass("btn-danger");
         }
 
     }


[2/2] roller git commit: Add Bootstrap to Create Weblog page, also fix validation logic on Profile page.

Posted by sn...@apache.org.
Add Bootstrap to Create Weblog page, also fix validation logic on Profile page.


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

Branch: refs/heads/bootstrap-ui
Commit: 2f4b2b3e12ba122deb840797932e56eca8a8ff12
Parents: 8913513
Author: Dave Johnson <sn...@gmail.com>
Authored: Sun Jun 26 16:05:56 2016 -0400
Committer: Dave Johnson <sn...@gmail.com>
Committed: Sun Jun 26 16:05:56 2016 -0400

----------------------------------------------------------------------
 .../webapp/WEB-INF/jsps/core/CreateWeblog.jsp   | 207 +++++++++++--------
 .../main/webapp/WEB-INF/jsps/core/Profile.jsp   |   4 +-
 2 files changed, 123 insertions(+), 88 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/roller/blob/2f4b2b3e/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp b/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
index 578c302..2be53cb 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
@@ -19,106 +19,141 @@
 <script src="<s:url value="/roller-ui/scripts/jquery-2.1.1.min.js" />"></script>
 <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>
 
-<script>
-function handlePreview(handle) {
-    previewSpan = document.getElementById("handlePreview");
-    var n1 = previewSpan.childNodes[0];
-    var n2 = document.createTextNode(handle.value);
-    if (handle.value == null) {
-	    previewSpan.appendChild(n2);
-    } else {
-	    previewSpan.replaceChild(n2, n1);
-    }
-}
-</script>
 
-<p class="subtitle"><s:text name="createWebsite.prompt" /></p>
+<p class="subtitle"><s:text name="createWebsite.prompt"/></p>
 
-<br />
+<br/>
 
-<s:form action="createWeblog!save">
-<s:hidden name="salt" />
+<s:form action="createWeblog!save" theme="bootstrap" cssClass="form-horizontal">
 
-<table class="formtable">
+    <s:hidden name="salt"/>
 
-<tr>
-    <td class="label"><label for="name" /><s:text name="generic.name" /></label></td>
-    <td class="field"><s:textfield name="bean.name" size="30" maxlength="30" /></td>
-    <td class="description"><s:text name="createWebsite.tip.name" /></td>
-</tr>
+    <s:textfield label="%{getText('generic.name')}"
+                 tooltip="%{getText('createWebsite.tip.name')}" onkeyup="formChanged()"
+                 name="bean.name" size="30" maxlength="30"/>
 
-<tr>
-        <td class="label"><label for="description" /><s:text name="generic.tagline" /></td>
-    <td class="field"><s:textfield name="bean.description" size="40" maxlength="255" /></td>
-    <td class="description"><s:text name="createWebsite.tip.description" /></td>
-</tr>
+    <s:textfield label="%{getText('createWebsite.handle')}"
+                 tooltip="%{getText('createWebsite.tip.handle')}"
+                 name="bean.handle" size="30" maxlength="30"
+                 onkeyup="handlePreview(this)"/>
 
-<tr>
-    <td class="label"><label for="handle" /><s:text name="createWebsite.handle" /></label></td>
-    <td class="field">
-        <s:textfield name="bean.handle" size="30" maxlength="30" onkeyup="handlePreview(this)" /><br />
-        <span style="text-size:70%">
+    <div class="form-group">
+        <label class="col-sm-3"></label>
+        <div class="col-sm-9 controls">
             <s:text name="createWebsite.weblogUrl" />:&nbsp;
-            <s:property value="absoluteSiteURL" />/<span id="handlePreview" style="color:red"><s:if test="bean.handle != null"><s:property value="bean.handle"/></s:if><s:else>handle</s:else></span>
-        </span>
-    </td>
-    <td class="description"><s:text name="createWebsite.tip.handle" /></td>
-</tr>
-
-<tr>
-    <td class="label"><label for="emailAddress" /><s:text name="createWebsite.emailAddress" /></label></td>
-    <td class="field"><s:textfield name="bean.emailAddress" size="40" maxlength="50" /></td>
-    <td class="description"><s:text name="createWebsite.tip.email" /></td>
-</tr>
-
-<tr>
-    <td class="label"><label for="locale" /><s:text name="createWebsite.locale" /></label></td>
-    <td class="field">
-       <s:select name="bean.locale" size="1" list="localesList" listValue="displayName" />
-    </td>
-    <td class="description"><s:text name="createWebsite.tip.locale" /></td>
-</tr>
-
-<tr>
-    <td class="label"><label for="timeZone" /><s:text name="createWebsite.timeZone" /></label></td>
-    <td class="field">
-       <s:select name="bean.timeZone" size="1" list="timeZonesList" />
-    </td>
-    <td class="description"><s:text name="createWebsite.tip.timezone" /></td>
-</tr>
-
-<tr>
-    <td class="label"><label for="theme" /><s:text name="createWebsite.theme" /></label></td>
-    <td class="field" ng-app="themeSelectModule" ng-controller="themeController">
-        <select id="themeSelector" name="bean.theme" size="1"
-        ng-model="selectedTheme" ng-options="theme as theme.name for theme in themes track by theme.id"></select>
-        <br />
-        <br />
-        <p>{{ selectedTheme.description }}</p>
-        <br />
-        <img src="<s:property value='siteURL'/>{{ selectedTheme.previewPath }}"/>
-    </td>
-    <td class="description"><s:text name="createWebsite.tip.theme" /></td>
-</tr>
-
-</table>
-
-<br />
-
-<s:submit value="%{getText('createWebsite.button.save')}" />
-<input type="button" value="<s:text name="generic.cancel"/>" onclick="window.location='<s:url action="menu"/>'" />
+            <s:property value="absoluteSiteURL" />/<span id="handlePreview" style="color:red">
+            <s:if test="bean.handle != null">
+                <s:property value="bean.handle"/>
+            </s:if>
+            <s:else>handle</s:else></span>
+            <br>
+        </div>
+    </div>
+
+    <s:textfield label="%{getText('createWebsite.emailAddress')}"
+                 tooltip="%{getText('createWebsite.tip.emailAddress')}" onkeyup="formChanged()"
+                 name="bean.emailAddress" size="40" maxlength="50"/>
+
+    <s:select label="%{getText('createWebsite.locale')}"
+              tooltip="%{getText('createWebsite.tip.locale')}"
+              name="bean.locale" size="1" list="localesList" listValue="displayName"/>
+
+    <s:select label="%{getText('createWebsite.timeZone')}"
+              tooltip="%{getText('createWebsite.tip.timeZone')}"
+              name="bean.timeZone" size="1" list="timeZonesList"/>
+
+    <div class="form-group" ng-app="themeSelectModule" ng-controller="themeController">
+        <label class="col-sm-3 control-label" for="createWeblog_bean_timeZone">Timezone</label>
+        <div class="col-sm-9 controls">
+            <select id="themeSelector" name="bean.theme" size="1"
+                    ng-model="selectedTheme"
+                    ng-options="theme as theme.name for theme in themes track by theme.id">
+            </select>
+            <br>
+            <br>
+            <p>{{ selectedTheme.description }}</p>
+            <img src="<s:property value='siteURL'/>{{ selectedTheme.previewPath }}"/>
+        </div>
+    </div>
+
+    <s:submit cssClass="btn btn-default"
+              value="%{getText('createWebsite.button.save')}"/>
+
+    <input class="btn" type="button" value="<s:text name="generic.cancel"/>"
+           onclick="window.location='<s:url action="menu"/>'"/>
 
 </s:form>
 
 <script>
+
     document.forms[0].elements[0].focus();
 
     angular.module('themeSelectModule', [])
-        .controller('themeController', ['$scope', function($scope) {
-            $.ajax({ url: "<s:property value='siteURL' />/roller-ui/authoring/themedata", async:false,
-                success: function(data) { $scope.themes = data; }
-            });
-            $scope.selectedTheme = $scope.themes[0];
-    }]);
+            .controller('themeController', ['$scope', function ($scope) {
+                $.ajax({
+                    url: "<s:property value='siteURL' />/roller-ui/authoring/themedata", async: false,
+                    success: function (data) {
+                        $scope.themes = data;
+                    }
+                });
+                $scope.selectedTheme = $scope.themes[0];
+            }]);
+
+
+    var saveButton;
+
+    $( document ).ready(function() {
+        saveButton = $("#createWeblog_0");
+        formChanged();
+    });
+
+    function formChanged() {
+        var valid = false;
+
+        var name   = $("#createWeblog_bean_name:first").val();
+        var handle = $("#createWeblog_bean_handle:first").val();
+        var email  = $("#createWeblog_bean_emailAddress:first").val();
+
+        if (    name      && name.trim().length > 0
+                && handle && handle.trim().length > 0
+                && email  && email.trim().length > 0   && validateEmail(email) ) {
+            valid = true;
+
+        } else {
+            valid = false;
+        }
+
+        if ( valid ) {
+            saveButton.attr("disabled", false);
+            saveButton.removeClass("btn-danger");
+        } else {
+            saveButton.attr("disabled", true);
+            saveButton.addClass("btn-danger");
+        }
+
+    }
+
+    function validateEmail(email) {
+        var re = /^(([^<>()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/;
+        return re.test(email);
+    }
+
+    function handlePreview(handle) {
+        previewSpan = document.getElementById("handlePreview");
+        var n1 = previewSpan.childNodes[0];
+        var n2 = document.createTextNode(handle.value);
+        if (handle.value == null) {
+            previewSpan.appendChild(n2);
+        } else {
+            previewSpan.replaceChild(n2, n1);
+        }
+        formChanged();
+    }
+
+    formChanged();
+
+</script>
+
+
 </script>
 

http://git-wip-us.apache.org/repos/asf/roller/blob/2f4b2b3e/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp
----------------------------------------------------------------------
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp b/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp
index 7f7b110..ce7f13d 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/Profile.jsp
@@ -105,8 +105,8 @@
         var passwordConfirm = $("#profile_bean_passwordConfirm:first").val();
 
         if (    screenName && screenName.trim().length > 0
-             && fullName && fullName.trim().length > 0
-             && email && fullName.trim().length > 0 && validateEmail(email) ) {
+             && fullName   && fullName.trim().length > 0
+             && email      && email.trim().length > 0 && validateEmail(email) ) {
             valid = true;
 
         } else {