You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jspwiki.apache.org by br...@apache.org on 2015/07/11 22:47:04 UTC

svn commit: r1690406 - in /jspwiki/trunk: ./ jspwiki-war/src/main/config/wro/ jspwiki-war/src/main/java/org/apache/wiki/ jspwiki-war/src/main/scripts/behaviors/ jspwiki-war/src/main/scripts/moo-extend/ jspwiki-war/src/main/scripts/wiki-edit/ jspwiki-wa...

Author: brushed
Date: Sat Jul 11 20:47:04 2015
New Revision: 1690406

URL: http://svn.apache.org/r1690406
Log:
2.10.2-svn-25 -- more fixes for the Haddock Template
       * [JSPWIKI-896] Haddock template – user preferences are not saved.
       * [JSPWIKI-518] Saving after editing a section will return you to that  section.
       * [JSPWIKI-433] Allow back button for TAB keys.

Modified:
    jspwiki/trunk/ChangeLog
    jspwiki/trunk/jspwiki-war/src/main/config/wro/wro-haddock.xml
    jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java
    jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Tabs.js
    jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Accesskey.js
    jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Element.Extend.js
    jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/String.Extend.js
    jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Textarea.js
    jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Wiki.Snips.js
    jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Prefs.js
    jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Wiki.js
    jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/Header.jsp
    jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PageTab.jsp
    jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PreferencesTab.jsp

Modified: jspwiki/trunk/ChangeLog
URL: http://svn.apache.org/viewvc/jspwiki/trunk/ChangeLog?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/ChangeLog (original)
+++ jspwiki/trunk/ChangeLog Sat Jul 11 20:47:04 2015
@@ -1,3 +1,25 @@
+2015-07-12  Dirk Frederickx (brushed AT apache DOT org)
+
+       * 2.10.2-svn-25
+       
+       * [JSPWIKI-896] Haddock template – user preferences are not saved.
+         haddock-pref.js was not properly included into the build, due to lowercase 
+         issue in wro-haddock.xml.
+         
+       * [JSPWIKI-518] Saving after editing a section will return you to that  section.
+         Fixed missing commits on wiki.js. Should work now.
+        
+       * Fixed issue with Accesskey
+       
+       * [JSPWIKI-433] Allow back button for TAB keys.
+         It is now also possible to click a link to a hidden pane of a tabbed section
+         (eg from the Table Of Contents) to automatically open that TAB pane.
+
+       * Added a "title" attribute to the pagename in the header.  In case a very long 
+         pagename is truncated (with ellipsis ...) you can still see the full 
+         pagename when you hover the mouse over the pagename.
+
+
 2015-07-09  Juan Pablo Santos (juanpablo AT apache DOT org)
 
        * 2.10.2-svn-24

Modified: jspwiki/trunk/jspwiki-war/src/main/config/wro/wro-haddock.xml
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/config/wro/wro-haddock.xml?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/config/wro/wro-haddock.xml (original)
+++ jspwiki/trunk/jspwiki-war/src/main/config/wro/wro-haddock.xml Sat Jul 11 20:47:04 2015
@@ -106,7 +106,7 @@
   </group>
 
   <group name="haddock-prefs">
-    <js>/scripts/wiki/prefs.js</js>
+    <js>/scripts/wiki/Prefs.js</js>
     <!--<js>/scripts/wiki/group.js</js>-->
   </group>
 

Modified: jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java (original)
+++ jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java Sat Jul 11 20:47:04 2015
@@ -72,7 +72,7 @@ public final class Release {
      *  <p>
      *  If the build identifier is empty, it is not added.
      */
-    public static final String     BUILD         = "24";
+    public static final String     BUILD         = "25";
 
     /**
      *  This is the generic version string you should use when printing out the version.  It is of 

Modified: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Tabs.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Tabs.js?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Tabs.js (original)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Tabs.js Sat Jul 11 20:47:04 2015
@@ -96,9 +96,9 @@ var Tab = new Class({
 
             items.push("li", [
                 "a", {
-                    id: String.uniqueID(),
-                    text: this.getName( pane ),
-                    events: { click: this.show}
+                    //id: String.uniqueID(),
+                    text: this.getName( pane )
+                    //events: { click: this.show }
                 }
             ]);
         }
@@ -107,12 +107,13 @@ var Tab = new Class({
 
             items[0] += ".active";
 
-            [this.options.nav, {}, items]
-//            [this.options.nav, {events: {"click:relay(a)": this.show}}, items]
+            [this.options.nav, {events: {"click:relay(a)": this.show}}, items]
                 .slick()
                 .inject(container, "before");
 
-            panes.addClass("tab-pane")[0].addClass("active");
+            panes.addEvent("popstate", this.popstate )
+                 .addClass("tab-pane")[0].addClass("active");
+
             container.addClass("tab-content");
 
         }
@@ -167,26 +168,33 @@ var Tab = new Class({
     /*
     Click-handler to toggle the visibilities of the tab panes.
     */
-    show: function( event ){
+    show: function( ){
 
         var active = "active",
             nav = this.getParent("ul"),
             index = nav.getElements("a").indexOf(this),
-            tabpane;
-
+            panes = nav.getNext();
 
-        nav.getChildren().removeClass(active)[index].addClass(active);
+        nav.getChildren().removeClass( active )[ index ].addClass( active );
+        panes.getChildren().removeClass( active )[ index ].addClass( active ).id.setHash();
 
-        tabpane = nav.getNext().getChildren().removeClass(active)[index].addClass( active );
+    },
 
-        if( event ){
+    /*
+    Popstate handler triggered when the #hash is changed of a tabpane
+    */
+    popstate: function( ){
 
-            event.stop();
+        var active = "active",
+            panes = this.getParent(),
+            nav = panes.getPrevious(),
+            index = this.getAllPrevious().length;
 
-        }
+        //console.log("popstate event", this.id, index );
 
+        nav.getChildren().removeClass( active )[ index ].addClass( active );
+        panes.getChildren().removeClass( active )[ index ].addClass( active );
 
     }
 
-
 });

Modified: jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Accesskey.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Accesskey.js?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Accesskey.js (original)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Accesskey.js Sat Jul 11 20:47:04 2015
@@ -44,20 +44,21 @@ Example:
 
 function Accesskey(element){
 
-    var accesskey = 'accesskey',
-        key = element.get(accesskey),
-        title = element.get('title');
+    var accesskey = "accesskey",
+        key = element.get( accesskey ).slice(0,1),
+        title = element.get( "title" );
+
+    if( key && !element.getElement( "span." + accesskey ) ){
 
-    if( key && !element.getElement('span.'+accesskey) ){
 
         element.set({
             html: element.get('html').replace(
-                RegExp( '('+key+')', 'i'),
-                "<span class='"+accesskey+"'>$1</span>"
+                RegExp( "^([^<]*)(" + key + ")", "i" ),
+                "$1<span class='" + accesskey + "'>$2</span>"
             )
         });
 
-        if(title){ element.set('title', title + ' ['+key+']'); }
+        if(title){ element.set( "title", title + " [" + key + "]" ); }
 
         //console.log("ACCESSKEY ::",key, element.get('text'), element.get('title') );
 

Modified: jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Element.Extend.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Element.Extend.js?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Element.Extend.js (original)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Element.Extend.js Sat Jul 11 20:47:04 2015
@@ -337,7 +337,10 @@ console.log(message);
 
                 if( type == "checkbox" ){   //checkbox.get-value = returns "on" on some browsers, T/F on others
 
-                    return ("input[type=checkbox]" + (self.defaultChecked?":checked":"")).slick().get("value");
+                    //console.log("pipo", self.get("value"), self.value, self.checked, self.defaultChecked);
+                    //console.log("input[type=checkbox]" + (self.defaultChecked ? ":checked" : "")).slick().get("value") );
+                    //return ("input[type=checkbox]" + (self.defaultChecked ? ":checked" : "")).slick().get("value");
+                    return self.defaultChecked;
 
                 }
 

Modified: jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/String.Extend.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/String.Extend.js?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/String.Extend.js (original)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/String.Extend.js Sat Jul 11 20:47:04 2015
@@ -118,6 +118,39 @@ String.implement({
 
     },
 
+
+    /*
+    Function: setHash
+        Set HASH without page jump
+
+	Example:
+	>	"here is a new hash".setHash();
+    */
+    setHash:function( ){
+
+        if( history.pushState ){
+
+            //history.pushState( state-object, title-ffs, "#" + hash );
+            history.pushState( null, "", "#" + this);
+
+        }
+
+        else {
+
+            var el = $( this ),
+                id = el && el.id;
+
+            el && el.removeAttribute( id );
+
+            location.hash = "#" + this ;
+
+            el && el.setAttribute("id", id);
+
+        }
+
+    },
+
+
     /*
     Function: xsubs (extended Substitute)
         Equal to substitute(), but also supports anonymous arguments.

Modified: jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Textarea.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Textarea.js?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Textarea.js (original)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Textarea.js Sat Jul 11 20:47:04 2015
@@ -36,8 +36,6 @@ var Textarea = new Class({
 
     Implements: [Options, Events],
 
-    //options: { onChange:function(e){} );
-
     initialize: function(el, options){
 
         var self = this,

Modified: jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Wiki.Snips.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Wiki.Snips.js?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Wiki.Snips.js (original)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Wiki.Snips.js Sat Jul 11 20:47:04 2015
@@ -613,7 +613,7 @@ Wiki.Snips = {
             plugin: [ Dialog.Selection, {
                 caption: "Plugin",
                 body: {
-                "ALLOW permission principal ": "Page Access Rights",
+                "ALLOW permission principal ": "Page Access Rights <span class='icon-unlock-alt' />",
                 "SET name='value'":"Set a Wiki variable",
                 "$varname":"Get a Wiki variable",
                 "If name='value' page='pagename' exists='true' contains='regexp'\n\nbody\n":"IF plugin",
@@ -660,10 +660,10 @@ Wiki.Snips = {
             selectInline: [Dialog.Selection, {
                 cssClass: ".dialog-horizontal",
                 body:{
-                    "__bold__":"bold",
-                    "''italic''":"italic",
-                    "{{mono}}":"mono",
-                    "[link]":"link"
+                    "__bold__":"<b>bold</b>",
+                    "''italic''":"<i>italic</i>",
+                    "{{mono}}":"<tt>mono</tt>",
+                    "[description|{link}|options]":"<span class='icon-link'/>"
                 }
             }]
         },

Modified: jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Prefs.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Prefs.js?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Prefs.js (original)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Prefs.js Sat Jul 11 20:47:04 2015
@@ -33,38 +33,43 @@ Javascript routines to support JSPWiki U
 */
 !function(wiki){
 
-    var datapref = "[data-pref]"; //data preference elements
+    var datapref = "*[data-pref]"; //data preference elements
+
+    function getValue( el ){
+        return (el.match("[type=checkbox]")  ? el.checked : el.value );
+    }
 
     function windowUnload( onbeforeunload ){
         window.onbeforeunload = onbeforeunload || function(){};
     }
 
-    wiki.once("#setCookie", function(form){
+    wiki.add("#setCookie", function(form){
 
         windowUnload( function(){
 
-            if( form.getElements( datapref ).some(function(el){
+            if( form.getElements( datapref ).some( function(el){
 
-                //a checkbox.get("value") returns "on" when checked;
-                //so getDefaultValue() should also return "on"
-                return (el.get("value") != el.getDefaultValue());
+                return ( getValue(el) != el.getDefaultValue() );
 
             }) ){ return "prefs.areyousure".localize(); }
+
         } );
 
         form.addEvent("submit", function(){
 
             this.getElements( datapref ).each( function(el){
 
-                wiki.prefs.set( el.get( datapref ), el.get("value") );
+                //console.log( el.get( "data-pref" ), el.value, el.getDefaultValue(),getValue(el) );
+                wiki.prefs.set( el.get( "data-pref" ), getValue(el) );
 
             });
+
             windowUnload();
 
         });
     })
 
-    .once("#clearCookie", function(form){
+    .add("#clearCookie", function(form){
 
         form.addEvent("submit", function(){
 

Modified: jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Wiki.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Wiki.js?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Wiki.js (original)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Wiki.js Sat Jul 11 20:47:04 2015
@@ -164,7 +164,12 @@ var Wiki = {
 
             });
 
-        window.addEvent( "domready", wiki.domready.bind(wiki) );
+
+
+        window.addEvents({
+            popstate: wiki.popstate,
+            domready: wiki.domready.bind(wiki)
+        });
 
     },
 
@@ -192,14 +197,59 @@ var Wiki = {
             wiki.addEditLinks( wiki.toUrl( wiki.PageName, true ) );
         }
 
-        wiki.srcollTo( ( document.referrer.match( /\&section=(\d+)$/ ) || [-1])[0] );
+        //console.log( "section", document.referrer, document.referrer.match( /\&section=(\d+)$/ ) );
+        wiki.srcollTo( ( document.referrer.match( /\&section=(\d+)$/ ) || [,-1])[1] );
 
         wiki.update();  // initialize all registered behaviors
 
-        //FIXME: -- check bootstrap router concept, or History class
-        //wiki.parseHash.periodical(500);
         wiki.autofocus();
 
+        //on page-load, also read the #hash and fire popstate events
+        wiki.popstate();
+
+
+    },
+
+    /*
+    Function: popstate
+        When pressing the back-button, the "popstate" event is fired.
+
+        Behaviors (such as Tabs or Accordions) can push the ID of their
+        visible content on the window.location hash.
+        This ID can be retrieved when the back-button is pressed.
+
+        The popstate function will fire a internal 'popstate' event
+        on the target DOM element.
+
+        When clicking a link inside a hidden content (tab, accordion), the
+        popstate event is 'bubbled' up the DOM tree.
+
+    */
+    popstate: function(){
+
+        var target = $(location.hash.slice(1)),
+            events,
+            popstate = "popstate";
+
+        console.log( popstate, location.hash, target );
+
+        //only send popstate events to targets within the main page; eg not sidebar
+        if( target && target.getParent(".page") ){
+
+            while( !target.hasClass("page") ){
+
+                events = target.retrieve("events"); //mootools specific
+
+                if( events && events[ popstate ] ){
+
+                    target.fireEvent( popstate );
+
+                }
+
+                target = target.getParent();
+
+            }
+        }
     },
 
     autofocus: function(){
@@ -279,6 +329,7 @@ var Wiki = {
 
         if( element ){
             pos = element.getPosition();
+            //console.log("SCROLL TO ", element,pos );
             window.scrollTo(pos.x, pos.y);
         }
 
@@ -321,42 +372,6 @@ var Wiki = {
     },
 
     /*
-    Function: parseHash
-        Periodic validation of #hash to ensure hidden screen sections are displayed.
-        (eg tabs, accordions, ...)
-    FIXME:
-        Add handling of BACK button for tabs ??
-        Use concept of ROUTER from backbone ??
-    */
-    parseHash: function(){
-
-        var h = location.hash;
-
-        if( this.url == location.href ){ return; }
-        this.url = location.href;
-        if( !h /*|| h===""*/ ){ return; }
-        h = $( h.slice(1) );
-/*
-        //if( h.isVisible() ) return;
-        //arr=this.getParents(...);  //tabs, accordion, pills, collapsible, ...
-        while( typeOf( h ) == "element" ){
-            if( h.hasClass("hidetab") ){
-                TabbedSection.click.apply($("menu-" + h.id));
-            } else if( h.hasClass("tab") ){
-                // accordion -- need to find accordion toggle object
-                h.fireEvent("onShow");
-            } else if( !h.isVisible() ){
-                //alert("not visible"+el.id);
-                //fixme need to find the correct toggler
-                el.show(); //eg collapsedBoxes: fixme
-            }
-            h = h.getParent();
-        }
-        location = location.href; // now jump to the #hash
-*/
-    },
-
-    /*
     Function: addEditLinks
         Add to each Section title (h2/h3/h4) a quick edit link.
         FFS: should better move server side

Modified: jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/Header.jsp
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/Header.jsp?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/Header.jsp (original)
+++ jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/Header.jsp Sat Jul 11 20:47:04 2015
@@ -50,7 +50,7 @@
 
   </div>
 
-  <div class="pagename">
+  <div class="pagename" title="<wiki:PageName />">
     <wiki:CheckRequestContext context='view'><wiki:PageName /></wiki:CheckRequestContext>
     <wiki:CheckRequestContext context='!view'><wiki:Link><wiki:PageName/></wiki:Link></wiki:CheckRequestContext>
   </div>

Modified: jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PageTab.jsp
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PageTab.jsp?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PageTab.jsp (original)
+++ jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PageTab.jsp Sat Jul 11 20:47:04 2015
@@ -112,9 +112,9 @@
 <wiki:NoSuchPage>
   <%-- FIXME: Should also note when a wrong version has been fetched. --%>
   <%-- FIXME: Should add .createpage class to the EditLink, to color red. Not possible with wiki:EditLink --%>
-  <div class="information" >
+  <div class="error" >
   <fmt:message key="common.nopage">
-    <fmt:param><wiki:EditLink><fmt:message key="common.createit"/></wiki:EditLink></fmt:param>
+    <fmt:param><a class="createpage" href="<wiki:EditLink format='url'/>"><fmt:message key="common.createit"/></a></fmt:param>
   </fmt:message>
   </div>
 </wiki:NoSuchPage>
\ No newline at end of file

Modified: jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PreferencesTab.jsp
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PreferencesTab.jsp?rev=1690406&r1=1690405&r2=1690406&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PreferencesTab.jsp (original)
+++ jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PreferencesTab.jsp Sat Jul 11 20:47:04 2015
@@ -102,7 +102,7 @@
 
   <label class="btn btn-default" for="prefSectionEditing">
     <input class="" id="prefSectionEditing" name="prefSectionEditing"  data-pref="SectionEditing"
-         type="checkbox" ${prefs.SectionEditing=='on' ? 'checked="checked"' : ''} >
+         type="checkbox" ${prefs.SectionEditing ? 'checked="checked"' : ''} >
       <fmt:message key="prefs.user.sectionediting.text"/>
   </label>