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/06/22 22:11:44 UTC
svn commit: r1686927 [1/11] - in /jspwiki/trunk: ./
jspwiki-war/src/main/config/wro/ jspwiki-war/src/main/java/org/apache/wiki/
jspwiki-war/src/main/resources/templates/
jspwiki-war/src/main/scripts/behaviors/
jspwiki-war/src/main/scripts/dialog/ jspwi...
Author: brushed
Date: Mon Jun 22 20:11:42 2015
New Revision: 1686927
URL: http://svn.apache.org/r1686927
Log:
2.10.2-svn-17 : third major HADDOCK commit, mainly stabilization fixes related for the plain editor
* [JSPWIKI-482] Wrong insert from the suggestion box
* [JSPWIKI-788] Support multiple tabbedSections in single document
Added:
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Accordion.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/AddCSS.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Collapsible.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Columns.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/CommentBox.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Element.Reflect.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Flip.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/GraphBar.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Filter.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Sort.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Zebra.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Tabs.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Viewer.Carousel.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Viewer.Slimbox.js
jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Viewer.js
jspwiki/trunk/jspwiki-war/src/main/scripts/lib/mootools-core-1.5.1.js
jspwiki/trunk/jspwiki-war/src/main/scripts/lib/mootools-more-1.5.1.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Array.Extend.HSV.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Function.Extend.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Snipe.Snips.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Undoable.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Wiki.Behaviors.js
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Accordion.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Calendar.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Category.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Collapsible.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Columns.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/CommentBox.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Dialog.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Flip.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/GraphBar.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/ImagePlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/IndexPlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/RecentChangesPlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/TOCPlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/TableX.Filter.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/TableX.Sort.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Tabs.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.Attach.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.Content.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.Diff.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.Edit.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.Nav.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.Preview.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.Search.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.SearchBox.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.Sidebar.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.UserBox.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Template.View.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Tips.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Viewer.Carousel.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Viewer.Slimbox.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/Viewer.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/WeblogPlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/build.less (with props)
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/forms.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/grid.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/pagination.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/prettify.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/print.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/tables.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/type.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/default/variables.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/fontjspwiki/fonts/
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/fontjspwiki/fonts/FontJspwiki.eot (with props)
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/fontjspwiki/fonts/FontJspwiki.svg (with props)
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/fontjspwiki/fonts/FontJspwiki.ttf (with props)
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/fontjspwiki/fonts/FontJspwiki.woff (with props)
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/images/hue-wheel.png (with props)
Removed:
jspwiki/trunk/jspwiki-war/src/main/scripts/dynamic-styles/
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Snipe.Sections.old.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/UndoRedo.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Dynamic-styles.js
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Accordion.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Calendar.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Category.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Collapsible.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Columns.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/CommentBox.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Dialog.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/GraphBar.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/ImagePlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/IndexPlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/RecentChangesPlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/TOCPlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/TableX.Filter.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/TableX.Sort.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Tabs.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.Attach.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.Content.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.Diff.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.Edit.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.Nav.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.Preview.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.Search.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.SearchBox.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.Sidebar.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Template.View.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Tips.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Viewer.Carousel.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Viewer.Slimbox.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Viewer.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/WeblogPlugin.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/Wiki.Layouts.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/forms.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/grid.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/jspwiki.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/pagination.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/prettify.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/print.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/tables.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/type.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/variables.less
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/images/circle-256.png
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/images/icon-filter.gif
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/images/icon-search.png
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/images/jspwiki-strip.gif
Modified:
jspwiki/trunk/ChangeLog
jspwiki/trunk/jspwiki-war/src/main/config/wro/wro-haddock.xml
jspwiki/trunk/jspwiki-war/src/main/config/wro/wro.properties
jspwiki/trunk/jspwiki-war/src/main/java/org/apache/wiki/Release.java
jspwiki/trunk/jspwiki-war/src/main/resources/templates/default.properties
jspwiki/trunk/jspwiki-war/src/main/scripts/dialog/Dialog.Buttons.js
jspwiki/trunk/jspwiki-war/src/main/scripts/dialog/Dialog.Chars.js
jspwiki/trunk/jspwiki-war/src/main/scripts/dialog/Dialog.Color.js
jspwiki/trunk/jspwiki-war/src/main/scripts/dialog/Dialog.Find.js
jspwiki/trunk/jspwiki-war/src/main/scripts/dialog/Dialog.Font.js
jspwiki/trunk/jspwiki-war/src/main/scripts/dialog/Dialog.Selection.js
jspwiki/trunk/jspwiki-war/src/main/scripts/dialog/Dialog.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Accesskey.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Array.Extend.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Array.NaturalSort.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Behavior.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Color.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Date.Extend.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Element.Extend.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Form.File.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Form.MultipleFile.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/HighlightQuery.js
jspwiki/trunk/jspwiki-war/src/main/scripts/moo-extend/Request.File.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/moo-extend/Tips.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Snipe.Commands.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Snipe.Sections.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Snipe.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Wiki.Edit.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki-edit/Wiki.Snips.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Category.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Findpages.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Group.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Prefs.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Recents.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Search.js
jspwiki/trunk/jspwiki-war/src/main/scripts/wiki/Wiki.js
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/fontjspwiki/core.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/fontjspwiki/font-jspwiki.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/fontjspwiki/icons.less
jspwiki/trunk/jspwiki-war/src/main/styles/haddock/fontjspwiki/path.less
jspwiki/trunk/jspwiki-war/src/main/webapp/Install.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/Search.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/WEB-INF/web.xml
jspwiki/trunk/jspwiki-war/src/main/webapp/error/Forbidden.html
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/default/AJAXSearch.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/default/FindContent.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/default/admin/UserManagement.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/default/skins/CleanBlue/skin.js
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/default/skins/Smart/skin.css
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/AttachmentTab.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/CommentContent.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/EditGroupContent.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/EditTemplate.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/FindContent.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/Footer.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/GroupContent.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/GroupTab.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/Header.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/InfoContent.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/LoginContent.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/Nav.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PageContent.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PageInfo.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PageTab.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/PreferencesTab.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/ProfileTab.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/SearchBox.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/Sidebar.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/UploadTemplate.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/UserBox.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/ViewTemplate.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/admin/UserManagement.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/commonheader.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/haddock/editors/plain.jsp
jspwiki/trunk/jspwiki-war/src/main/webapp/templates/reader/ViewTemplate.jsp
jspwiki/trunk/pom.xml
Modified: jspwiki/trunk/ChangeLog
URL: http://svn.apache.org/viewvc/jspwiki/trunk/ChangeLog?rev=1686927&r1=1686926&r2=1686927&view=diff
==============================================================================
--- jspwiki/trunk/ChangeLog (original)
+++ jspwiki/trunk/ChangeLog Mon Jun 22 20:11:42 2015
@@ -1,3 +1,43 @@
+2015-06-22 Dirk Frederickx (brushed AT apache DOT org)
+
+ * 2.10.2-svn-17
+
+ This is the third major check-in of the HADDOCK template, with mainly
+ stabilization fixes related for the plain editor, and many UI improvements.
+ The HADDOCK template is close to completion - go ahead and play with it.
+ (group related JSPs still to be done)
+
+ Summary of main changes:
+
+ * Many Suggestion dialogs are added to the plain editor:
+ links, link-options, images, acls, plugins, variables, %%styles,
+ hexadecimal colors, fonts, symbols, %%icons, ...
+ You can create new suggestion dialogs via json snippets in Wiki.Snips.js
+
+ * Fixed [JSPWIKI-482] Wrong insert from the suggestion box
+
+ * The editor toolbar is simplified, as most functions are reachable via the
+ suggestion dialogs. The find & replace UI can be repositioned on the screen.
+
+ * Sticky menu bar, which stays on top of the screen when scrolling down.
+
+ * The Quick Navigation menu is redesigned to improve usability for creating
+ and cloning new pages.
+ [JSPWIKI-531] usability: hints on or mechanism for creating a page
+
+ * New %%styles added: %%dropcaps, %%flip, %%flop, %%addcss, %%progress,
+ %%scrollable-250 (limit the height of a code-block, so it becomes scrollable )
+
+ * Show READER view (also great for printing) has been added to the More menu.
+
+ * [JSPWIKI-788] TabbedSection - support multiple tabbedSections in single
+ document with same tab-identifiers
+
+ * Updated to the latest mootools v1.5.1
+ * Updated to wro4j 1.7.8
+
+ * Some additional i18n properties added -- but translation still to be done.
+
2015-05-31 Harry Metske (metskem@apache.org)
* 2.10.2-svn-16
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=1686927&r1=1686926&r2=1686927&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 Mon Jun 22 20:11:42 2015
@@ -23,8 +23,8 @@
<!-- HADDOCK Template groups -->
<group name="lib" abstract="true">
- <js>/scripts/lib/mootools-core-1.4.5.js</js>
- <js>/scripts/lib/mootools-more-1.4.0.1.js</js>
+ <js>/scripts/lib/mootools-core-1.5.1.js</js>
+ <js>/scripts/lib/mootools-more-1.5.1.js</js>
<js>/scripts/lib/prettify4mar13.js</js>
</group>
@@ -45,43 +45,47 @@
<js>/scripts/moo-extend/Form.File.js</js>
</group>
- <group name="dynamic-styles" abstract="true">
- <js>/scripts/dynamic-styles/Collapsible.js</js>
- <js>/scripts/dynamic-styles/CommentBox.js</js>
- <js>/scripts/dynamic-styles/Columns.js</js>
- <js>/scripts/dynamic-styles/GraphBar.js</js>
- <js>/scripts/dynamic-styles/Element.Reflect.js</js>
- <js>/scripts/dynamic-styles/TableX.js</js>
- <js>/scripts/dynamic-styles/TableX.Sort.js</js>
- <js>/scripts/dynamic-styles/TableX.Filter.js</js>
- <js>/scripts/dynamic-styles/TableX.Zebra.js</js>
- <js>/scripts/dynamic-styles/Tabs.js</js>
- <js>/scripts/dynamic-styles/Accordion.js</js>
- <js>/scripts/dynamic-styles/Viewer.js</js>
- <js>/scripts/dynamic-styles/Viewer.Slimbox.js</js>
- <js>/scripts/dynamic-styles/Viewer.Carousel.js</js>
+ <group name="behaviors" abstract="true">
+ <js>/scripts/behaviors/AddCSS.js</js>
+ <js>/scripts/behaviors/Collapsible.js</js>
+ <js>/scripts/behaviors/CommentBox.js</js>
+ <js>/scripts/behaviors/Columns.js</js>
+ <js>/scripts/behaviors/GraphBar.js</js>
+ <js>/scripts/behaviors/Element.Reflect.js</js>
+ <js>/scripts/behaviors/Flip.js</js>
+ <js>/scripts/behaviors/TableX.js</js>
+ <js>/scripts/behaviors/TableX.Sort.js</js>
+ <js>/scripts/behaviors/TableX.Filter.js</js>
+ <js>/scripts/behaviors/TableX.Zebra.js</js>
+ <js>/scripts/behaviors/Tabs.js</js>
+ <js>/scripts/behaviors/Accordion.js</js>
+ <js>/scripts/behaviors/Viewer.js</js>
+ <js>/scripts/behaviors/Viewer.Slimbox.js</js>
+ <js>/scripts/behaviors/Viewer.Carousel.js</js>
</group>
<group name="haddock">
<group-ref>lib</group-ref>
<group-ref>mooextend</group-ref>
- <group-ref>dynamic-styles</group-ref>
+ <group-ref>behaviors</group-ref>
<js>/scripts/wiki/Wiki.js</js>
<js>/scripts/wiki/Search.js</js>
<js>/scripts/wiki/Recents.js</js>
<js>/scripts/wiki/FindPages.js</js>
<js>/scripts/wiki/Category.js</js>
- <js>/scripts/wiki/Dynamic-styles.js</js>
+ <js>/scripts/wiki/Wiki.Behaviors.js</js>
- <css>/styles/haddock/jspwiki.less</css>
+ <css>/styles/haddock/default/build.less</css>
</group>
<group name="haddock-edit">
<js>/scripts/moo-extend/Date.Extend.js</js>
+ <js>/scripts/moo-extend/Function.Extend.js</js>
<js>/scripts/moo-extend/Array.Extend.HSV.js</js>
+
<js>/scripts/dialog/Dialog.js</js>
<js>/scripts/dialog/Dialog.Buttons.js</js>
<js>/scripts/dialog/Dialog.Color.js</js>
@@ -91,8 +95,9 @@
<js>/scripts/dialog/Dialog.Find.js</js>
<js>/scripts/moo-extend/Textarea.js</js>
- <js>/scripts/wiki-edit/UndoRedo.js</js>
+ <js>/scripts/wiki-edit/Undoable.js</js>
<js>/scripts/wiki-edit/Snipe.js</js>
+ <js>/scripts/wiki-edit/Snipe.Snips.js</js>
<js>/scripts/wiki-edit/Snipe.Commands.js</js>
<js>/scripts/wiki-edit/Snipe.Sections.js</js>
<js>/scripts/wiki-edit/Wiki.Snips.js</js>
Modified: jspwiki/trunk/jspwiki-war/src/main/config/wro/wro.properties
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/config/wro/wro.properties?rev=1686927&r1=1686926&r2=1686927&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/config/wro/wro.properties (original)
+++ jspwiki/trunk/jspwiki-war/src/main/config/wro/wro.properties Mon Jun 22 20:11:42 2015
@@ -15,6 +15,11 @@
# specific language governing permissions and limitations
# under the License.
+#minimizeEnabled=false
+debug=true
+
+
+#preProcessors=cssUrlRewriting,cssImport,semicolonAppender
preProcessors=cssImport,semicolonAppender
postProcessors=lessCss,yuiCssMin,uglifyJs
-#postProcessors=lessCss,yuiCssMin
\ No newline at end of file
+#postProcessors=less4j.less,cssCompressor,uglifyJs
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=1686927&r1=1686926&r2=1686927&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 Mon Jun 22 20:11:42 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 = "16";
+ public static final String BUILD = "17";
/**
* This is the generic version string you should use when printing out the version. It is of
Modified: jspwiki/trunk/jspwiki-war/src/main/resources/templates/default.properties
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/resources/templates/default.properties?rev=1686927&r1=1686926&r2=1686927&view=diff
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/resources/templates/default.properties (original)
+++ jspwiki/trunk/jspwiki-war/src/main/resources/templates/default.properties Mon Jun 22 20:11:42 2015
@@ -38,6 +38,8 @@ attach.bytes=bytes
attach.add.selectfile=Select file:
attach.add.changenote=Change Note:
attach.add.submit=Upload
+attach.add.select=Select files or drop them here
+attach.add.drop=or drop them here
attach.preview=Image preview
attach.deleteconfirm=Please confirm that you want to delete this attachment permanently!
attach.delete=Delete
@@ -318,6 +320,7 @@ actions.login=Log in
actions.login.title=Log in or Register as new user
actions.logout=Log out
actions.logout.title=Log out
+actions.confirmlogout=Please confirm that you want to logout!
actions.publishedon=This particular version was published on {0} by {1}.
actions.notcreated=Page not created yet.
actions.workflow=Workflow
@@ -326,6 +329,7 @@ actions.systeminfo=JSPWiki System Info
actions.systeminfo.title=Show JSPWiki System settings & info
actions.rawpage=View Page Source
actions.rawpage.title=View Page Source
+actions.showreaderview=Show Reader View
# PageContent.jsp
@@ -349,8 +353,9 @@ prefs.cookies=Your choices will be saved
prefs.user.skin=Skin
prefs.user.orientation=Favorites style
-prefs.user.orientation.left=Left
-prefs.user.orientation.right=Right
+prefs.user.orientation.left=Sidebar / Content
+prefs.user.orientation.right=Content / Sidebar
+prefs.user.orientation.hidden=No Sidebar
prefs.user.layout=Page Layout
prefs.user.layout.fluid=Fluid
prefs.user.layout.fixed=Fixed Width
@@ -466,7 +471,8 @@ preview.tab=Preview
preview.info=This is a <strong>preview</strong>\! Hit &\#8220;Keep Editing&\#8221; to go back to the editor, or hit &\#8220;Save&\#8221; if you&\#8217;re happy with what you see.
# SearchBox.jsp
-sbox.search.submit=Quick Navigation
+sbox.search.submit=To search, type ahead
+sbox.search.fullsearch=For full search, hit enter...
sbox.view=view
sbox.view.title=View the selected page
sbox.edit=edit
@@ -500,7 +506,7 @@ view.title.view={0}: {1}
editor.plain.name=Your <span class='accesskey'>n</span>ame
editor.plain.remember=Remember me?
-editor.plain.email=Homepage or e<span class='accesskey'>m</span>ail
+editor.plain.email=Homepage or email
editor.plain.save.submit=Save
editor.plain.save.title=Save [ s ]
editor.plain.preview.submit=Preview
@@ -538,7 +544,7 @@ editor.plain.livepreview=Live Preview
editor.plain.sneakpreview=Sneak Preview
editor.plain.sneakpreview.title=Sneak Preview. \
Click outside the textarea to refresh the sneak preview area.
-
+editor.plain.sidebysidepreview=Side by Side Preview
editor.plain.edit.resize=Drag to resize the text and preview area
editor.plain.tbLink.title=link - Insert wiki link
@@ -583,6 +589,9 @@ blog.addcomments=Add new comments
#
# The Javascript stuff
#
+javascript.sbox.clearrecent=Clear Recent Searches
+javascript.sbox.clone =Clone this page
+javascript.sbox.create =Create {0}
javascript.sbox.clone.suffix=-New
javascript.edit.allsections=( All )
@@ -606,12 +615,13 @@ javascript.sort.click=Click to sort
javascript.sort.ascending=Ascending order. Click to reverse sort order
javascript.sort.descending=Descending order. Click to reverse sort order
javascript.filter.all=( All )
-javascript.filter.hint=Enter filter pattern
+javascript.filter.hint=Enter filter pattern (esc to clear)
javascript.group.validName=Please provide a valid name for the new Group
javascript.category.title=Click to show category [{0}] ...
+javascript.slimbox.caption=Go to {0}
javascript.slimbox.info=Image {0} of {1}
javascript.slimbox.error=<h2>Error</h2>There was a problem with your request.<br />Please try again
javascript.slimbox.directLink=Direct Link to the target
@@ -621,7 +631,7 @@ javascript.slimbox.next=Next»
javascript.slimbox.close=Close ×
javascript.slimbox.close.title=Close [Esc]
javascript.slimbox.caption= Direct link to {0}
-javascript.slimbox.btn=Click to view {0}
+javascript.slimbox.btn=Click to view {0}
javascript.sectionediting.label=Section Overview
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Accordion.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Accordion.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Accordion.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Accordion.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,164 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Class: Accordion
+ Add accordion effects
+ - type=accordion : vertical collapsible panes, with toggle buttons on top of each pane
+ - type=tabs : vertical collapsible, with tab-like nav buttons on top
+ - type=pills : vertical collapsible panes, with pill-like nav buttons left or right
+ from the panes
+
+ The styling is based on the panel component of the bootstrap framework.
+
+DOM structure:
+(start code)
+ //before invocation
+ div.accordion
+ div.tab-FirstTab ..
+ div.tab-SecondTab ..
+
+ //accordion
+ div.panel-group.accordion : panel headings are toggles
+ div.panel.panel-default
+ div.panel-heading.actie
+ div => fx.accordion collapsible content
+ div.panel-body
+ div.panel.panel-default
+ div.panel-heading => toggle
+ div => fx.accordion collapsible content
+ div.panel-body
+
+ //tabbedAccordion : tab toggles, panels without border
+ ul.nav.nav-tabs
+ li
+ a
+ div.panel-group.tabbedAccordion
+ div.active => fx.accordion collapsible content
+ div.panel-body
+ div => fx.accordion collapsible content
+ div.panel-body
+
+ //leftAccordion : pill-toggles, panels with border
+ ul.nav.nav-pills.pull-left
+ li
+ a
+ div.panel-group.leftAccordion
+ div => fx.accordion collapsible content
+ div.panel.panel-default.panel-body
+ div => fx.accordion collapsible content
+ div.panel.panel-default.panel-body
+
+ //rightAccordion : pill-toggles, panels with border
+ ul.nav.nav-pills.pull-right
+ li
+ a
+ div.panel-group.leftAccordion
+ div => fx.accordion collapsible content
+ div.panel.panel-default.panel-body
+ div => fx.accordion collapsible content
+ div.panel.panel-default.panel-body
+
+(end)
+*/
+var Accordion = new Class({
+
+ Implements: Options,
+ Extends: Tab,
+
+ options: {
+ //type: "accordion" //accordion,tabs,pills
+ //closed: boolean -- initial status of the accordion
+ //position: "pull-left" or "pull-right" (only relevant with "pills")
+ },
+
+ initialize: function(container, options){
+
+ var panes = this.getPanes( container ),
+ nav, pane, name, toggle, type, position,
+ i = 0,
+ active = "active",
+ toggles = [],
+ contents = [],
+ panelCSS = "panel".fetchContext(container);
+
+ this.setOptions(options);
+
+ type = this.options.type;
+ position = this.options.position;
+
+ if( position ){ position = ".nav-stacked." + position; }
+
+ nav = (type == "tabs") ? "ul.nav.nav-tabs" :
+ (type == "pills") ? "ul.nav.nav-pills" + (position || "") :
+ false;
+
+ this.options.closed = !nav && /-close/.test( container.className );
+
+ if( nav ){ nav = nav.slick().inject(container, "before"); }
+ container.addClass("panel-group");
+
+ //modify the DOM
+ while( pane = panes[i++] ){
+
+ name = this.getName(pane);
+
+ if( nav ){ //tabs or pills style accordion
+
+ nav.grab( toggle = ["li", [ "a", {text: name} ]].slick() );
+ if( type == "pills" ) { pane.addClass( panelCSS ); }
+
+ } else { //standard accordion
+
+ toggle = "div.panel-heading".slick({ text: name });
+ "div".slick({"class": panelCSS}).wraps( pane ).grab( toggle, "top" );
+
+ }
+
+ toggles.push( toggle );
+ contents.push( "div".slick().wraps( pane.addClass("panel-body") ) );
+
+ }
+
+ //invoke the Accordion animation
+ new Fx.Accordion( toggles, contents, {
+
+ //height: true,
+ display: this.options.closed ? -1 : 0, // initial display status
+ alwaysHide: !nav, //allow closing all panes
+ initialDisplayFx: false, //do not show effect on initial display
+ onComplete: function(){
+ var el = $(this.elements[this.current]);
+ if(el.offsetHeight > 0){ el.setStyle("height", "auto"); }
+ },
+ onActive: function(toggle, content){
+ toggle.addClass(active);
+ content.addClass(active);
+ },
+ onBackground: function(toggle, content){
+ toggle.removeClass(active);
+ content.removeClass(active);
+ }
+
+ });
+
+ }
+
+});
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/AddCSS.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/AddCSS.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/AddCSS.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/AddCSS.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,75 @@
+/* Behavior: Add-CSS
+ Inject any custom css into a wiki page.
+ You can either directly insert the css definitions in your page or
+ include it from another wiki page.
+
+ Carefull with CSS-injection (https://www.owasp.org/index.php/Testing_for_CSS_Injection_%28OTG-CLIENT-005%29)
+ - injection of "</style><script>...</script><style>" not possible, as all <,> are escaped by jspwiki
+ - take care of attribute selector attacks ??
+
+> %%add-css ... /%
+> %%add-css [some-remote-wiki-page] /%
+*/
+//Wiki.AddCSS function( element ){
+function AddCSS( element ){
+
+ function insertStyle ( elements ){
+
+ var css = "", item;
+
+ //collect all css to be inserted
+ while( item = elements.shift() ){ css += item.innerHTML; }
+
+ //magic to replace the inline wiki-image links to css url()
+ //xss protection: remove invalid url's; only allow url([wiki-attachement])
+ css = css.replace( /url\(\<[^i][^)]*\)/gi, "url(invalid)" ); //remove url(<a...)
+ css = css.replace( /url\([^<][^)]*\)/gi, "url(invalid)" ); //remove url(xxx)
+ css = css.replace( /url\(<img class="inline" src="([^"]+)[^>]+>\)/gi, "url($1)" );
+
+ css = css.replace( /<p>|<\/p>/gi, "" ); //jspwiki inserts <p/> for empty lines
+
+ css = "style[type=text/css]".slick({text: css});
+
+ /*
+ Sequence to insert CSS is :
+ (1) jspwiki.css (<HEAD>)
+ (2) sidebar/favorites
+ (3) in-page additional styles
+
+ Because the side-bar is located at the end of the DOM, the additional sidebar styles
+ need to be inserted at the top of the DOM, i.e. just at the top of the BODY element.
+ Other CCS is injected in the order of appearance.
+ */
+ if( element.getParent( ".sidebar" ) ){
+
+ $(document.body).grab(css, "top");
+ element.destroy();
+
+ } else {
+
+ css.replaces( element );
+
+ }
+
+ };
+
+ if( element.innerHTML.test( /^\s*<a class="wikipage" href="([^"]+)">/ ) ){
+
+ //%%add-css [some-wikipage] /%
+ //go and read the %%add-css blocks from another remote page -- how hard is that ?
+ //then filter all div.page-content div.add-css elements
+
+ new Request.HTML({
+ url: RegExp.$1,
+ filter: "div.page-content div.add-css",
+ onSuccess: insertStyle,
+ evalScripts: false
+ }).get();
+
+ } else {
+
+ insertStyle([element]);
+
+ }
+
+}
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Collapsible.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Collapsible.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Collapsible.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Collapsible.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,357 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Class: Collapsible
+
+Options:
+ options - (object, optional)
+
+ bullet - (string) css selector to create collapsible bullets, default is "b.bullet", //"b.bullet[html=•]"
+ open - (string) css class of expanded "bullet" and "target" elements
+ close - (string) css class of collapsed "bullet" and "target" elements
+ hint - (object) hint titles for the open en closed bullet, will be localized
+
+ nested - (optional) css selector of nested container elements, example "li",
+ target - (optional) css selector of the target element which will expand/collapse, eg "ul,ol"
+ The target is a descendent of the main element, default target is the main element itself.
+
+ collapsed - (optional) css selector to match element which should be collapsed at initialization (eg "ol")
+ The initial state will be overruled by the Cookie.Flags, if any.
+ cookie - (optional) Cookie.Flags instance, persistent store of the collapsible state of the targets
+
+ fx - (optional, default = "height") Fx animation parameter - the css style to be animated
+ fxy - (optional, default = "y") Fx animation parameter
+ fxReset - (optional, default = "auto") Fx animation parameter - end value of Fx animated style.
+ At the end of the animation, "fx" is reset to this "fxReset" value. ("auto" or fixed value)
+
+Depends on:
+ String.Extend: xsubs()
+ Element.Extend: ifClass()
+
+DOM structure:
+ (start code)
+ div.collapsible
+ ul
+ li
+ b.bullet.xpand|xpand[onclick="..."]
+ Toggle-text
+ ul.xpand|xpand
+ li .. collapsible content ..
+ (end)
+
+Example:
+ (start code)
+ ...
+ (end)
+*/
+!function(){
+
+var TCollapsible = this.Collapsible = new Class({
+
+ Implements: Options,
+
+ options: {
+ bullet: "b.bullet", //clickable bullet
+ hint: { open:"collapse", close:"expand" },
+ open: "xpand",
+ close: "clpse",
+
+ //cookie: null, //Cookie.Flags - persist the state of the targets
+ //target: "ul,ol", //the elements which will expand/collapse
+ //nested: "li", //(optional) css selector of nested container elements
+ //collapsed: "ol", //css selector to check if default state is collapsed
+
+ fx: "height", //style attribute to animate on collapse
+ fxy: "y", //scroll direction to animate on collapse,
+ fxReset: "auto" //end value after animation is complete on expanded element: "auto" or fixed width
+ },
+
+ initialize: function(element, options){
+
+ var self = this;
+
+ self.element = element = document.getElement(element);
+ //note: setOptions() makes a copy of all objects, so first copy the cookie!
+ self.cookie = options && options.cookie;
+ options = self.setOptions(options).options;
+
+ if( options.nested ){
+
+ element.getElements( options.nested ).each( self.build, self );
+
+ } else {
+
+ self.build( element );
+
+ }
+
+ element.addEvent(
+ //EG: "click:relay(b.bullet.xpand,b.bullet.clpse)"
+ "click:relay({0}.{1},{0}.{2})".xsubs(options.bullet,options.open,options.close),
+ function(event){ event.stop(); self.toggle(this); }
+ );
+
+ },
+
+ build: function( element ){
+
+ var self = this,
+ options = self.options,
+ bullet = options.bullet,
+ target;
+
+ if( !self.skip(element) ){
+
+ bullet = element.getElement(bullet) || bullet.slick().inject(element,"top");
+ target = element.getElement(options.target);
+
+ if( target && (target.get("text").trim()!="") ){
+
+ //console.log("FX tween",bullet,target,self.initState(element,target));
+ if( options.fx ){
+ target.set("tween",{
+ property: options.fx,
+ onComplete: function(){ self.fxReset( this.element ); }
+ });
+ }
+
+ self.update(bullet, target, self.initState(element,target), true);
+ }
+ }
+ },
+
+ //dummy skip function, can be overwritten by descendent classes
+ skip: function( /*element*/ ){
+ return false;
+ },
+
+ //function initState: returns true:expanded; false:collapsed
+ //cookies always overwrite the initial state
+ initState:function( element, target ){
+
+ var cookie = this.cookie,
+ isCollapsed = this.options.collapsed;
+
+ isCollapsed = !(isCollapsed && target.match(isCollapsed) );
+
+ return cookie ? cookie.get(target, isCollapsed) : isCollapsed;
+ },
+
+ //function getState: returns true:expanded, false:collapsed
+ getState: function( target ){
+
+ return target.hasClass(this.options.open);
+
+ },
+
+ toggle: function(bullet){
+
+ var self = this,
+ cookie = self.cookie,
+ options = self.options,
+ nested = options.nested,
+ element = nested ? bullet.getParent(nested) : self.element,
+ target, state;
+
+ if( element ){
+ target = element.getElement(options.target);
+
+ if( target ){
+ state = !self.getState(target);
+ self.update( bullet, target, state );
+ if( cookie ){ cookie.write(target, state); }
+ }
+ }
+ },
+
+ update: function( bullet, target, expand, force ){
+
+ var options = this.options, open=options.open, close=options.close;
+
+ if( bullet ){
+
+ bullet.ifClass(expand, open, close)
+ .set( "title", options.hint[expand ? "open" : "close"].localize() );
+
+ }
+ if( target ){
+
+ this.animate( target.ifClass(expand, open, close), expand, force );
+
+ }
+
+ },
+
+ animate: function( element, expand, force ){
+
+ var fx = element.get("tween"),
+ fxReset = this.options.fxReset,
+ max = (fxReset!="auto") ? fxReset : element.getScrollSize()[this.options.fxy];
+
+ if( this.options.fx ){
+
+ if( force ){
+ fx.set( expand ? fxReset : 0);
+ } else {
+ fx.start( expand ? max : [max,0] );
+ }
+
+ }
+
+ },
+
+ fxReset: function(element){
+
+ var options = this.options;
+
+ if( options.fx && this.getState(element) ){
+
+ element.setStyle(options.fx, options.fxReset);
+
+ }
+
+ }
+
+});
+
+
+/*
+Class: Collapsible.List
+ Converts ul/ol lists into collapsible trees.
+ Converts every nested ul/ol into a collasible item.
+ By default, OL elements are collapsed.
+
+DOM Structure:
+ (start code)
+ div.collapsible
+ ul
+ li
+ b.bullet.xpand|xpand[onclick="..."]
+ Toggle-text
+ ul.xpand|xpand
+ li ... collapsible content ...
+ (end)
+*/
+TCollapsible/*this.Collapsible*/.List = new Class({
+
+ Extends:TCollapsible,
+
+ initialize: function(element,options){
+
+ this.parent( element, Object.merge({
+ target: "> ul, > ol",
+ nested: "li",
+ collapsed:"ol"
+ },options));
+
+ },
+
+ // SKIP empty LI elements (so, do not insert collapse-bullets)
+ // LI element is not-empty when is has
+ // - a child-node different from ul/ol
+ // - a non-empty #text-nodes
+ // Otherwise, it is considered
+ skip: function(element){
+
+ var n = element.firstChild,isTextNode, re=/ul|ol/i;
+
+ while( n ){
+
+ isTextNode = (n.nodeType==3);
+
+ if( ( !isTextNode && ( !re.test(n.tagName) ) )
+ || ( isTextNode && ( n.nodeValue.trim()!="") ) ){
+
+ return false;
+ }
+ n=n.nextSibling;
+ }
+
+ return true; //skip this element
+
+ }
+
+});
+
+/*
+Class: Collapsible.Box
+ Makes a collapsible box.
+ - the first element becomes the visible title, which gets a bullet inserted
+ - all other child elements are wrapped into a collapsible element
+
+Options:
+
+
+DOM Structure:
+ (start code)
+ div.collapsebox.panel.panel-default
+ div.panel-heading
+ b.bullet.xpand|clpse[onclick="..."]
+ h4.panel-title title
+ div.panel-body.xpand|clpse
+ .. collapsible content ..
+ (end)
+
+*/
+TCollapsible/*this.Collapsible*/.Box = new Class({
+
+ Extends:TCollapsible,
+
+ initialize:function(element,options){
+
+ //FFS: how to protect against empty boxes..
+ //if( element.getChildren().length >= 2 ){ //we don"t do empty boxes
+
+ options.collapsed = options.collapsed ? "div":""; // T/F converted to matching css selector
+ options.target = options.target || "!^"; //or "> :last-child" or "> .panel-body"
+
+ this.parent( element, options );
+ //}
+ },
+
+ build: function( element ){
+
+ var options = this.options, heading, body, next
+ panelCSS = "panel".fetchContext(element);
+
+ //we don"t do double invocations
+ if( !element.getElement( options.bullet ) ){
+
+ //build bootstrap panel layout
+ element.className += " "+panelCSS;
+
+ heading = ["div.panel-heading",[options.bullet]].slick().wraps(
+ element.getFirst().addClass("panel-title")
+ );
+
+ body = "div.panel-body".slick();
+ while(next = heading.nextSibling) body.appendChild( next );
+
+ //if( body.get("text").trim()!="" ) this-is-and-empty-box !!
+
+ this.parent( element.grab( "div".slick().grab(body) ) );
+
+ }
+ }
+
+});
+
+}();
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Columns.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Columns.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Columns.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Columns.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,72 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Script: Columns
+ Format the page content side by side, in columns, like in a newspaper.
+ HR elements (in wiki {{----}} markup) separate the columns.
+ Column widths are equal and automatically calculated.
+ Optionally, you can specify the width in pixel(px) for the columns.
+
+ FFS: use HTML5/CSS3 columns options if available
+
+Arguments:
+ width - (optional) column width in pixel(px)
+
+Example:
+(start code)
+ %%columms-300
+ column-text1 ...
+ ----
+ column-text1 ...
+ /%
+(end)
+
+DOM Structure
+(start code)
+ div-columns
+ div.col[styles={width:xx%}]
+ div.col[styles={width:xx%}]
+(end)
+*/
+function Columns(element, options){
+
+ var args = options.prefix.sliceArgs(element),
+ divider = "hr",
+ columnCount = element.getChildren(divider).length,
+ width;
+
+ if( columnCount /*>0*/ ){
+
+ columnCount++;
+ width = ( args[0] ) ? args[0] / columnCount + "px" : 100 / columnCount + "%";
+
+ element
+ .addClass("columns")
+ .grab(divider.slick(), "top") //add one extra group-start-element at the top
+
+ .groupChildren(divider, "div.col", function(column){
+
+ column.setStyle("width", width);
+
+ });
+ }
+
+}
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/CommentBox.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/CommentBox.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/CommentBox.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/CommentBox.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,66 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Dynamic style: %%commentbox
+
+Example:
+> %%commentbox ... /% : floating box to the right
+> %%commentbox-Caption .... /% : commentbox with caption
+
+DOM structure
+(start code)
+ div.commentbox
+ h2|h3|h4 title
+ ..body..
+
+ //becomes, based on BOOTSTRAP Panels
+ div.panel.panel-default
+ div.panel-header
+ div.panel-body
+(end)
+*/
+function CommentBox(element, options){
+
+ var header = element.getFirst(),
+ caption = options.prefix.sliceArgs(element)[0],
+ panelCSS = "panel".fetchContext(element);
+
+ element.className="panel-body"; //reset className -- ie remove commentbox-...
+ "div.commentbox".slick().addClass(panelCSS).wraps(element);
+
+ if( caption ){
+
+ caption = "h4".slick({ text:caption.deCamelize() });
+
+ } else if( header && header.match("h2,h3,h4") ) {
+
+ caption = header;
+ }
+
+ if( caption ){
+
+ "div.panel-heading".slick()
+ .grab(caption.addClass("panel-title"))
+ .inject(element, "before");
+
+ }
+
+}
\ No newline at end of file
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Element.Reflect.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Element.Reflect.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Element.Reflect.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Element.Reflect.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,105 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Element: reflect
+ Extend the base Element class with a reflect and unreflect methods.
+
+Credits:
+> reflection.js for mootools v1.42
+> (c) 2006-2008 Christophe Beyls, http://www.digitalia.be
+> MIT-style license.
+*/
+Element.implement({
+
+ reflect: function(options) {
+
+ var img = this,
+ oHeight = options.height || 0.33,
+ oOpacity = options.opacity || 0.5;
+
+ if (img.match("img")){
+
+ img.unreflect();
+
+ function doReflect(){
+ var reflection, reflectionHeight = Math.floor(img.height * oHeight), wrapper, context, gradient;
+
+ if (Browser.ie) {
+ reflection = new Element("img", {src: img.src, styles: {
+ width: img.width,
+ height: img.height,
+ marginBottom: -img.height + reflectionHeight,
+ filter: "flipv progid:DXImageTransform.Microsoft.Alpha(opacity=" + (oOpacity * 100) + ",style=1,finishOpacity=0,startx=0,starty=0,finishx=0,finishy=" + (oHeight * 100) + ")"
+ }});
+ } else {
+ reflection = new Element("canvas");
+ if (!reflection.getContext){ return; }
+ try {
+ context = reflection.setProperties({width: img.width, height: reflectionHeight}).getContext("2d");
+ context.save();
+ context.translate(0, img.height-1);
+ context.scale(1, -1);
+ context.drawImage(img, 0, 0, img.width, img.height);
+ context.restore();
+ context.globalCompositeOperation = "destination-out";
+
+ gradient = context.createLinearGradient(0, 0, 0, reflectionHeight);
+ gradient.addColorStop(0, "rgba(255,255,255," + (1 - oOpacity) + ")");
+ gradient.addColorStop(1, "rgba(255,255,255,1.0)");
+ context.fillStyle = gradient;
+ context.rect(0, 0, img.width, reflectionHeight);
+ context.fill();
+ } catch (e) {
+ return;
+ }
+ }
+ reflection.setStyles({display: "block", border: 0});
+
+ wrapper = new Element(img.getParent().match("a") ? "span" : "div").inject(img, "after").adopt(img, reflection);
+
+ wrapper.className = img.className;
+ img.store("reflected", wrapper.style.cssText = img.style.cssText);
+ wrapper.setStyles({width: img.width, height: img.height + reflectionHeight, overflow: "hidden"});
+ img.style.cssText = "display:block;border:0";
+ img.className = "reflected";
+ }
+
+ if(img.complete){ doReflect(); } else { img.onload = doReflect; }
+ }
+
+ return img;
+ },
+
+ unreflect: function() {
+ var img = this, reflected = this.retrieve("reflected"), wrapper;
+ img.onload = function(){};
+
+ if (reflected !== null) {
+ wrapper = img.parentNode;
+ img.className = wrapper.className;
+ img.style.cssText = reflected;
+ img.eliminate("reflected");
+ wrapper.parentNode.replaceChild(img, wrapper);
+ }
+
+ return img;
+ }
+});
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Flip.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Flip.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Flip.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Flip.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,75 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Behavior: Flip & Flop
+
+Markup
+(start code)
+%%flip-h300-w500-none-default-primary-info-warning-success-danger
+Front
+----
+Back
+/%
+(end)
+
+DOM Structure
+(start code)
+div.flip-container
+ div.flip
+ div.face
+ ..front face..
+ div.face
+ ..back face
+(end)
+*/
+function Flip(element, options){
+
+ var args = options.prefix.sliceArgs(element), arg,
+ divider = "hr",
+ css = {},
+ frontback = ["default", "default"];
+
+ //require exactly to blocks: one for front and one for back
+ if( element.getChildren(divider).length == 1 ){
+
+ while( args.length ){
+
+ arg = args.pop();
+ if( !arg.indexOf("w") /*index==0*/ ){ css.width = arg.slice(1).toInt(); }
+ else if( !arg.indexOf("h") /*index==0*/ ){ css.height = arg.slice(1).toInt(); }
+ else if( arg.test(/none|default|success|info|warning|danger/ )){ frontback.push(arg); }
+
+ }
+
+ "div.flip-container".slick({ styles: css}).wraps(element);
+
+ element
+ .addClass(options.prefix)
+ .grab( divider.slick(), "top") //add one extra group-start-element at the top
+ .groupChildren( divider, "div.face", function(face){
+ var clazz;
+ if( frontback.length ){
+ clazz = frontback.pop();
+ face.ifClass( clazz != "none", clazz );
+ }
+
+ });
+
+ }
+
+}
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/GraphBar.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/GraphBar.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/GraphBar.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/GraphBar.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,255 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Class: GraphBar
+ Generate horizontal or vertical bars, without using images.
+ Support any color, gradient bars, progress and gauge bars.
+ The length of the bars can be based on numbers or dates.
+ Allow to specify maximum and minimum values.
+
+> %%graphBars
+> %%gbBar 25 /%
+> /%
+
+ Graphbar parameters can be passed in the js class constructor (options)
+ or as css class parameters.
+
+> %%graphBars-min50-max3000-progress-lime-0f0f0f
+> %%gbBar 25 /%
+> /%
+
+ Other examples of wiki-markup:
+> %%graphBars-e0e0e0 ... %% use color #e0e0e0, default size 120
+> %%graphBars-blue-red ... %% blend colors from blue to red
+> %%graphBars-red-40 ... %% use color red, maxsize 40 chars
+> %%graphBars-vertical ... %% vertical bars
+> %%graphBars-progress ... %% progress bars in 2 colors
+> %%graphBars-gauge ... %% gauge bars in gradient colors
+
+Options:
+ gbBar - CSS classname of the bar value elements (default = gbBar)
+ gbBarContainer - CSS classname of parent element (default = graphBars)
+ lowerbound - lowerbound of bar values (default:20px)
+ upperbound - upperbound of bar values (default:320px)
+ vwidth - vertical bar width in px(default:20px)
+ isHorizontal - horizontal or vertical bars (default:true)
+ isProgress - progress bar show 2 bars, always summing up to 100%
+ isGauge - gauge bars have colour gradient related to the size/value of the bar
+
+
+DOM-structure:
+(start code)
+ // original DOM-structure
+ div.graphBar-(options)
+ span.gbBar 100
+
+ //becomes, based on BOOTSTRAP
+ //horizontal bar
+ span.gb-group(.striped.active)[width:125px]
+ span.gb-bar[style="background:blue;width:40%"]
+ span.gBar 100
+
+ //vertical bar
+ span.gb-group(.striped.active)(.vertical)[heigh:125px]
+ span.gb-bar[style="background:blue;height:100%;width:100%"]
+ span.gBar 100
+
+ //progress bar
+ span.gb-group[width:125px]
+ span.gb-bar[style="background:blue;width:40%"]
+ span.gb-bar[style="background:red;width:60%"]
+ span.gbBar 100
+(end)
+
+Examples:
+> new GraphBar( dom-element, { options });
+
+*/
+
+var GraphBar = new Class({
+
+ Implements: Options,
+
+ options: {
+ container: "graphBars", //classname of container
+ gBar: "gBar", //classname of value tags
+
+ gbGroup: "span.gb-group",
+ gbBar: "span.gb-bar",
+
+ offset: 40, //(px) smallest bar = offset
+ size: 400, //(px) tallest bar = offset+size
+
+ isHorizontal: true,
+ isProgress: false,
+ isGauge: false
+ },
+
+ initialize: function(el, options){
+
+
+ var self = this,
+ args = el.className,
+ bars, data, i, len, table, clazz;
+
+ self.setOptions(options);
+
+ clazz = this.options.container;
+
+ if( args.indexOf(clazz) == 0 ){
+
+ options = self.getArguments( args.slice(clazz.length) );
+ bars = el.getElements("." + options.gBar + options.barName);
+
+ if( !bars[0] && ( table = el.getElement("table") )){
+
+ bars = new TableX( table ).filter(options.barName);
+
+ }
+
+ if( bars && bars[0] ){
+
+ data = bars.toNatural().scale(options.minv, options.maxv);
+
+ for( i = 0, len = bars.length; i < len; i++){
+
+ self.render( bars[i], data[i], (i + 1) / len );
+
+ }
+
+ }
+ }
+ },
+
+ getArguments: function( args ){
+
+ var options = this.options,
+ p, min, max, size;
+
+ args = args.split("-");
+ options.barName = args.shift(); //first param is optional barName
+ min = options.offset;
+ max = min + options.size;
+
+ while( args.length ){
+
+ p = args.shift().toLowerCase();
+
+ if( p == "vertical" ){ options.isHorizontal = false; }
+ else if( p == "gauge" ){ options.isGauge = true; }
+ else if( p == "progress" ){ options.isProgress = true; }
+ else if( p == "inside" ){ options.textInside = true; }
+
+ else if( p == "striped" ){ options.gbGroup += "." + p; }
+ else if( p == "active" ){ options.gbGroup += ".striped." + p; }
+ else if( p.test(/success|info|warning|danger/ )){ options.gbBar += ".progress-bar-" + p; }
+
+ else if( !p.indexOf("minv") /*index==0*/){ options.minv = p.slice(4).toInt(); }
+ else if( !p.indexOf("maxv") /*index==0*/){ options.maxv = p.slice(4).toInt(); }
+
+ else if( !p.indexOf("min") /*index==0*/){ min = p.slice(3).toInt(); }
+ else if( !p.indexOf("max") /*index==0*/){ max = p.slice(3).toInt(); }
+ else if( p != "" ){
+
+ p = new Color(p);
+ if( p.hex ){
+ if( !options.color1 ){ options.color1 = p; }
+ else if( !options.color2 ){ options.color2 = p; }
+ }
+
+ }
+ }
+
+ size = max - min;
+ options.offset = (size > 0) ? min : max;
+ options.size = size.abs();
+
+ return options;
+ },
+
+
+ /*
+ Function: render
+ Render a graphBar and add it before or inside the element.
+
+ Arguments:
+ el - element
+ val - converted value in range 0-100,
+ percent - position of the graphBar in the group, converted to a %
+
+ DOM Structure of a graphbar
+ (start code)
+ span.graphBar-Group[style="width=..px"]
+ span.graphBar[style="width=..%,background-color=.."]
+ span.graphBar[style="width=..%,background-color=.."] //only for progress bars
+ (end)
+ */
+ render: function(el, val, percent){
+
+ var options = this.options,
+ size = options.size,
+ offset = options.offset,
+ color1 = options.color1,
+ color2 = options.color2,
+ inside = options.textInside,
+ isGauge = options.isGauge,
+ isProgress = options.isProgress,
+ //isHorizontal = options.isHorizontal,
+ dom, css;
+
+
+ //color invertor
+ if( isGauge && !color2 && color1 ){ color2 = color1.invert();}
+
+
+ //color mixer
+ if( !isProgress && color2 ){ color1 = color1.mix(color2, 100 * (isGauge ? val : percent)); }
+
+ val = val * 100;
+
+ //first calculate the bar sizes: group-bar, bar1, (optional) bar2
+ css = isProgress ?
+ [offset + size, val + "%", (100 - val) + "%"] :
+ [offset + val / 100 * (offset + size), "100%" ];
+
+ //then convert sizes to bar css styles
+ css = css.map( function(barsize){
+ return options.isHorizontal ? {width: barsize} : {height: barsize, width: 20, "vertical-align":"text-bottom"};
+ });
+
+ //finally, add colors to the bar1 and bar2 css styles
+ if( color1 ){ css[1].backgroundColor = color1.hex; }
+ if( isProgress && color2 ){ css[2].backgroundColor = color2.hex; }
+
+
+ //build dom template
+ dom = [options.gbGroup, { styles: css[0] }, [ options.gbBar, {
+ styles: css[1],
+ text: inside ? el.innerHTML : ""
+ } ] ];
+ if( inside ){ el.innerHTML = ""; }
+ if( isProgress && color2){ dom[2].push( options.gbBar, {styles: css[2]} ); }
+
+ dom.slick().inject(el, el.match("td") ? "top" : "before");
+
+ }
+
+});
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Filter.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Filter.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Filter.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Filter.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,129 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Class: TableX.Filter
+ Allows to filter html tables based on regexp enabled filter search box.
+ Filtering happens both on column and row basis.
+
+Credits:
+ Filters inspired by http://www.codeproject.com/jscript/filter.asp and
+ jquery.filterTable by Sunny Walker http://sunnywalker.github.io/jQuery.FilterTable/
+
+Options:
+ minSize - (number) minimum table rows to activate the filter
+ shortcut - css selector for shortcut filter-strings
+ list -(array) ist of shortcuts to quickly filter the table
+ hint - HTML5 placeholder text for the filter field
+ highlight - css class applied to cells matching the filter term
+
+*/
+TableX.Filter = new Class({
+
+ Implements: Options,
+
+ options: {
+ minSize: 5,
+ shortcut: "a.btn.btn-link[text=\"{0}\"]",
+ list: [], //["99","test"],
+ hint: "filter this table",
+ highlight: "highlight"
+ },
+
+ initialize: function(table, options){
+
+ options = this.setOptions(options).options;
+
+ var self = this,
+ items = [],
+ minRows = options.minSize,
+ filter = self.filter.bind(self);
+
+
+ self.table = table = new TableX(table, {minSize:options.minSize});
+
+ if( table && table.table){
+
+ options.list.each(function(item){
+ items.push( options.shortcut.xsubs(item), {
+ events: {click: self.shortcut.pass(item, self) }
+ });
+ });
+
+ ["div.form-inline.form-group.cage.filter-input", [
+ "input.form-control[type=search][placeholder=\"" + options.hint + "\"]", {
+ attach: [ self, "input" ],
+ events: {
+ keyup: filter, //"keyup:throttle": filter,
+ click: filter
+ }
+ },
+ "span.icon-filter"
+ ],
+ items
+ ].slick().inject(table.table, "before");
+
+ }
+ },
+
+ shortcut: function(value){
+ this.input.set("value", value).fireEvent("click").focus();
+ return false;
+ },
+
+ filter: function(){
+
+ var self = this,
+ visible = "visible",
+ highlight = self.options.highlight,
+
+ rows = self.table.rows,
+ cells = self.table.cells.removeClass(highlight),
+
+ query = self.input.value.trim(),
+ queryRE;
+
+
+ try {
+ queryRE = RegExp( query, "i"); //support regexp in filter
+ //queryRE = RegExp( query.escapeRegExp(), "i");
+ }
+ catch(e){}
+
+ if( query == "" || !queryRE ){
+
+ rows.show().addClass(visible);
+
+ } else {
+
+ rows.hide().removeClass(visible);
+
+ cells.filter( function(el){
+
+ return queryRE.test( $(el).get("text") );
+
+ }).addClass(highlight).getParent(/*tr*/).show().addClass(visible);
+
+ }
+
+ self.table.refresh();
+ }
+
+});
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Sort.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Sort.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Sort.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Sort.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,98 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Class: TableX.Sort
+ Adds ''click'' handlers to sort table columns.
+ CSS classes are added to the header depending on the sort order.
+ The data-type of each column is auto-recognized.
+
+ Todo: add progress animation while sorting
+
+Depends:
+ Array.naturalSort
+
+Credits:
+ The originial implementation was inspired by the excellent javascript created by
+ Erik Arvidsson. See http://webfx.eae.net/dhtml/sortabletable/sortabletable.html.
+ The natural-Sort was inspired by an implement of Jim Palmer e.a.
+
+*/
+TableX.Sort = new Class({
+
+ Implements: Options,
+
+ options: {
+ css: {
+ sort: "sort",
+ atoz: "up",
+ ztoa: "down"
+ },
+ hints: {
+ sort: "Click to sort",
+ atoz: "Ascending. Click to reverse",
+ ztoa: "Descending. Click to reverse"
+ }
+ },
+
+ initialize: function(table, options){
+
+ this.setOptions(options);
+
+ this.table = table = new TableX(table, { minSize: 3 });
+
+ if( table && table.thead ){
+
+ //table.table.rows[0].addEvent( "click:relay(th)", this.sort.bind(this) );
+ table.thead.addEvent( "click", this.sort.bind(this) );
+ this.style( table.thead, "sort" );
+
+ }
+
+ },
+
+ style: function(element, newStyle){
+
+ var options = this.options;
+ element.set({ "class": options.css[newStyle], title: options.hints[newStyle] });
+
+ },
+
+ sort: function( event ){
+
+ var table = this.table,
+ thead = table.thead,
+ rows = table.rows,
+ css = this.options.css,
+ th = event.target,
+ sortAtoZ = th.hasClass(css.atoz) ? "ztoa" : "atoz";
+
+ //this.style(th, "processing");
+ table.refresh(
+ th.hasClass( css.sort ) ?
+ rows.naturalSort( thead.indexOf(th) ) :
+ rows.reverse()
+ );
+ this.style( thead, "sort");
+ this.style( th, sortAtoZ );
+
+ }
+
+});
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Zebra.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Zebra.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Zebra.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.Zebra.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,62 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Class: TableX.Zebra
+ Simple class to add odd/even coloring to tables.
+ Default colouring via css class "".odd""
+
+ CHECKME: use BOOTSTRAP class .striped
+
+Usage:
+ > new TableX.Zebra( table-element, {colors:["eee","fff"]});
+ > new TableX.Zebra( table-element, {colors:["red"]});
+
+*/
+TableX.Zebra = function(table, options){
+
+ function stripe(){
+
+ this.rows.filter( Element.isVisible ).each( function(row, j){
+
+ j &= 1; //0,1,0,1...
+
+ if( hasColors ){
+
+ row.setStyle("background-color", colors[j] || "");
+
+ } else {
+
+ row.ifClass(j, "odd");
+
+ }
+
+ });
+ }
+
+ var colors = options.colors,
+ hasColors = colors[0] && (colors[0] != "table");
+
+ if ( hasColors ){ colors = colors.map( function(c){ return new Color(c); }); }
+
+ //console.log("ZEBRA ",options.colors, colors[0],colors[1]);
+ stripe.call( new TableX(table, { onRefresh: stripe }) );
+
+};
Added: jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.js
URL: http://svn.apache.org/viewvc/jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.js?rev=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/TableX.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,126 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Class: TableX
+ Base class, with reusable table support functions.
+ Used by TableX.Sort, TableX.Zebra, ...
+
+
+Usage:
+ > var t = new TableX(table-element);
+ Creates maximum one TableX instance per table DOM element.
+
+ > t.addEvent('onRefresh', console.log('table got refreshed.'));
+ > t.refresh(new-rows-array);
+
+*/
+var TableX = new Class({
+
+ Implements: [Options,Events],
+
+ initialize: function(table, options){
+
+ var self = table.TableX, //max one TableXtend instance per table DOM element
+ minSize = ( options||{} ).minSize||0;
+
+ if( !self ){
+
+ if( !table.match('table') ||
+ ( ( minSize>0 )&&( table.rows.length < minSize ) ) ){
+ console.log("Error TableX size: ",table," minSize:",minSize);
+ return false;
+ }
+
+ table.TableX = self = this;
+ self.table = table;
+ self.thead = $(table.rows[0]).getChildren('th');
+ self.rows = $$(Array.slice(table.rows, self.thead.length>0 ? 1 : 0));
+ self.cells = table.getElements('td'); //fixme: check for nested tables
+
+ }
+ return self && self.setOptions(options); //set additional options
+ },
+
+ /*
+ Function:refresh
+ Put array of table rows back into the table
+ */
+ refresh: function( rows ){
+
+ //console.log(rows);
+
+ if( rows ){
+
+ var frag = document.createDocumentFragment();
+ rows.each( function(r){ frag.appendChild(r); });
+ this.table.tBodies[0].appendChild(frag);
+
+ }
+
+ this.fireEvent('refresh');
+
+ },
+
+ /*
+ Function: filter
+ Fetch a row or column from a table, based on a field-name
+ * check first-row to match field-name: return array with col values
+ * check first-column to match field-name: return array with row values
+ * ?? insert SPANs as place-holder of the missing gBars
+
+ */
+ filter: function( fieldName ){
+
+ var rows = this.table.rows,
+ tlen = rows.length, col, l, r, i,
+ result = [];
+
+ if( tlen > 1 ){ // first check for COLUMN based table
+
+ r = rows[0]; //header row
+
+ for( col=0, l=r.cells.length; col<l; col++ ){
+
+ if( $(r.cells[col]).get('text').trim() == fieldName ){
+
+ //take this COLUMN
+ for( i=1; i < tlen; i++)
+ //result.push( new Element('span').wraps(table.rows[i].cells[col]) );
+ result.push( rows[i].cells[col] );
+ return result;
+ }
+ }
+ }
+
+ for( i=0; i < tlen; i++ ){ // finally, check for ROW based table
+
+ r = rows[i];
+
+ if( $(r.cells[0]).get('text').trim() == fieldName ){
+ //take this ROW
+ return Array.slice(r.cells,1);
+ }
+ }
+
+ return false;
+ }
+
+});
Added: 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=1686927&view=auto
==============================================================================
--- jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Tabs.js (added)
+++ jspwiki/trunk/jspwiki-war/src/main/scripts/behaviors/Tabs.js Mon Jun 22 20:11:42 2015
@@ -0,0 +1,176 @@
+/*
+ JSPWiki - a JSP-based WikiWiki clone.
+
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF licenses this file
+ to you under the Apache License, Version 2.0 (the
+ "License"); fyou may not use this file except in compliance
+ with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing,
+ software distributed under the License is distributed on an
+ "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the
+ specific language governing permissions and limitations
+ under the License.
+*/
+/*
+Class: TabbedSection
+ Creates tabs, based on some css-class information
+
+Wiki Markup:
+(start code)
+ //Original markup
+ %%tabbedSection
+ %%tab-FirstTab
+ ...
+ /%
+ %%tab-FirstTab
+ ...
+ /%
+ /%
+
+ //Simplified markup
+ //Every tab is defined by headers tag. (!, !!, !!!)
+ //The level of the first header element determines the header-level of all tabs.
+ %%tabs
+ !First tab title
+ ...
+ !Second tab title
+ ...
+ /%
+(end)
+
+DOM structure before:
+ (start code)
+ //original syntax
+ div.tabbedSection
+ div.tab-FirstTab
+ div.tab-SecondTab
+
+ //simplified syntax
+ div.tabs (or div.pills)
+ h1 FirstTab
+ h1 SecondTab
+ h1 ThirdTab
+ (end)
+
+DOM structure after: (based on Bootstrap conventions)
+(start code)
+ ul.nav.nav-tabs(.nav-pills)
+ li
+ a[href="#home"] FirstTab
+ li
+ a[href="#profile"] SecondTab
+ li
+ a[href="#messages"] ThirdTab
+
+ div.tab-content
+ div.tab-pane.active[id="FirstTab"] ...
+ div.tab-pane[id="SecondTab"] ...
+ div.tab-pane[id="ThirdTab"] ...
+(end)
+*/
+var Tab = new Class({
+
+ Implements: Options,
+
+ options: {
+ nav: "ul.nav.nav-tabs" //navigation section with all tab labels
+ },
+
+ initialize: function(container, options){
+
+ this.setOptions( options );
+
+ var panes = this.getPanes( container ),
+ pane,
+ i = 0,
+ items = []; //collection of li for the tab navigation section
+
+ while( pane = panes[i++] ){
+
+ items.push("li", [ "a", { text: this.getName( pane ) } ]);
+
+ }
+
+ if( items[0] ){
+
+ items[0] += ".active";
+
+ [this.options.nav, {events: {"click:relay(a)": this.show}}, items]
+ .slick()
+ .inject(container, "before");
+
+ panes.addClass("tab-pane")[0].addClass("active");
+ container.addClass("tab-content");
+
+ }
+
+ },
+
+ getName: function(pane){
+
+ var name = pane.className.slice(4).deCamelize();
+ if( !pane.id ){ pane.id = name; } //CHECKME : support #<tab-name> urls ; eg h1 id="section-Tabbed+Section-Usage"
+ return name;
+
+ },
+
+ /*
+ Function: getPanes
+ Generic function to collect the tab panes. Reused by accordions, etc.
+ 1) panes = sections enclosed by tab-container elements, the tab caption is derived from the classname
+ 2) panes = sections divided by h<n> elements;
+
+ Arguments:
+ container - container DOM element
+ isPane - (string) selector to match predefined tab container
+ */
+ getPanes: function( container ){
+
+ var isPane = "[class^=tab-]",
+ first = container.getFirst(),
+ header = first.get("tag"),
+ hasPane = first && first.match(isPane); //predefined tab-panel containers
+
+ //avoid double runs -- obsolete, covered by behavior
+ //if( first.match("> .nav.nav-tabs") ) return null;
+
+ if( (!hasPane) && ( header.test(/h1|h2|h3|h4/) ) ){ //replace header by tab-panel containers
+
+ //first remove unwanted elements from the header
+ container.getChildren(header).getElements(".hashlink,.edit-section,.labels")
+ .each(function( el ){ el.destroy(); });
+
+ //then create div.tab-<pane-title> groups
+ container.groupChildren(header, "div", function(pane, caption){
+ pane.addClass( "tab-" + caption.get("text").trim().replace(/\s+/g, "-").camelCase() );
+ pane.id = caption.id;
+ });
+
+ }
+ return container.getChildren(isPane);
+
+ },
+
+ /*
+ Click-handler to toggle the visibilities of the tab panes.
+ */
+ show: function(event){
+
+ var active = "active",
+ nav = this.getParent("ul"),
+ index = nav.getElements("a").indexOf(this);
+
+ event.stop();
+ nav.getChildren().removeClass(active)[index].addClass(active);
+ nav.getNext().getChildren().removeClass(active)[index].addClass(active);
+
+ }
+
+});