From b834ed247bf1b40d35f21fb52a6482907f6c5633 Mon Sep 17 00:00:00 2001 From: srosse <none@none> Date: Fri, 15 Feb 2013 14:33:43 +0100 Subject: [PATCH] OO-534: implements drag and drop in tree with jQuery and for pool --- pom.xml | 39 +- .../admin/user/UserSearchFlexiTableModel.java | 3 +- .../user/groups/GroupSearchController.java | 3 +- .../org/olat/catalog/ui/_content/catalog.html | 2 +- .../chiefcontrollers/_content/body.html | 7 +- .../persistence/PersistenceHelper.java | 14 + .../core/commons/persistence/SortKey.java | 57 + .../flexible/elements/FlexiTableElement.java | 15 + .../form/flexible/impl/FormItemImpl.java | 4 +- .../elements/TextAreaElementRenderer.java | 2 +- .../table/DefaultFlexiColumnModel.java | 39 +- .../impl/elements/table/FlexiColumnModel.java | 8 + .../elements/table/FlexiTableDataModel.java | 4 +- .../table/FlexiTableDataModelImpl.java | 3 +- .../elements/table/FlexiTableElementImpl.java | 50 + .../elements/table/FlexiTableModelMapper.java | 37 +- .../elements/table/FlexiTableRenderer.java | 222 ++-- .../core/gui/components/tree/MenuTree.java | 28 +- .../gui/components/tree/MenuTreeRenderer.java | 76 +- .../core/gui/components/tree/_static/js/dd.js | 156 +-- .../_content/index.html | 8 +- .../autocompletion/_content/autocomplete.html | 3 + .../textmarker/_content/tmContainer.html | 3 +- .../control/winmgr/_content/serverpart.html | 23 +- .../org/olat/core/gui/media/ServletUtil.java | 12 + .../debug/GuiDebugDispatcherController.java | 2 +- .../course/editor/EditorMainController.java | 3 +- .../GroupsAndRightsController.java | 3 +- .../wizard/ImportMemberOverviewDataModel.java | 3 +- .../olat/course/nodes/st/_content/run.html | 2 +- .../course/tree/CourseEditorTreeModel.java | 9 +- .../ui/main/EditMembershipController.java | 3 +- .../GuiDemoWindowControlController.java | 27 +- .../instantMessaging/ui/ChatController.java | 5 + .../ui/_content/chatMsgField.html | 12 +- .../modules/qpool/QuestionPoolService.java | 3 +- .../olat/modules/qpool/manager/PoolDAO.java | 6 +- .../manager/QuestionPoolServiceImpl.java | 5 +- .../olat/modules/qpool/ui/ItemRowsSource.java | 4 +- .../modules/qpool/ui/MarkedItemsSource.java | 3 +- .../qpool/ui/MyQuestionItemsSource.java | 3 +- .../modules/qpool/ui/PooledItemsSource.java | 5 +- .../qpool/ui/QuestionItemDataModel.java | 7 +- .../modules/qpool/ui/QuestionItemsSource.java | 3 +- .../qpool/ui/QuestionListController.java | 29 +- .../ui/QuestionPoolMainEditorController.java | 49 +- .../qpool/ui/QuestionPoolMenuTreeModel.java | 40 + .../modules/qpool/ui/QuestionsController.java | 4 + .../modules/qpool/ui/_content/item_list.html | 6 +- .../qpool/ui/_i18n/LocalStrings_de.properties | 1 + src/main/webapp/static/js/functions.js | 22 +- .../webapp/static/js/jquery/jquery-ui.css | 474 -------- .../js/jquery/ui/images/animated-overlay.gif | Bin 0 -> 1738 bytes .../ui/images/ui-bg_flat_0_aaaaaa_40x100.png | Bin 0 -> 274 bytes .../ui/images/ui-bg_flat_75_ffffff_40x100.png | Bin 0 -> 271 bytes .../ui/images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 387 bytes .../ui/images/ui-bg_glass_65_ffffff_1x400.png | Bin 0 -> 272 bytes .../ui/images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 375 bytes .../ui/images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 368 bytes .../ui/images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 384 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 360 bytes .../ui/images/ui-icons_222222_256x240.png | Bin 0 -> 6781 bytes .../ui/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4353 bytes .../ui/images/ui-icons_454545_256x240.png | Bin 0 -> 6854 bytes .../ui/images/ui-icons_888888_256x240.png | Bin 0 -> 6897 bytes .../ui/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4353 bytes .../js/jquery/ui/jquery-ui-1.10.0.custom.css | 1014 +++++++++++++++++ .../{ => ui}/jquery-ui-1.10.0.custom.js | 0 .../jquery/ui/jquery-ui-1.10.0.custom.min.css | 5 + .../{ => ui}/jquery-ui-1.10.0.custom.min.js | 0 70 files changed, 1735 insertions(+), 835 deletions(-) create mode 100644 src/main/java/org/olat/core/commons/persistence/SortKey.java create mode 100644 src/main/java/org/olat/modules/qpool/ui/QuestionPoolMenuTreeModel.java delete mode 100644 src/main/webapp/static/js/jquery/jquery-ui.css create mode 100755 src/main/webapp/static/js/jquery/ui/images/animated-overlay.gif create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-bg_flat_0_aaaaaa_40x100.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-bg_flat_75_ffffff_40x100.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_65_ffffff_1x400.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_75_dadada_1x400.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-icons_222222_256x240.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-icons_2e83ff_256x240.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-icons_454545_256x240.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-icons_888888_256x240.png create mode 100755 src/main/webapp/static/js/jquery/ui/images/ui-icons_cd0a0a_256x240.png create mode 100755 src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.css rename src/main/webapp/static/js/jquery/{ => ui}/jquery-ui-1.10.0.custom.js (100%) create mode 100755 src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.min.css rename src/main/webapp/static/js/jquery/{ => ui}/jquery-ui-1.10.0.custom.min.js (100%) diff --git a/pom.xml b/pom.xml index 1b9cfd8ff6b..359e39ed828 100644 --- a/pom.xml +++ b/pom.xml @@ -125,38 +125,43 @@ <version>1.3.0</version> <executions> <execution> + <phase>process-resources</phase> <goals> <goal>compress</goal> </goals> </execution> </executions> <configuration> - <nosuffix>true</nosuffix> - <sourceDirectory>src/main/webapp/static/js/jquery</sourceDirectory> + <suffix>.min</suffix> + <force>true</force> + <encoding>UTF-8</encoding> <outputDirectory>${basedir}/target/jquery</outputDirectory> + <sourceDirectory>${project.build.sourceDirectory}/../js</sourceDirectory> + <!-- <excludes> - <exclude>${basedir}/src/**/*.js</exclude> + <exclude>**/*</exclude> </excludes> + --> + <includes> + <include>${basedir}/src/main/webapp/static/js/jquery/openolat/jquery.oolog.js</include> + <include>${basedir}/src/main/webapp/static/js/jquery/openolat/jquery.translator.js</include> + <include>${basedir}/src/main/webapp/static/js/jquery/periodic/jquery.periodic.js</include> + <include>${basedir}/src/main/webapp/static/js/jquery/tagit/tag-it.js</include> + </includes> + <!-- <aggregations> <aggregation> - <!-- insert new line after each concatenation (default: false) --> - <insertNewLine>true</insertNewLine> - <inputDir>${basedir}/src/main/webapp/static/js/jquery</inputDir> - <output>${basedir}/target/jquery/all.js</output> - <!-- files to include, path relative to output's directory or absolute path--> - <!--inputDir>base directory for non absolute includes, default to parent dir of output</inputDir--> + <output>${basedir}/src/main/webapp/static/js/jquery/jquery.all.js</output> + <removeIncluded>false</removeIncluded> <includes> - <include>openolat/jquery.oolog.js</include> - <include>openolat/jquery.translator.js</include> + <include>${basedir}/src/main/webapp/static/js/jquery/openolat/jquery.oolog.js</include> + <include>${basedir}/src/main/webapp/static/js/jquery/openolat/jquery.translator.js</include> + <include>${basedir}/src/main/webapp/static/js/jquery/periodic/jquery.periodic.js</include> + <include>${basedir}/src/main/webapp/static/js/jquery/tagit/tag-it.js</include> </includes> - <!-- files to exclude, path relative to output's directory --> - <excludes> - <exclude>*.min.js</exclude> - <exclude>*.js</exclude> - <exclude>*.css</exclude> - </excludes> </aggregation> </aggregations> + --> </configuration> </plugin> </plugins> diff --git a/src/main/java/org/olat/admin/user/UserSearchFlexiTableModel.java b/src/main/java/org/olat/admin/user/UserSearchFlexiTableModel.java index 4c90d53ded3..50faaf41661 100644 --- a/src/main/java/org/olat/admin/user/UserSearchFlexiTableModel.java +++ b/src/main/java/org/olat/admin/user/UserSearchFlexiTableModel.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModel; import org.olat.core.gui.components.table.DefaultTableDataModel; @@ -58,7 +59,7 @@ public class UserSearchFlexiTableModel extends DefaultTableDataModel<UserResultW } @Override - public void load(int firstResult, int maxResults) { + public void load(int firstResult, int maxResults, SortKey... sortedCol) { //already loaded } diff --git a/src/main/java/org/olat/admin/user/groups/GroupSearchController.java b/src/main/java/org/olat/admin/user/groups/GroupSearchController.java index bf16ac25b3c..6a986062f6b 100644 --- a/src/main/java/org/olat/admin/user/groups/GroupSearchController.java +++ b/src/main/java/org/olat/admin/user/groups/GroupSearchController.java @@ -25,6 +25,7 @@ import java.util.List; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.PersistenceHelper; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; @@ -384,7 +385,7 @@ public class GroupSearchController extends StepFormBasicController { } @Override - public void load(int firstResult, int maxResults) { + public void load(int firstResult, int maxResults, SortKey... orderBy) { //already loaded } diff --git a/src/main/java/org/olat/catalog/ui/_content/catalog.html b/src/main/java/org/olat/catalog/ui/_content/catalog.html index 90bb528300a..8f0e4e517c8 100644 --- a/src/main/java/org/olat/catalog/ui/_content/catalog.html +++ b/src/main/java/org/olat/catalog/ui/_content/catalog.html @@ -102,7 +102,7 @@ </div> <script type="text/javascript"> /* <![CDATA[ */ -jQuery(document).ready(function() { +jQuery(function() { jQuery('#leaf$ri').tooltip({ items: "span", content: function(){ return jQuery('#o_tooltip_$ri').html(); } diff --git a/src/main/java/org/olat/core/commons/chiefcontrollers/_content/body.html b/src/main/java/org/olat/core/commons/chiefcontrollers/_content/body.html index dc1172a6117..e0c3bbd1fe2 100644 --- a/src/main/java/org/olat/core/commons/chiefcontrollers/_content/body.html +++ b/src/main/java/org/olat/core/commons/chiefcontrollers/_content/body.html @@ -59,10 +59,11 @@ function b_start(){ /* ]]> */ </script> <script type="text/javascript" src='$r.staticLink("js/jquery/jquery-migrate-1.0.0.min.js")'></script> -<script type="text/javascript" src='$r.staticLink("js/jquery/jquery-ui-1.10.0.custom.min.js")'></script> -<link type="text/css" href='$r.staticLink("js/jquery/jquery-ui.css")' rel="stylesheet"/> +<script type="text/javascript" src='$r.staticLink("js/jquery/ui/jquery-ui-1.10.0.custom.min.js")'></script> +<link type="text/css" href='$r.staticLink("js/jquery/ui/jquery-ui-1.10.0.custom.min.css")' rel="stylesheet"/> <script type="text/javascript" src='$r.staticLink("js/jquery/periodic/jquery.periodic.js")'></script> <script type="text/javascript" src='$r.staticLink("js/jquery/datatables/jquery.dataTables.min.js")'></script> +<link type="text/css" href='$r.staticLink("js/jquery/datatables/css/jquery.dataTables.css")' rel="stylesheet"/> <script type="text/javascript" src='$r.staticLink("js/jshashtable-2.1_src.js")'></script> <script type="text/javascript" src='$r.staticLink("js/jsMath/easy/load.js")'></script> @@ -142,7 +143,7 @@ $r.render("olatContentPanel") <script type="text/javascript"> /* <![CDATA[ */ // init size and listen to text resize events -jQuery(document).ready(function() { +jQuery(function() { b_initEmPxFactor(); /*Ext.EventManager.onTextResize(b_initEmPxFactor) */ }); /* ]]> */ diff --git a/src/main/java/org/olat/core/commons/persistence/PersistenceHelper.java b/src/main/java/org/olat/core/commons/persistence/PersistenceHelper.java index 5b069725bbd..545e1ad8011 100644 --- a/src/main/java/org/olat/core/commons/persistence/PersistenceHelper.java +++ b/src/main/java/org/olat/core/commons/persistence/PersistenceHelper.java @@ -106,6 +106,20 @@ public class PersistenceHelper { } return result; } + + public static void appendGroupBy(StringBuilder sb, String dbRef, SortKey... orderBy) { + if(orderBy != null && orderBy.length > 0 && orderBy[0] != null) { + sb.append(" order by "); + for(SortKey sort:orderBy) { + sb.append(dbRef).append(".").append(sort.getKey()); + if(sort.isAsc()) { + sb.append(" asc "); + } else { + sb.append(" desc "); + } + } + } + } /** * diff --git a/src/main/java/org/olat/core/commons/persistence/SortKey.java b/src/main/java/org/olat/core/commons/persistence/SortKey.java new file mode 100644 index 00000000000..0902299f710 --- /dev/null +++ b/src/main/java/org/olat/core/commons/persistence/SortKey.java @@ -0,0 +1,57 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.core.commons.persistence; + +/** + * + * Initial date: 13.02.2013<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class SortKey { + + private boolean asc; + private String key; + + public SortKey() { + // + } + + public SortKey(String key, boolean asc) { + this.key = key; + this.asc = asc; + } + + public boolean isAsc() { + return asc; + } + + public void setAsc(boolean asc) { + this.asc = asc; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { + this.key = key; + } +} diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java index 29b5f41c54c..cffb150310e 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/elements/FlexiTableElement.java @@ -25,6 +25,8 @@ */ package org.olat.core.gui.components.form.flexible.elements; +import java.util.Set; + import org.olat.core.gui.components.form.flexible.FormItem; /** @@ -34,6 +36,19 @@ public interface FlexiTableElement extends FormItem { public static final String ROM_SELECT_EVENT = "rSelect"; + + public boolean isMultiSelect(); + + public Set<Integer> getMultiSelectedIndex(); + + public boolean isMultiSelectedIndex(int index); + + /** + * Enable multi-selection + * @return + */ + public void setMultiSelect(boolean enable); + public int getPageSize(); diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java index eff4ca063d1..bfe387bac0c 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/FormItemImpl.java @@ -582,7 +582,9 @@ public abstract class FormItemImpl implements FormItem, InlineElement { /** * @see org.olat.core.gui.components.form.flexible.FormComponent#validate(java.util.List) */ - public abstract void validate(List<ValidationStatus> validationResults); + public void validate(List<ValidationStatus> validationResults) { + + } /** * @see org.olat.core.gui.components.form.flexible.FormItem#reset() diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextAreaElementRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextAreaElementRenderer.java index 7fea36d4ef9..c576cfeeef0 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextAreaElementRenderer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/TextAreaElementRenderer.java @@ -141,7 +141,7 @@ class TextAreaElementRenderer implements ComponentRenderer { // resize element to fit content if (teC.isAutoHeightEnabled()) { - sb.append("<script type='text/javascript'>jQuery(document).ready(function(){try{var iter=0; var obj=$('"); + sb.append("<script type='text/javascript'>jQuery(function(){try{var iter=0; var obj=$('"); sb.append(id); if (!source.isEnabled()) sb.append("_disabled"); sb.append("');while (obj.scrollHeight>obj.offsetHeight && iter < 99){ iter++; obj.rows = obj.rows + 1}} catch(e){}});</script>"); diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiColumnModel.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiColumnModel.java index 22dfabe6071..22b9c759eee 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiColumnModel.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/DefaultFlexiColumnModel.java @@ -33,21 +33,54 @@ package org.olat.core.gui.components.form.flexible.impl.elements.table; */ public class DefaultFlexiColumnModel implements FlexiColumnModel { - private String headerKey; + + private boolean sortable; + private String sortedKey; + private int alignment; private FlexiCellRenderer cellRenderer; public DefaultFlexiColumnModel(String headerKey) { + this(headerKey, false, null); + } + + public DefaultFlexiColumnModel(String headerKey, boolean sortable, String sortKey) { + this(headerKey, sortable, sortKey, FlexiColumnModel.ALIGNMENT_LEFT, new TextFlexiCellRenderer()); + } + + public DefaultFlexiColumnModel(String headerKey, boolean sortable, String sortKey, int alignment, FlexiCellRenderer cellRenderer) { + this.sortable = sortable; + this.sortedKey = sortKey; this.headerKey = headerKey; - this.alignment = FlexiColumnModel.ALIGNMENT_LEFT; - this.cellRenderer = new TextFlexiCellRenderer(); + this.alignment = alignment; + this.cellRenderer = cellRenderer; } public String getHeaderKey() { return headerKey; } + @Override + public boolean isSortable() { + return sortable; + } + + @Override + public void setSortable(boolean enable) { + sortable = enable; + } + + @Override + public String getSortKey() { + return sortedKey; + } + + @Override + public void setSortKey(String sortedKey) { + this.sortedKey = sortedKey; + } + public int getAlignment() { return alignment; } diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiColumnModel.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiColumnModel.java index 794b6ee315a..35c8711cad8 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiColumnModel.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiColumnModel.java @@ -36,6 +36,14 @@ public interface FlexiColumnModel { public static int ALIGNMENT_LEFT = 1; public static int ALIGNMENT_RIGHT = 2; public static int ALIGNMENT_CENTER = 3; + + public boolean isSortable(); + + public void setSortable(boolean enable); + + public String getSortKey(); + + public void setSortKey(String sortedKey); public String getHeaderKey(); diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableDataModel.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableDataModel.java index 6f7d06fb993..c687835c3f3 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableDataModel.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableDataModel.java @@ -26,6 +26,8 @@ package org.olat.core.gui.components.form.flexible.impl.elements.table; +import org.olat.core.commons.persistence.SortKey; + /** * Interface for table data model including column models. * @author Christian Guretzki @@ -42,7 +44,7 @@ public interface FlexiTableDataModel { * @param firstResult * @param maxResults */ - public void load(int firstResult, int maxResults); + public void load(int firstResult, int maxResults, SortKey... orderBy); /** * Return Object for certain table cell. diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableDataModelImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableDataModelImpl.java index f7179b6c65b..549c65433fe 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableDataModelImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableDataModelImpl.java @@ -26,6 +26,7 @@ package org.olat.core.gui.components.form.flexible.impl.elements.table; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.components.table.TableDataModel; /** @@ -59,7 +60,7 @@ public class FlexiTableDataModelImpl<T> implements FlexiTableDataModel { } @Override - public void load(int firstResult, int maxResults) { + public void load(int firstResult, int maxResults, SortKey... orderby) { //already loaded } diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java index 05b66800b3b..39eb0c1c633 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableElementImpl.java @@ -25,9 +25,12 @@ */ package org.olat.core.gui.components.form.flexible.impl.elements.table; +import java.util.Collections; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; import org.olat.core.CoreSpringFactory; import org.olat.core.dispatcher.mapper.MapperService; @@ -49,6 +52,9 @@ import org.olat.core.util.ValidationStatus; */ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableElement, FormItemCollection { + //settings + private boolean multiSelect; + private int rowCount = -1; private int pageSize; @@ -56,6 +62,7 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle private FlexiTableComponent component; private String mapperUrl; + private Set<Integer> multiSelectedIndex; private Map<String,FormItem> components = new HashMap<String,FormItem>(); public FlexiTableElementImpl(UserRequest ureq, String name, FlexiTableDataModel tableModel) { @@ -79,6 +86,13 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle } } + public boolean isMultiSelect() { + return multiSelect; + } + public void setMultiSelect(boolean multiSelect) { + this.multiSelect = multiSelect; + } + @Override public int getPageSize() { return pageSize; @@ -117,6 +131,11 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle */ @Override public void evalFormRequest(UserRequest ureq) { + String[] selectedIndexArr = getRootForm().getRequestParameterValues("ftb_ms"); + if(selectedIndexArr != null) { + setMultiSelectIndex(selectedIndexArr); + } + String selectedIndex = getRootForm().getRequestParameter("select"); if(StringHelper.containsNonWhitespace(selectedIndex)) { int index = selectedIndex.lastIndexOf('-'); @@ -138,6 +157,37 @@ public class FlexiTableElementImpl extends FormItemImpl implements FlexiTableEle protected void doSelect(UserRequest ureq, int index) { getRootForm().fireFormEvent(ureq, new SelectionEvent(ROM_SELECT_EVENT, index, this, FormEvent.ONCLICK)); } + + public Set<Integer> getMultiSelectedIndex() { + return multiSelectedIndex == null ? Collections.<Integer>emptySet() : multiSelectedIndex; + } + + public boolean isMultiSelectedIndex(int index) { + if(multiSelectedIndex == null) { + return false; + } + return multiSelectedIndex.contains(new Integer(index)); + } + + protected void setMultiSelectIndex(String[] selections) { + if(multiSelectedIndex == null) { + multiSelectedIndex = new HashSet<Integer>(); + } + multiSelectedIndex.clear(); + //selection format row_{formDispId}-{index} + if(selections.length > 0) { + int index = selections[0].lastIndexOf('-'); + if(index > 0) { + for(String selection:selections) { + if(index > 0 && index+1 < selection.length()) { + String rowStr = selection.substring(index+1); + int row = Integer.parseInt(rowStr); + multiSelectedIndex.add(new Integer(row)); + } + } + } + } + } @Override public void validate(List<ValidationStatus> validationResults) { diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableModelMapper.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableModelMapper.java index a1ee3117da3..b88e6e93291 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableModelMapper.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableModelMapper.java @@ -25,9 +25,9 @@ import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.dispatcher.mapper.Mapper; import org.olat.core.gui.Windows; -import org.olat.core.gui.components.Window; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.control.ChiefController; import org.olat.core.gui.media.JSONMediaResource; @@ -61,10 +61,26 @@ public class FlexiTableModelMapper implements Mapper { String firstRowStr = request.getParameter("iDisplayStart"); String maxRowStr = request.getParameter("iDisplayLength"); String echo = request.getParameter("sEcho"); - + String sortCol = request.getParameter("iSortCol_0"); + String sortDir = request.getParameter("sSortDir_0"); + int sortedColIndex = -1; + if(StringHelper.containsNonWhitespace(sortCol)) { + sortedColIndex = Integer.parseInt(sortCol); + if(ftE.isMultiSelect()) { + sortedColIndex--; + } + } + if(StringHelper.isLong(firstRowStr) && StringHelper.isLong(maxRowStr)) { FlexiTableDataModel model = ftE.getTableDataModel(); + FlexiTableColumnModel columnModel = model.getTableColumnModel(); + + SortKey orderBy = null; + if(sortedColIndex >= 0 && sortedColIndex < columnModel.getColumnCount()) { + FlexiColumnModel sortedColumn = model.getTableColumnModel().getColumnModel(sortedColIndex); + orderBy = new SortKey(sortedColumn.getSortKey(), "asc".equals(sortDir)); + } int rows = ftE.getTableDataModel().getRowCount(); String dispatchId = ftE.getComponent().getDispatchID(); @@ -83,8 +99,8 @@ public class FlexiTableModelMapper implements Mapper { int maxRows = Integer.parseInt(maxRowStr); int lastRow = Math.min(rows, firstRow + maxRows); //paged loading - model.load(firstRow, maxRows); - + model.load(firstRow, maxRows, orderBy); + for (int i = firstRow; i < lastRow; i++) { JSONObject row = new JSONObject(); @@ -100,6 +116,16 @@ public class FlexiTableModelMapper implements Mapper { } ftE.addFormItem(select); ftE.addFormItem(mark); + + if(ftE.isMultiSelect()) { + StringBuilder sb = new StringBuilder(); + sb.append("<input type='checkbox' name='ftb_ms' value='").append(rowIdPrefix).append(i).append("'"); + if(ftE.isMultiSelectedIndex(i)) { + sb.append(" checked='checked'"); + } + sb.append(">"); + row.put("choice", sb.toString()); + } row.put("key", key); row.put("subject", subject); @@ -125,7 +151,6 @@ public class FlexiTableModelMapper implements Mapper { private String renderFormItem(FormItem item, HttpServletRequest request, Translator translator) { UserSession usess = CoreSpringFactory.getImpl(UserSessionManager.class).getUserSession(request); ChiefController cc = (ChiefController)Windows.getWindows(usess).getAttribute("AUTHCHIEFCONTROLLER"); - Window w = cc.getWindow(); - return w.renderComponent(item.getComponent()); + return cc.getWindow().renderComponent(item.getComponent()); } } diff --git a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableRenderer.java b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableRenderer.java index 87c536e2b74..bed04eb0d64 100644 --- a/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableRenderer.java +++ b/src/main/java/org/olat/core/gui/components/form/flexible/impl/elements/table/FlexiTableRenderer.java @@ -58,48 +58,135 @@ class FlexiTableRenderer implements ComponentRenderer { // FlexiTableComponent ftC = (FlexiTableComponent) source; FlexiTableElementImpl ftE = ftC.getFlexiTableElement(); + FlexiTableDataModel dataModel = ftE.getTableDataModel(); + Form rootForm = ftE.getRootForm(); String id = ftC.getFormDispatchId(); - // - if (!source.isEnabled()) { - // read only view - // ... - } else { - // read write view - // ... - } - target.append("<div class=\"b_table_wrapper b_floatscrollbox\">");// TODO:cg: ev add $!tableConfig.getCustomCssClass() - - // starting real table table - target.append("<table id=\"").append(id).append("\">"); - int rows = ftE.getTableDataModel().getRowCount(); - int cols = ftE.getTableDataModel().getTableColumnModel().getColumnCount(); + target.append("<div class=\"b_table_wrapper b_floatscrollbox\">") + .append("<table id=\"").append(id).append("\">"); + + renderTHead(target, ftE, translator); + renderTBody(renderer, target, ftC, ubu, translator, renderResult); - // 1. build header links + target.append("</table>") + .append("</div>"); + + if (source.isEnabled()) { + target.append(FormJSHelper.getJSStartWithVarDeclaration(id)); + target.append(FormJSHelper.getSetFlexiFormDirty(ftE.getRootForm(), id)); + target.append(FormJSHelper.getJSEnd()); + } + + int rows = dataModel.getRowCount(); + + target.append("<script>") + .append("jQuery(function() {\n") + .append(" jQuery('#").append(id).append("').dataTable( {\n") + .append(" 'bScrollInfinite': true,\n") + .append(" 'bScrollCollapse': true,\n") + .append(" 'sScrollY': '200px',\n") + .append(" 'bProcessing': true,\n") + .append(" 'bServerSide': true,\n") + .append(" 'iDisplayLength': 20,\n") + .append(" 'iDeferLoading': ").append(rows).append(",\n") + .append(" 'sAjaxSource': '").append(ftE.getMapperUrl()).append("',\n") + .append(" 'fnRowCallback': function( nRow, aData, iDisplayIndex ) {\n") + .append(" jQuery(nRow).draggable({ ") + .append(" containment: '#b_main',") + .append(" accept: function(event,ui){ console.log('Accept'); return true; },\n") + .append(" helper: function(event) {\n") + .append(" return jQuery(\"<div class='ui-widget-header' style='z-index:10000;'>I'm a custom helper</div>\");\n") + .append(" },\n") + .append(" start: function(event,ui){ console.log('Start'); },\n") + .append(" stop: function(event,ui){ console.log('Stop'); }\n") + .append(" });\n") + .append(" },\n") + .append(" 'aoColumns': [\n") + .append(" {'mData':'choice', bSortable: false },\n") + .append(" {'mData':'key'},\n") + .append(" {'mData':'subject'},\n") + .append(" {'mData':'select', bSortable: false },\n") + .append(" {'mData':'mark', bSortable: false }\n") + .append(" ]\n") + .append(" });\n") + //clic rows + .append(" jQuery('#").append(id).append(" tbody tr').live('click', function(event, ui) {\n") + .append(" var link = false;\n") + .append(" var rowId = null;\n") + .append(" if(event.target.tagName == 'A' || event.target.tagName == 'INPUT') {\n") + .append(" return;\n") + .append(" }\n") + .append(" jQuery(event.target).parents().each(function(index,el) {\n") + .append(" if(el.tagName == 'A' || el.tagName == 'INPUT') {\n") + .append(" link = true;\n") + .append(" } else if (el.tagName == 'TR' && rowId == null) {\n") + .append(" rowId = jQuery(el).attr('id');\n") + .append(" return false;\n") + .append(" }\n") + .append(" });\n") + .append(" if(!link) {\n") + .append(FormJSHelper.generateXHRFnCallVariables(rootForm, id, 1)) + .append(" o_ffXHREvent(formNam, dispIdField, dispId, eventIdField, eventInt,'select',rowId);") + .append(" };") + .append(" });\n") + .append("});\n") + .append("</script>\n"); + } + + /** + * + * @param target + * @param ftE + * @param translator + */ + private void renderTHead(StringOutput target, FlexiTableElementImpl ftE, Translator translator) { + FlexiTableDataModel dataModel = ftE.getTableDataModel(); + FlexiTableColumnModel columnModel = dataModel.getTableColumnModel(); + target.append("<thead><tr>"); - for (int i = 0; i<cols; i++) { - FlexiColumnModel fcm = ftE.getTableDataModel().getTableColumnModel().getColumnModel(i); - String header = translator.translate(fcm.getHeaderKey()); - - target.append("<th class=\""); - // add css class for first and last column to support older browsers - if (i == 0) target.append(" b_first_child"); - if (i == cols-1) target.append(" b_last_child"); - target.append("\">"); - target.append(header); - target.append("</th>"); + int col = 0; + if(ftE.isMultiSelect()) { + target.append("<th class='b_first_child'>").append("choice").append("</th>"); + col++; + } + + int cols = columnModel.getColumnCount(); + for(int i=0; i<cols; i++) { + FlexiColumnModel fcm = columnModel.getColumnModel(i); + String header = translator.translate(fcm.getHeaderKey()); + + target.append("<th class=\""); + // add css class for first and last column to support older browsers + if (col == 0) target.append(" b_first_child"); + if (col == cols-1) target.append(" b_last_child"); + target.append("\">").append(header).append("</th>"); + col++; } target.append("</tr></thead>"); + } + + public void renderTBody(Renderer renderer, StringOutput target, FlexiTableComponent ftC, + URLBuilder ubu, Translator translator, RenderResult renderResult) { + + String id = ftC.getFormDispatchId(); + FlexiTableElementImpl ftE = ftC.getFlexiTableElement(); + FlexiTableDataModel dataModel = ftE.getTableDataModel(); + FlexiTableColumnModel columnModel = dataModel.getTableColumnModel(); // build rows target.append("<tbody>"); - // the really selected rowid (from the tabledatamodel) + // the really selected rowid (from the tabledatamodel) int firstRow = ftE.getFirstRow(); int maxRows = ftE.getMaxRows(); + int rows = dataModel.getRowCount(); int lastRow = Math.min(rows, firstRow + maxRows); + int cols = columnModel.getColumnCount(); + + String rowIdPrefix = "row_" + id + "-"; + for (int i = firstRow; i < lastRow; i++) { // use alternating css class String cssClass; @@ -109,17 +196,29 @@ class FlexiTableRenderer implements ComponentRenderer { if (i == 0) cssClass += " b_first_child"; if (i == rows-1) cssClass += " b_last_child"; - target.append("<tr id='row_").append(id).append("-").append(i) + target.append("<tr id='").append(rowIdPrefix).append(i) .append("' class=\"").append(cssClass).append("\">"); + + int col = 0; + if(ftE.isMultiSelect()) { + target.append("<td class='b_first_child'>") + .append("<input type='checkbox' name='ftb_ms' value='").append(rowIdPrefix).append(i).append("'"); + if(ftE.isMultiSelectedIndex(i)) { + target.append(" checked='checked'"); + } + target.append("/></td>"); + col++; + } + for (int j = 0; j < cols; j++) { FlexiColumnModel fcm = ftE.getTableDataModel().getTableColumnModel().getColumnModel(j); int alignment = fcm.getAlignment(); cssClass = (alignment == FlexiColumnModel.ALIGNMENT_LEFT ? "b_align_normal" : (alignment == FlexiColumnModel.ALIGNMENT_RIGHT ? "b_align_inverse" : "b_align_center")); // add css class for first and last column to support older browsers - if (j == 0) cssClass += " b_first_child"; - if (j == cols-1) cssClass += " b_last_child"; + if (col == 0) cssClass += " b_first_child"; + if (col == cols-1) cssClass += " b_last_child"; target.append("<td class=\"").append(cssClass).append("\">"); - if (j == 0) target.append("<a name=\"table\"></a>"); //add once for accessabillitykey + if (col == 0) target.append("<a name=\"table\"></a>"); //add once for accessabillitykey Object cellValue = ftE.getTableDataModel().getValueAt(i, j); if (cellValue instanceof FormItem) { @@ -128,7 +227,8 @@ class FlexiTableRenderer implements ComponentRenderer { if(ftE.getRootForm() != formItem.getRootForm()) { formItem.setRootForm(ftE.getRootForm()); } - formItem.getComponent().getHTMLRendererSingleton().render(renderer, target, formItem.getComponent(), ubu, translator, renderResult, args); + formItem.getComponent().getHTMLRendererSingleton().render(renderer, target, formItem.getComponent(), + ubu, translator, renderResult, null); ftE.addFormItem(formItem); } else { ftE.getTableDataModel().getTableColumnModel().getColumnModel(j). @@ -140,63 +240,7 @@ class FlexiTableRenderer implements ComponentRenderer { } // end of table table - target.append("</tbody></table>"); - target.append("</div>"); - - if (source.isEnabled()) { - // add set dirty form only if enabled - target.append(FormJSHelper.getJSStartWithVarDeclaration(id)); - /* deactivated due OLAT-3094 and OLAT-3040 - if (ftE.hasFocus()) { - target.append(FormJSHelper.getFocusFor(id)); - } - */ - target.append(FormJSHelper.getSetFlexiFormDirty(ftE.getRootForm(), id)); - target.append(FormJSHelper.getJSEnd()); - } - - target.append("<script>") - .append("jQuery(document).ready(function() {\n") - .append(" jQuery('#").append(id).append("').dataTable( {\n") - .append(" 'bScrollInfinite': true,\n") - .append(" 'bScrollCollapse': true,\n") - .append(" 'sScrollY': '200px',\n") - .append(" 'bProcessing': true,\n") - .append(" 'bServerSide': true,\n") - .append(" 'iDisplayLength': 20,\n") - .append(" 'iDeferLoading': ").append(rows).append(",\n") - .append(" 'sAjaxSource': '").append(ftE.getMapperUrl()).append("',\n") - .append(" 'fnRowCallback': function( nRow, aData, iDisplayIndex ) {\n") - .append(" jQuery(nRow).draggable({ ") - .append(" start: function(event,ui){ console.log('Start'); },\n") - .append(" stop: function(event,ui){ console.log('Stop'); }\n") - .append(" });\n") - .append(" },\n") - .append(" 'aoColumns': [\n") - .append(" {'mData':'key'},\n") - .append(" {'mData':'subject'},\n") - .append(" {'mData':'select'},\n") - .append(" {'mData':'mark'}\n") - .append(" ]\n") - .append(" });\n") - //clic rows - .append(" jQuery('#").append(id).append(" tbody tr').live('click', function(event, ui) {\n") - .append(" var link = false;\n") - .append(" var rowId = null;\n") - .append(" jQuery(event.target).parents().each(function(index,el) {\n") - .append(" if(el.tagName == 'A') {") - .append(" link = true;\n") - .append(" } else if (el.tagName == 'TR' && rowId == null) {\n") - .append(" rowId = jQuery(el).attr('id');\n") - .append(" }\n") - .append(" });\n") - .append(" if(!link) {\n") - .append(FormJSHelper.generateXHRFnCallVariables(rootForm, id, 1)) - .append(" o_ffXHREvent(formNam, dispIdField, dispId, eventIdField, eventInt,'select',rowId);") - .append(" };") - .append(" });\n") - .append("});\n") - .append("</script>\n"); + target.append("</tbody>"); } /** diff --git a/src/main/java/org/olat/core/gui/components/tree/MenuTree.java b/src/main/java/org/olat/core/gui/components/tree/MenuTree.java index 9e490227c5d..92228677d4c 100644 --- a/src/main/java/org/olat/core/gui/components/tree/MenuTree.java +++ b/src/main/java/org/olat/core/gui/components/tree/MenuTree.java @@ -106,7 +106,8 @@ public class MenuTree extends Component { private String selectedNodeId = null; private Set<String> openNodeIds = new HashSet<String>(); private boolean expandServerOnly = true; // default is serverside menu - private boolean dragAndDropEnabled = false; + private boolean dragEnabled = false; + private boolean dropEnabled = false; private boolean expandSelectedNode = true; private boolean rootVisible = true; //fxdiff VCRP-9: drag and drop in menu tree @@ -172,7 +173,7 @@ public class MenuTree extends Component { String sneValue = ureq.getParameter(SIBLING_NODE); boolean sibling = StringHelper.containsNonWhitespace(sneValue); boolean atTheEnd = "end".equals(sneValue); - handleDropped(ureq, nodeId, targetNodeId, sibling, atTheEnd); + handleDropped(ureq, targetNodeId, nodeId, sibling, atTheEnd); } } @@ -305,9 +306,8 @@ public class MenuTree extends Component { } @Override - //fxdiff VCRP-9: drag and drop in menu tree public void validate(UserRequest ureq, ValidationResult vr) { - if(dragAndDropEnabled) { + if(dragEnabled || dropEnabled) { dragAndDropCmp.validate(ureq, vr); if(dndFeedbackUri == null && treeModel instanceof DnDTreeModel) { dndFeedbackUri = CoreSpringFactory.getImpl(MapperService.class).register(ureq.getUserSession(), new DnDFeedbackMapper(this)); @@ -399,18 +399,26 @@ public class MenuTree extends Component { this.expandServerOnly = expandServerOnly; } + public boolean isDragEnabled() { + return dragEnabled; + } + /** - * @return Is Drag & Drop enable for the tree + * @param enableDragAndDrop Enable or not drag and drop */ - public boolean isDragAndDropEnabled() { - return dragAndDropEnabled; + public void setDragEnabled(boolean enabled) { + dragEnabled = enabled; } /** - * @param enableDragAndDrop Enable or not drag and drop + * @return Is Drag & Drop enable for the tree */ - public void setDragAndDropEnabled(boolean dragAndDropEnabled) { - this.dragAndDropEnabled = dragAndDropEnabled; + public boolean isDropEnabled() { + return dropEnabled; + } + + public void setDropEnabled(boolean enabled) { + dropEnabled = enabled; } /** diff --git a/src/main/java/org/olat/core/gui/components/tree/MenuTreeRenderer.java b/src/main/java/org/olat/core/gui/components/tree/MenuTreeRenderer.java index 8103eda259c..8cb0687156c 100644 --- a/src/main/java/org/olat/core/gui/components/tree/MenuTreeRenderer.java +++ b/src/main/java/org/olat/core/gui/components/tree/MenuTreeRenderer.java @@ -96,7 +96,7 @@ public class MenuTreeRenderer implements ComponentRenderer { AJAXFlags flags = renderer.getGlobalSettings().getAjaxFlags(); target.append("\n<div id='dd1-ct' class='b_tree"); - if(tree.isDragAndDropEnabled()) { + if(tree.isDragEnabled() || tree.isDropEnabled()) { target.append(" b_dd_ct"); } if(!tree.isRootVisible()) { @@ -145,7 +145,7 @@ public class MenuTreeRenderer implements ComponentRenderer { } String ident = curRoot.getIdent(); target.append("\"><div id='dd").append(ident).append("' class=\"b_tree_item_wrapper"); - if(tree.isDragAndDropEnabled()) { + if(tree.isDragEnabled() || tree.isDropEnabled()) { target.append(" b_dd_item"); } if(selected) { @@ -153,7 +153,7 @@ public class MenuTreeRenderer implements ComponentRenderer { } target.append("\">"); - if(tree.isDragAndDropEnabled()) { + if(tree.isDragEnabled() || tree.isDropEnabled()) { appendDragAndDropObj(curRoot, tree, target, ubu, flags); } @@ -265,7 +265,7 @@ public class MenuTreeRenderer implements ComponentRenderer { // display title and close menu item target.append("<span"); - if(tree.isDragAndDropEnabled()) { + if(tree.isDragEnabled() || tree.isDropEnabled()) { target.append(" class='b_dd_item' id='da").append(ident).append("'"); } target.append(">"); @@ -280,8 +280,8 @@ public class MenuTreeRenderer implements ComponentRenderer { target.append("</div>"); //append div to drop as sibling - if(!renderChildren && tree.isDragAndDropEnabled()) { - appendSiblingDropObj(curRoot, level, tree, target, false); + if(!renderChildren && (tree.isDragEnabled() || tree.isDropEnabled())) { + appendSiblingDropObj(curRoot, level, tree, target, ubu, flags, false); } if (renderChildren) { @@ -289,8 +289,8 @@ public class MenuTreeRenderer implements ComponentRenderer { renderChildren(target, level, curRoot, selPath, openNodeIds, ubu, flags, markedNode, tree); //append div to drop as sibling after the children - if(tree.isDragAndDropEnabled()) { - appendSiblingDropObj(curRoot, level, tree, target, true); + if(tree.isDragEnabled() || tree.isDropEnabled()) { + appendSiblingDropObj(curRoot, level, tree, target, ubu, flags, true); } } @@ -315,33 +315,43 @@ public class MenuTreeRenderer implements ComponentRenderer { } //fxdiff VCRP-9: drag and drop in menu tree - private void appendSiblingDropObj(TreeNode node, int level, MenuTree tree, StringOutput target, boolean after) { - String id = (after ? "dt" : "ds") + node.getIdent(); - target.append("<div id='").append(id).append("' class='b_dd_sibling b_dd_sibling_l").append(level).append("'>") - //.append("<script type='text/javascript'>Ext.get('").append(id).append("').dd = new Ext.dd.DDTarget('").append(id).append("','").append(dndGroup).append("');</script>") - .append("<script type='text/javascript'>jQuery('#").append(id) - .append("').droppable({hoverClass:'b_dd_over', accept: treeAcceptDrop, over: onTreeDragOver, out:onTreeDragOut, drop:onTreeDrop});</script>") - .append(" </div>"); + private void appendSiblingDropObj(TreeNode node, int level, MenuTree tree, StringOutput target, URLBuilder ubu, AJAXFlags flags, boolean after) { + if(tree.isDropEnabled()) { + String id = (after ? "dt" : "ds") + node.getIdent(); + target.append("<div id='").append(id).append("' class='b_dd_sibling b_dd_sibling_l").append(level).append("'>") + .append("<script type='text/javascript'>jQuery('#").append(id).append("')"); + appendDroppable(node, tree, target, ubu, flags); + target.append("</script> </div>"); + } } //fxdiff VCRP-9: drag and drop in menu tree private void appendDragAndDropObj(TreeNode node, MenuTree tree, StringOutput target, URLBuilder ubu, AJAXFlags flags) { String id = node.getIdent(); - String feedBackUri = tree.getDndFeedbackUri(); - StringOutput endUrl = new StringOutput(); - ubu.buildURI(endUrl, new String[] { COMMAND_ID, NODE_IDENT }, new String[] { COMMAND_TREENODE_DROP, id }, flags.isIframePostEnabled() ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL); - target.append("<script type='text/javascript'>") - //.append("Ext.get('dd").append(id).append("').dd = new Ext.fxMenuTree.DDProxy('dd").append(id).append("','").append(dndGroup).append("','").append(endUrl).append("','").append(feedBackUri).append("');") - //.append("Ext.get('da").append(id).append("').dd = new Ext.fxMenuTree.DDProxy('da").append(id).append("','").append(dndGroup).append("','").append(endUrl).append("','").append(feedBackUri).append("');") - .append("jQuery('#dd").append(id).append("')"); - appendDraggable(target); - target.append("jQuery('#da").append(id).append("')"); - appendDraggable(target); + target.append("<script type='text/javascript'>"); + + if(tree.isDragEnabled()) { + target.append("jQuery('#dd").append(id).append("')"); + appendDraggable(target); + target.append("jQuery('#da").append(id).append("')"); + appendDraggable(target); + } + if(tree.isDropEnabled()) { + target.append("jQuery('#dd").append(id).append("')"); + appendDroppable(node, tree, target, ubu, flags); + } target.append("</script>"); } + private void appendDroppable(TreeNode node, MenuTree tree, StringOutput sb, URLBuilder ubu, AJAXFlags flags) { + String feedBackUri = tree.getDndFeedbackUri(); + StringOutput endUrl = new StringOutput(64); + ubu.buildURI(endUrl, new String[] { COMMAND_ID, NODE_IDENT }, new String[] { COMMAND_TREENODE_DROP, node.getIdent() }, flags.isIframePostEnabled() ? AJAXFlags.MODE_TOBGIFRAME : AJAXFlags.MODE_NORMAL); + sb.append(".droppable({ fbUrl: '").append(feedBackUri).append("', endUrl: '").append(endUrl).append("', hoverClass:'b_dd_over', accept: treeAcceptDrop, drop:onTreeDrop});"); + } + private void appendDraggable(StringOutput sb) { - sb.append(".draggable({start:onTreeStartDrag, revert:'invalid' });"); + sb.append(".draggable({start:onTreeStartDrag, stop: onTreeStopDrag, revert:'invalid' });"); } //fxdiff VCRP-9: drag and drop in menu tree @@ -386,21 +396,11 @@ public class MenuTreeRenderer implements ComponentRenderer { return (curSel == curRoot); } - /** - * @see org.olat.core.gui.render.ui.ComponentRenderer#renderHeaderIncludes(org.olat.core.gui.render.Renderer, - * org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component, - * org.olat.core.gui.render.URLBuilder, org.olat.core.gui.translator.Translator) - */ public void renderHeaderIncludes(Renderer renderer, StringOutput sb, Component source, URLBuilder ubu, Translator translator, RenderingState rstate) { - // nothing to include + // } - /** - * @see org.olat.core.gui.render.ui.ComponentRenderer#renderBodyOnLoadJSFunctionCall(org.olat.core.gui.render.Renderer, - * org.olat.core.gui.render.StringOutput, org.olat.core.gui.components.Component) - */ public void renderBodyOnLoadJSFunctionCall(Renderer renderer, StringOutput sb, Component source, RenderingState rstate) { - // + // } - } \ No newline at end of file diff --git a/src/main/java/org/olat/core/gui/components/tree/_static/js/dd.js b/src/main/java/org/olat/core/gui/components/tree/_static/js/dd.js index 35aad436a5d..aaa11220231 100644 --- a/src/main/java/org/olat/core/gui/components/tree/_static/js/dd.js +++ b/src/main/java/org/olat/core/gui/components/tree/_static/js/dd.js @@ -1,108 +1,70 @@ -function onTreeStartDrag(e, targetId) { - console.log('onTreeStartDrag', e, targetId); +function onTreeStartDrag(event, ui) { + jQuery(event.target).addClass('b_dd_proxy'); } -function onTreeDragOver(e, targetId) { - console.log('onTreeDragOver', e, targetId); +function onTreeStopDrag(event, ui) { + jQuery(event.target).removeClass('b_dd_proxy'); } -function onTreeDragOut(e, targetId) { - console.log('onTreeDragOut', e, targetId); -} - -function onTreeEndDrag(e, targetId) { - console.log('onTreeEndDrag', e, targetId); -} - -function onTreeAccept(e, targetId) { - console.log('onTreeAccept', e, targetId); -} +function onTreeDrop(event, ui) { + var dragEl = jQuery(ui.draggable[0]); + var el = jQuery(this); + el.css({position:'', width:''}); + var url = el.droppable('option','endUrl'); + if(url.lastIndexOf('/') == (url.length - 1)) { + url = url.substring(0,url.length-1); + } + var dragId = dragEl.attr('id') + var targetId = dragId.substring(2, dragId.length); + url += '%3Atnidle%3A' + targetId; -function onTreeDrop(el, targetId) { - console.log('onTreeDrop', el, targetId); + var droppableId = el.attr('id'); + if(droppableId.indexOf('ds') == 0) { + url += '%3Asne%3Ayes'; + } else if(droppableId.indexOf('dt') == 0) { + url += '%3Asne%3Aend'; + } + frames['oaa0'].location.href = url + '/'; } -function treeAcceptDrop(el, targetId) { - console.log('treeAcceptDrop', el); - return false; -} +function treeAcceptDrop(el) { + var dragEl = jQuery(el); + var dragElId = dragEl.attr('id'); + var dropEl = jQuery(this) + var dropElId = dropEl.attr('id');//dropped -/*Ext.namespace('Ext.fxMenuTree'); -Ext.fxMenuTree.DDProxy = function(id, group, dropUrl, overUrl) { - var config = {dragData:{end:dropUrl, over:overUrl}, scope:this }; - Ext.fxMenuTree.DDProxy.superclass.constructor.call(this, id, group, config); -}; - -Ext.extend(Ext.fxMenuTree.DDProxy, Ext.dd.DDProxy, { - startDrag: function(x, y) { - var dragEl = Ext.get(this.getDragEl()); - var el = Ext.get(this.getEl()); - dragEl.applyStyles({border:'','z-index':2000}); - dragEl.update(el.dom.innerHTML); - dragEl.addClass(el.dom.className + ' b_dd_proxy'); - }, - - onDragOver: function(e, targetId) { - if(targetId && (targetId.indexOf('dd') == 0 || targetId.indexOf('ds') == 0 || targetId.indexOf('dt') == 0 || targetId.indexOf('da') == 0)) { - var target = Ext.get(targetId); - this.lastTarget = target; - if(this.config.dragData.over && this.config.dragData.over.length > 0) { - var url = this.config.dragData.over + "/"; - var dropId = this.id.substring(2,this.id.length); - var targetId = this.lastTarget.id.substring(2,this.lastTarget.id.length); - var sibling = ""; - if(this.lastTarget.id.indexOf('ds') == 0) { - sibling = "yes"; - } else if(this.lastTarget.id.indexOf('dt') == 0) { - sibling = "end"; - } - //use prototype for the Ajax call - var stat = new Ajax.Request(url, { - method: 'get', - asynchronous : false, - parameters : { nidle:dropId, tnidle:targetId, sne:sibling }, - onSuccess: function(transport) { - //use prototype to parse JSON response - var response = transport.responseText.evalJSON(); - if(response.dropAllowed) { - target.addClass('b_dd_over'); - } else { - target.removeClass('b_dd_over'); - } - } - }); - } else { - target.addClass('b_dd_over'); - } - } - }, + if(dragElId.indexOf('dd') == 0 || dragElId.indexOf('ds') == 0 || + dragElId.indexOf('dt') == 0 || dragElId.indexOf('da') == 0 || + dragElId.indexOf('row') == 0) { - onDragOut: function(e, targetId) { - if(targetId && (targetId.indexOf('dd') == 0 || targetId.indexOf('ds') == 0 || targetId.indexOf('dt') == 0 || targetId.indexOf('da') == 0)) { - var target = Ext.get(targetId); - this.lastTarget = null; - target.removeClass('b_dd_over'); - } - }, + var dragNodeId = dragElId.substring(2, dragElId.length); + var dropId = dropElId.substring(2, dropElId.length); + if(dragNodeId == dropId) { + return false; + } - endDrag: function() { - var dragEl = Ext.get(this.getDragEl()); - var el = Ext.get(this.getEl()); - if(this.lastTarget) { - Ext.get(this.lastTarget).appendChild(el); - el.applyStyles({position:'', width:''}); - var url = this.config.dragData.end; - if(url.lastIndexOf('/') == (url.length - 1)) { - url = url.substring(0,url.length-1); - } - var targetId = this.lastTarget.id.substring(2,url.length); - url += '%3Atnidle%3A' + targetId; - if(this.lastTarget.id.indexOf('ds') == 0) { - url += '%3Asne%3Ayes'; - } else if(this.lastTarget.id.indexOf('dt') == 0) { - url += '%3Asne%3Aend'; - } - frames['oaa0'].location.href = url + '/'; - } + var dropAllowed = dropEl.data(dragNodeId); + if(dropAllowed === undefined) { + var sibling = ""; + if(dragElId.indexOf('ds') == 0) { + sibling = "yes"; + } else if(dragElId.indexOf('dt') == 0) { + sibling = "end"; + } + var url = dropEl.droppable('option', 'fbUrl'); + //use prototype for the Ajax call + jQuery.ajax(url, { + method:'GET', + data: { nidle:dragNodeId, tnidle:dropId, sne:sibling }, + dataType: "json", + async: false, + success: function(data) { + dropAllowed = data.dropAllowed; + } + }); + dropEl.data(dragNodeId, dropAllowed); + } + return dropAllowed; } -});*/ \ No newline at end of file + return false; +} \ No newline at end of file diff --git a/src/main/java/org/olat/core/gui/control/floatingresizabledialog/_content/index.html b/src/main/java/org/olat/core/gui/control/floatingresizabledialog/_content/index.html index df37eb307ca..55fab6e33d9 100644 --- a/src/main/java/org/olat/core/gui/control/floatingresizabledialog/_content/index.html +++ b/src/main/java/org/olat/core/gui/control/floatingresizabledialog/_content/index.html @@ -14,7 +14,13 @@ jQuery('#${panelName}').dialog({ title: '$title', width: ${width}, - height: ${height} + height: ${height}, + position: [$offsetX, $offsetY], + stack: true, + close: function() { + o_beforeserver(); + $r.javaScriptBgCommand("close") + } }); }); /* ]]> */ diff --git a/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/_content/autocomplete.html b/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/_content/autocomplete.html index 91ac044ada8..488099c6dec 100644 --- a/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/_content/autocomplete.html +++ b/src/main/java/org/olat/core/gui/control/generic/ajax/autocompletion/_content/autocomplete.html @@ -38,6 +38,9 @@ jQuery(function(){ })); } }); + }, + open: function() { + jQuery(this).autocomplete('widget').css('z-index', 10000); }, select: function( event, ui ) { $r.javaScriptBgCommand("select") + '?key=' + ui.item.value; diff --git a/src/main/java/org/olat/core/gui/control/generic/textmarker/_content/tmContainer.html b/src/main/java/org/olat/core/gui/control/generic/textmarker/_content/tmContainer.html index 3417428b65a..2bf04b03d71 100644 --- a/src/main/java/org/olat/core/gui/control/generic/textmarker/_content/tmContainer.html +++ b/src/main/java/org/olat/core/gui/control/generic/textmarker/_content/tmContainer.html @@ -30,7 +30,8 @@ $r.render("tmComponent") var url = b_glossaryTermMapperPath + "/" + glossaryId + "/terms.js"; jQuery.ajax(url, { async: false, - encoding : 'UTF-8', method : 'get', + encoding : 'UTF-8', + method : 'get', success: function(data, textStatus, jqXHR) { jQuery(document).data("o_glossaries")[glossaryId] = eval(jqXHR.responseText); } diff --git a/src/main/java/org/olat/core/gui/control/winmgr/_content/serverpart.html b/src/main/java/org/olat/core/gui/control/winmgr/_content/serverpart.html index af847d97dd7..87361c50319 100644 --- a/src/main/java/org/olat/core/gui/control/winmgr/_content/serverpart.html +++ b/src/main/java/org/olat/core/gui/control/winmgr/_content/serverpart.html @@ -2,17 +2,7 @@ <div style="height:0px"> <script type="text/javascript"> /* <![CDATA[ */ - -function log(s) { - try { - if (!window.ActiveXObject) { - ##console.log(s); - } - } catch (me) {} -} - var stopped = true; - function initPolling () { o_info.lastClickTime = new Date().getTime(); pollgrowth = 0; @@ -41,18 +31,13 @@ var pollError = 0; var pollgrowth = 0; var timestampLastPoll = new Date().getTime(); - // set timestamp cookie to inform other windows that they are outdated var sbtimestamp = new Date().getTime(); var sbcookie = 'OLAT-UI-TIMESTAMP'; if (window.opener == null) document.cookie = sbcookie+'='+sbtimestamp+'; path=/'; -// - -## ## starts an interval which checks every second whether to send an poll request based on ## the pollperiod or not 10 min after the last click the poll process stops -## function tick () { //console.log("starting poller with interval: "+pollperiod); @@ -103,13 +88,11 @@ function tick () { }); } - jQuery(document).ready(initPolling); #if ($isAdmin) ##check whether polling started or not. Wrap in ext makes it more stable -jQuery(document).ready( - function() { +jQuery(function() { setTimeout( function(){ if (!o_info.ajaxpp) { showMessageBox('error', 'error', 'Some core functionality could not be started. Please log out of OLAT and login again. '); if(jQuery(document).ooLog().isDebugEnabled()) jQuery(document).ooLog('debug','Could not initialize polling!', "serverpart.html"); @@ -149,7 +132,5 @@ JSON <iframe src="javascript:false;document.write('');" name="$iframeName" clas </div> #end ## below we need to provide an action attribute to make it html 4.01 transitional -##fxdiff <form id="o_oaap" method="post" action="#" onsubmit="return false" target="oaa0"><input type="hidden" name="v"></form> -</div> - +</div> \ No newline at end of file diff --git a/src/main/java/org/olat/core/gui/media/ServletUtil.java b/src/main/java/org/olat/core/gui/media/ServletUtil.java index 757dfc49cf2..9c01c9d7cd0 100644 --- a/src/main/java/org/olat/core/gui/media/ServletUtil.java +++ b/src/main/java/org/olat/core/gui/media/ServletUtil.java @@ -36,6 +36,7 @@ import java.io.PrintWriter; import java.io.Reader; import java.util.ArrayList; import java.util.Collections; +import java.util.Enumeration; import java.util.List; import java.util.StringTokenizer; @@ -60,6 +61,17 @@ import org.olat.core.util.session.UserSessionManager; public class ServletUtil { private static final OLog log = Tracing.createLoggerFor(ServletUtil.class); + + + public static void printOutRequestParameter(HttpServletRequest request) { + for(Enumeration<String> names=request.getParameterNames(); names.hasMoreElements(); ) { + String name = names.nextElement(); + System.out.println(name + " :: " + request.getParameter(name)); + } + } + + + /** * @param httpReq * @param httpResp diff --git a/src/main/java/org/olat/core/gui/render/intercept/debug/GuiDebugDispatcherController.java b/src/main/java/org/olat/core/gui/render/intercept/debug/GuiDebugDispatcherController.java index 0f9104a61bf..1334055c681 100644 --- a/src/main/java/org/olat/core/gui/render/intercept/debug/GuiDebugDispatcherController.java +++ b/src/main/java/org/olat/core/gui/render/intercept/debug/GuiDebugDispatcherController.java @@ -193,7 +193,7 @@ public class GuiDebugDispatcherController extends BasicController implements Int + "<div>" + " <span id=\"o_guidebugst" + did - + "\" onmouseover=\"o_debu_show(this.parentNode.parentNode, $('o_guidebugtt" + + "\" onmouseover=\"o_debu_show(this.parentNode.parentNode, jQuery('#o_guidebugtt" + did + "'))\" " + diff --git a/src/main/java/org/olat/course/editor/EditorMainController.java b/src/main/java/org/olat/course/editor/EditorMainController.java index 9bff74b71f8..7255d1ddf69 100644 --- a/src/main/java/org/olat/course/editor/EditorMainController.java +++ b/src/main/java/org/olat/course/editor/EditorMainController.java @@ -261,7 +261,8 @@ public class EditorMainController extends MainLayoutBasicController implements G menuTree = new MenuTree("luTree"); menuTree.setExpandSelectedNode(false); //fxdiff VCRP-9: drag and drop in menu tree - menuTree.setDragAndDropEnabled(true); + menuTree.setDragEnabled(true); + menuTree.setDropEnabled(true); menuTree.setDragAndDropGroup("courseEditorGroup"); diff --git a/src/main/java/org/olat/course/groupsandrights/GroupsAndRightsController.java b/src/main/java/org/olat/course/groupsandrights/GroupsAndRightsController.java index 80ce343baf4..6c4c3cfa474 100644 --- a/src/main/java/org/olat/course/groupsandrights/GroupsAndRightsController.java +++ b/src/main/java/org/olat/course/groupsandrights/GroupsAndRightsController.java @@ -27,6 +27,7 @@ import java.util.Map; import java.util.UUID; import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; import org.olat.core.gui.components.form.flexible.FormItemContainer; @@ -266,7 +267,7 @@ public class GroupsAndRightsController extends FormBasicController { } @Override - public void load(int firstResult, int maxResults) { + public void load(int firstResult, int maxResults, SortKey... sortedCol) { //already loaded } diff --git a/src/main/java/org/olat/course/member/wizard/ImportMemberOverviewDataModel.java b/src/main/java/org/olat/course/member/wizard/ImportMemberOverviewDataModel.java index b988925e69d..917fca8dbf2 100644 --- a/src/main/java/org/olat/course/member/wizard/ImportMemberOverviewDataModel.java +++ b/src/main/java/org/olat/course/member/wizard/ImportMemberOverviewDataModel.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.List; import java.util.Locale; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModel; import org.olat.core.gui.components.table.DefaultTableDataModel; @@ -64,7 +65,7 @@ public class ImportMemberOverviewDataModel extends DefaultTableDataModel<Identit } @Override - public void load(int firstResult, int maxResults) { + public void load(int firstResult, int maxResults, SortKey... orderBy) { //already loaded } diff --git a/src/main/java/org/olat/course/nodes/st/_content/run.html b/src/main/java/org/olat/course/nodes/st/_content/run.html index 72983ec941a..e274586644f 100644 --- a/src/main/java/org/olat/course/nodes/st/_content/run.html +++ b/src/main/java/org/olat/course/nodes/st/_content/run.html @@ -77,7 +77,7 @@ ## Add event JS event listeners for click and keydown events on all the gotonodes links <script type="text/javascript"> /* <![CDATA[ */ -jQuery(document).ready(function() { +jQuery(function() { jQuery('div.o_course_run_toc a.o_gotoNode').each(function(n,m) { jQuery(m).on('keydown click', function(){window.scrollTo(0,0);}); }); diff --git a/src/main/java/org/olat/course/tree/CourseEditorTreeModel.java b/src/main/java/org/olat/course/tree/CourseEditorTreeModel.java index 2959b03a2b6..a818bf40d91 100644 --- a/src/main/java/org/olat/course/tree/CourseEditorTreeModel.java +++ b/src/main/java/org/olat/course/tree/CourseEditorTreeModel.java @@ -40,9 +40,11 @@ import org.olat.course.nodes.CourseNode; * Description:<br> * * @author Felix Jost + * @Author srosse, stephane.rosse@frentix.com, http://www.frentix.com */ -//fxdiff VCRP-9: drag and drop in menu tree public class CourseEditorTreeModel extends GenericTreeModel implements DnDTreeModel { + + private static final long serialVersionUID = 7021325125068249016L; private long latestPublishTimestamp = -1; private long highestNodeId; // start at Long.MAX_VALUE - 1000000; if set to // zero -> meaning we read from an old @@ -233,14 +235,12 @@ public class CourseEditorTreeModel extends GenericTreeModel implements DnDTreeMo } } return cloneCn; - } - //fxdiff VCRP-9: drag and drop in menu tree @Override public boolean canDrop(TreeNode droppedNode, TreeNode targetNode, boolean sibling) { if(droppedNode == null || targetNode == null) return false; - + CourseEditorTreeNode selectedNode = getCourseEditorNodeById(droppedNode.getIdent()); CourseEditorTreeNode parentNode = getCourseEditorNodeById(targetNode.getIdent()); if(selectedNode == null || parentNode == null) return false; @@ -255,7 +255,6 @@ public class CourseEditorTreeModel extends GenericTreeModel implements DnDTreeMo return true; } - //fxdiff VCRP-9: drag and drop in menu tree public boolean checkIfIsChild(CourseEditorTreeNode prospectChild, CourseEditorTreeNode sourceTree) { if (sourceTree.getIdent().equals(prospectChild.getIdent())) { return true; diff --git a/src/main/java/org/olat/group/ui/main/EditMembershipController.java b/src/main/java/org/olat/group/ui/main/EditMembershipController.java index 9595f61bce8..1f44f33dd60 100644 --- a/src/main/java/org/olat/group/ui/main/EditMembershipController.java +++ b/src/main/java/org/olat/group/ui/main/EditMembershipController.java @@ -28,6 +28,7 @@ import java.util.UUID; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.persistence.PersistenceHelper; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItemContainer; import org.olat.core.gui.components.form.flexible.elements.MultipleSelectionElement; @@ -378,7 +379,7 @@ public class EditMembershipController extends FormBasicController { } @Override - public void load(int firstResult, int maxResults) { + public void load(int firstResult, int maxResults, SortKey... sortedCol) { //already loaded } diff --git a/src/main/java/org/olat/gui/demo/guidemo/GuiDemoWindowControlController.java b/src/main/java/org/olat/gui/demo/guidemo/GuiDemoWindowControlController.java index 0da4e156a09..1e7e1076bc1 100644 --- a/src/main/java/org/olat/gui/demo/guidemo/GuiDemoWindowControlController.java +++ b/src/main/java/org/olat/gui/demo/guidemo/GuiDemoWindowControlController.java @@ -38,8 +38,8 @@ import org.olat.core.gui.dev.controller.SourceViewController; public class GuiDemoWindowControlController extends BasicController { - VelocityContainer vcMain; - GuiDemoPushPopController pushpop; + private VelocityContainer vcMain; + private GuiDemoPushPopController pushpop; private Link infoButton; private Link warnButton; private Link errorButton; @@ -57,21 +57,17 @@ public class GuiDemoWindowControlController extends BasicController { //add source view control Controller sourceview = new SourceViewController(ureq, wControl, this.getClass(), vcMain); vcMain.put("sourceview", sourceview.getInitialComponent()); - - this.putInitialPanel(vcMain); + putInitialPanel(vcMain); } public void event(UserRequest ureq, Component source, Event event) { if (source == infoButton){ - this.showInfo("guidemo.window.control.info.message", ""); - } - else if (source == warnButton){ - this.showWarning("guidemo.window.control.warn.message", ""); - } - else if (source == errorButton){ - this.showError("guidemo.window.control.error.message", ""); - } - else if (source == pushButton){ + showInfo("guidemo.window.control.info.message", ""); + } else if (source == warnButton){ + showWarning("guidemo.window.control.warn.message", ""); + } else if (source == errorButton){ + showError("guidemo.window.control.error.message", ""); + } else if (source == pushButton){ pushpop = new GuiDemoPushPopController(ureq, getWindowControl()); pushpop.addControllerListener(this); getWindowControl().pushToMainArea(pushpop.getInitialComponent()); @@ -81,10 +77,9 @@ public class GuiDemoWindowControlController extends BasicController { public void event(UserRequest ureq, Controller source, Event event) { if (source == pushpop) { getWindowControl().pop(); - this.showInfo("guidemo.window.control.pushpop", ""); + showInfo("guidemo.window.control.pushpop", ""); } } protected void doDispose() {} - -} +} \ No newline at end of file diff --git a/src/main/java/org/olat/instantMessaging/ui/ChatController.java b/src/main/java/org/olat/instantMessaging/ui/ChatController.java index 1fcfb488f65..982fd6b2b5d 100644 --- a/src/main/java/org/olat/instantMessaging/ui/ChatController.java +++ b/src/main/java/org/olat/instantMessaging/ui/ChatController.java @@ -304,6 +304,11 @@ public class ChatController extends BasicController implements GenericEventListe } private void appendToMessageHistory(InstantMessage message, boolean focus) { + if(message == null || message.getBody() == null) { + System.out.println(); + } + + String m = message.getBody().replaceAll("<br/>\n", "\r\n"); m = prepareMsgBody(m.replaceAll("<", "<").replaceAll(">", ">")).replaceAll("\r\n", "<br/>\n"); String creationDate = formatter.formatTime(message.getCreationDate()); diff --git a/src/main/java/org/olat/instantMessaging/ui/_content/chatMsgField.html b/src/main/java/org/olat/instantMessaging/ui/_content/chatMsgField.html index 5710b74d2d2..909e6fa1058 100644 --- a/src/main/java/org/olat/instantMessaging/ui/_content/chatMsgField.html +++ b/src/main/java/org/olat/instantMessaging/ui/_content/chatMsgField.html @@ -27,9 +27,13 @@ <script type="text/javascript"> /* <![CDATA[ */ //setTimeout used because otherwise it would not work the first time the chatwindow is displayed - setTimeout(function() { - var d = $("$id"); - if (d && d.offsetHeight < d.scrollHeight) d.scrollTop = d.scrollHeight + 13; - }, 42); + jQuery(function() { + jQuery('#$id').each(function(index, el) { + var chatEl = jQuery(el); + if(chatEl.offset().top < chatEl.height()) { + chatEl.scrollTop(chatEl.height() + 13); + } + }) + }); /* ]]> */ </script> \ No newline at end of file diff --git a/src/main/java/org/olat/modules/qpool/QuestionPoolService.java b/src/main/java/org/olat/modules/qpool/QuestionPoolService.java index 17cafef8357..84860bdd3d1 100644 --- a/src/main/java/org/olat/modules/qpool/QuestionPoolService.java +++ b/src/main/java/org/olat/modules/qpool/QuestionPoolService.java @@ -21,6 +21,7 @@ package org.olat.modules.qpool; import java.util.List; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.id.Identity; /** @@ -36,7 +37,7 @@ public interface QuestionPoolService { public int getNumOfItemsInPool(Pool pool); - public List<QuestionItem> getItemsOfPool(Pool pool, int firstResult, int maxResults); + public List<QuestionItem> getItemsOfPool(Pool pool, int firstResult, int maxResults, SortKey... orderBy); public int getNumOfFavoritItems(Identity identity); diff --git a/src/main/java/org/olat/modules/qpool/manager/PoolDAO.java b/src/main/java/org/olat/modules/qpool/manager/PoolDAO.java index 4e1846909c4..1449d520c69 100644 --- a/src/main/java/org/olat/modules/qpool/manager/PoolDAO.java +++ b/src/main/java/org/olat/modules/qpool/manager/PoolDAO.java @@ -25,6 +25,8 @@ import java.util.List; import javax.persistence.TypedQuery; import org.olat.core.commons.persistence.DB; +import org.olat.core.commons.persistence.PersistenceHelper; +import org.olat.core.commons.persistence.SortKey; import org.olat.modules.qpool.Pool; import org.olat.modules.qpool.QuestionItem; import org.olat.modules.qpool.model.PoolImpl; @@ -88,9 +90,11 @@ public class PoolDAO { .getSingleResult().intValue(); } - public List<QuestionItem> getItemsOfPool(Pool pool, int firstResult, int maxResults) { + public List<QuestionItem> getItemsOfPool(Pool pool, int firstResult, int maxResults, SortKey... orderBy) { StringBuilder sb = new StringBuilder(); sb.append("select pool2item.item from qpool2item pool2item where pool2item.pool.key=:poolKey"); + PersistenceHelper.appendGroupBy(sb, "pool2item.item", orderBy); + TypedQuery<QuestionItem> query = dbInstance.getCurrentEntityManager() .createQuery(sb.toString(), QuestionItem.class) .setParameter("poolKey", pool.getKey()); diff --git a/src/main/java/org/olat/modules/qpool/manager/QuestionPoolServiceImpl.java b/src/main/java/org/olat/modules/qpool/manager/QuestionPoolServiceImpl.java index 83c4174376b..2119c8b311c 100644 --- a/src/main/java/org/olat/modules/qpool/manager/QuestionPoolServiceImpl.java +++ b/src/main/java/org/olat/modules/qpool/manager/QuestionPoolServiceImpl.java @@ -23,6 +23,7 @@ import java.util.ArrayList; import java.util.List; import org.olat.core.commons.persistence.DB; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.id.Identity; import org.olat.modules.qpool.Pool; import org.olat.modules.qpool.QuestionItem; @@ -83,8 +84,8 @@ public class QuestionPoolServiceImpl implements QuestionPoolService, Application } @Override - public List<QuestionItem> getItemsOfPool(Pool pool, int firstResult, int maxResults) { - return poolDao.getItemsOfPool(pool, firstResult, maxResults); + public List<QuestionItem> getItemsOfPool(Pool pool, int firstResult, int maxResults, SortKey... orderBy) { + return poolDao.getItemsOfPool(pool, firstResult, maxResults, orderBy); } @Override diff --git a/src/main/java/org/olat/modules/qpool/ui/ItemRowsSource.java b/src/main/java/org/olat/modules/qpool/ui/ItemRowsSource.java index 27635e1224e..1415ab92166 100644 --- a/src/main/java/org/olat/modules/qpool/ui/ItemRowsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/ItemRowsSource.java @@ -21,6 +21,8 @@ package org.olat.modules.qpool.ui; import java.util.List; +import org.olat.core.commons.persistence.SortKey; + /** * * Initial date: 12.02.2013<br> @@ -31,5 +33,5 @@ public interface ItemRowsSource { public int getRowCount(); - public List<QuestionItemRow> getRows(int firstResult, int maxResults); + public List<QuestionItemRow> getRows(int firstResult, int maxResults, SortKey... orderBy); } diff --git a/src/main/java/org/olat/modules/qpool/ui/MarkedItemsSource.java b/src/main/java/org/olat/modules/qpool/ui/MarkedItemsSource.java index ac551a46a06..19068ed9b73 100644 --- a/src/main/java/org/olat/modules/qpool/ui/MarkedItemsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/MarkedItemsSource.java @@ -22,6 +22,7 @@ package org.olat.modules.qpool.ui; import java.util.List; import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.id.Identity; import org.olat.modules.qpool.QuestionItem; import org.olat.modules.qpool.QuestionPoolService; @@ -48,7 +49,7 @@ public class MarkedItemsSource implements QuestionItemsSource { } @Override - public List<QuestionItem> getItems(int firstResult, int maxResults) { + public List<QuestionItem> getItems(int firstResult, int maxResults, SortKey... orderBy) { return qpoolService.getFavoritItems(me, firstResult, maxResults); } } diff --git a/src/main/java/org/olat/modules/qpool/ui/MyQuestionItemsSource.java b/src/main/java/org/olat/modules/qpool/ui/MyQuestionItemsSource.java index 62178a549dd..158c8b76d8b 100644 --- a/src/main/java/org/olat/modules/qpool/ui/MyQuestionItemsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/MyQuestionItemsSource.java @@ -22,6 +22,7 @@ package org.olat.modules.qpool.ui; import java.util.List; import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.id.Identity; import org.olat.modules.qpool.QuestionItem; import org.olat.modules.qpool.QuestionPoolService; @@ -48,7 +49,7 @@ public class MyQuestionItemsSource implements QuestionItemsSource { } @Override - public List<QuestionItem> getItems(int firstResult, int maxResults) { + public List<QuestionItem> getItems(int firstResult, int maxResults, SortKey... orderBy) { return qpoolService.getItems(me, firstResult, maxResults); } } diff --git a/src/main/java/org/olat/modules/qpool/ui/PooledItemsSource.java b/src/main/java/org/olat/modules/qpool/ui/PooledItemsSource.java index 59fdd597d06..ab797fc4387 100644 --- a/src/main/java/org/olat/modules/qpool/ui/PooledItemsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/PooledItemsSource.java @@ -22,6 +22,7 @@ package org.olat.modules.qpool.ui; import java.util.List; import org.olat.core.CoreSpringFactory; +import org.olat.core.commons.persistence.SortKey; import org.olat.modules.qpool.Pool; import org.olat.modules.qpool.QuestionItem; import org.olat.modules.qpool.QuestionPoolService; @@ -48,7 +49,7 @@ public class PooledItemsSource implements QuestionItemsSource { } @Override - public List<QuestionItem> getItems(int firstResult, int maxResults) { - return qpoolService.getItemsOfPool(pool, firstResult, maxResults); + public List<QuestionItem> getItems(int firstResult, int maxResults, SortKey... orderBy) { + return qpoolService.getItemsOfPool(pool, firstResult, maxResults, orderBy); } } diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionItemDataModel.java b/src/main/java/org/olat/modules/qpool/ui/QuestionItemDataModel.java index 338c82d84fc..94590a6b8ce 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionItemDataModel.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionItemDataModel.java @@ -22,6 +22,7 @@ package org.olat.modules.qpool.ui; import java.util.ArrayList; import java.util.List; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableColumnModel; import org.olat.core.gui.components.form.flexible.impl.elements.table.FlexiTableDataModel; import org.olat.core.gui.components.table.TableDataModel; @@ -69,7 +70,7 @@ public class QuestionItemDataModel implements FlexiTableDataModel, TableDataMode } @Override - public void load(int firstResult, int maxResults) { + public void load(int firstResult, int maxResults, SortKey... orderBy) { if(rows == null) { rows = new ArrayList<QuestionItemRow>(); } @@ -77,8 +78,7 @@ public class QuestionItemDataModel implements FlexiTableDataModel, TableDataMode for(int i=rows.size(); i<firstResult; i++) { rows.add(null); } - - List<QuestionItemRow> newRows = source.getRows(firstResult, maxResults); + List<QuestionItemRow> newRows = source.getRows(firstResult, maxResults, orderBy); for(int i=0; i<newRows.size(); i++) { int rowIndex = i + firstResult; if(rowIndex < rows.size()) { @@ -89,6 +89,7 @@ public class QuestionItemDataModel implements FlexiTableDataModel, TableDataMode } } + @Override public int getColumnCount() { return columnModel.getColumnCount(); diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionItemsSource.java b/src/main/java/org/olat/modules/qpool/ui/QuestionItemsSource.java index 077e6c00010..3a12113a69b 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionItemsSource.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionItemsSource.java @@ -21,6 +21,7 @@ package org.olat.modules.qpool.ui; import java.util.List; +import org.olat.core.commons.persistence.SortKey; import org.olat.modules.qpool.QuestionItem; /** @@ -33,6 +34,6 @@ public interface QuestionItemsSource { public int getNumOfItems(); - public List<QuestionItem> getItems(int firstResult, int maxResults); + public List<QuestionItem> getItems(int firstResult, int maxResults, SortKey... orderBy); } diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java index e1713ab20db..fe9f202f589 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionListController.java @@ -26,6 +26,7 @@ import java.util.Set; import org.olat.core.CoreSpringFactory; import org.olat.core.commons.fullWebApp.LayoutMain3ColsController; +import org.olat.core.commons.persistence.SortKey; import org.olat.core.commons.services.mark.MarkManager; import org.olat.core.gui.UserRequest; import org.olat.core.gui.components.form.flexible.FormItem; @@ -53,6 +54,8 @@ import org.olat.modules.qpool.QuestionPoolService; */ public class QuestionListController extends FormBasicController implements StackedControllerAware, ItemRowsSource { + private FormLink createList; + private FlexiTableElement itemsTable; private QuestionItemDataModel model; private StackedController stackPanel; @@ -81,13 +84,17 @@ public class QuestionListController extends FormBasicController implements Stack protected void initForm(FormItemContainer formLayout, Controller listener, UserRequest ureq) { //add the table FlexiTableColumnModel columnsModel = FlexiTableDataModelFactory.createFlexiTableColumnModel(); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("item.key")); - columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("item.subject")); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("item.key", true, "key")); + columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("item.subject", true, "subject")); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("select")); columnsModel.addFlexiColumnModel(new DefaultFlexiColumnModel("mark")); model = new QuestionItemDataModel(columnsModel, this); itemsTable = uifactory.addTableElement(ureq, "items", model, 20, getTranslator(), formLayout); + itemsTable.setMultiSelect(true); + + createList = uifactory.addFormLink("create.list", formLayout, Link.BUTTON); + } @Override @@ -104,7 +111,11 @@ public class QuestionListController extends FormBasicController implements Stack protected void formInnerEvent(UserRequest ureq, FormItem source, FormEvent event) { if(source instanceof FormLink) { FormLink link = (FormLink)source; - if("select".equals(link.getCmd())) { + if(link == createList) { + Set<Integer> selections = itemsTable.getMultiSelectedIndex(); + System.out.println(selections.size()); + + } else if("select".equals(link.getCmd())) { QuestionItemRow row = (QuestionItemRow)link.getUserObject(); doSelect(ureq, row.getItem()); } else if("mark".equals(link.getCmd())) { @@ -127,6 +138,14 @@ public class QuestionListController extends FormBasicController implements Stack super.formInnerEvent(ureq, source, event); } + public QuestionItem getQuestionItemAt(int index) { + QuestionItemRow row = model.getObject(index); + if(row != null) { + return row.getItem(); + } + return null; + } + protected void doSelect(UserRequest ureq, QuestionItem item) { QuestionItemDetailsController detailsCtrl = new QuestionItemDetailsController(ureq, getWindowControl(), item); LayoutMain3ColsController mainCtrl = new LayoutMain3ColsController(ureq, getWindowControl(), detailsCtrl); @@ -150,11 +169,11 @@ public class QuestionListController extends FormBasicController implements Stack } @Override - public List<QuestionItemRow> getRows(int firstResult, int maxResults) { + public List<QuestionItemRow> getRows(int firstResult, int maxResults, SortKey... orderBy) { Set<Long> marks = markManager.getMarkResourceIds(getIdentity(), "QuestionItem", Collections.<String>emptyList()); - List<QuestionItem> items = source.getItems(firstResult, maxResults); + List<QuestionItem> items = source.getItems(firstResult, maxResults, orderBy); List<QuestionItemRow> rows = new ArrayList<QuestionItemRow>(items.size()); for(QuestionItem item:items) { QuestionItemRow row = forgeRow(item, marks); diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java index 77458e5b870..6d639d43c1c 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMainEditorController.java @@ -28,9 +28,9 @@ import org.olat.core.gui.components.Component; import org.olat.core.gui.components.panel.Panel; import org.olat.core.gui.components.stack.StackedController; import org.olat.core.gui.components.stack.StackedControllerAware; -import org.olat.core.gui.components.tree.GenericTreeModel; import org.olat.core.gui.components.tree.GenericTreeNode; import org.olat.core.gui.components.tree.MenuTree; +import org.olat.core.gui.components.tree.TreeDropEvent; import org.olat.core.gui.components.tree.TreeModel; import org.olat.core.gui.components.tree.TreeNode; import org.olat.core.gui.control.Event; @@ -40,6 +40,7 @@ import org.olat.core.gui.control.generic.dtabs.Activateable2; import org.olat.core.id.context.ContextEntry; import org.olat.core.id.context.StateEntry; import org.olat.modules.qpool.Pool; +import org.olat.modules.qpool.QuestionItem; import org.olat.modules.qpool.QuestionPoolService; /** @@ -57,6 +58,7 @@ public class QuestionPoolMainEditorController extends BasicController implements private QuestionsController myQuestionsCtrl; private QuestionsController markedQuestionsCtrl; private QuestionsController selectedPoolCtrl; + private QuestionsController currentCtrl; private LayoutMain3ColsController columnLayoutCtr; private final QuestionPoolService qpoolService; @@ -69,6 +71,7 @@ public class QuestionPoolMainEditorController extends BasicController implements menuTree = new MenuTree("qpoolTree"); menuTree.setTreeModel(buildTreeModel()); menuTree.setSelectedNode(menuTree.getTreeModel().getRootNode()); + menuTree.setDropEnabled(true); menuTree.addListener(this); menuTree.setRootVisible(false); @@ -94,15 +97,23 @@ public class QuestionPoolMainEditorController extends BasicController implements @Override protected void event(UserRequest ureq, Component source, Event event) { if(menuTree == source) { - TreeNode node = menuTree.getSelectedNode(); - Object uNode = node.getUserObject(); - if("menu.database.my".equals(uNode)) { - doSelectMyQuestions(ureq); - } else if("menu.database.favorit".equals(uNode)) { - doSelectMarkedQuestions(ureq); - } else if(uNode instanceof Pool) { - Pool pool = (Pool)uNode; - doSelect(ureq, pool); + if(event instanceof TreeDropEvent) { + TreeDropEvent e = (TreeDropEvent)event; + String targetId = e.getTargetNodeId(); + String dropId = e.getDroppedNodeId(); + //drop id w_o_fi1000002357-4 + doDrop(targetId, dropId); + } else { + TreeNode node = menuTree.getSelectedNode(); + Object uNode = node.getUserObject(); + if("menu.database.my".equals(uNode)) { + doSelectMyQuestions(ureq); + } else if("menu.database.favorit".equals(uNode)) { + doSelectMarkedQuestions(ureq); + } else if(uNode instanceof Pool) { + Pool pool = (Pool)uNode; + doSelect(ureq, pool); + } } } } @@ -112,12 +123,26 @@ public class QuestionPoolMainEditorController extends BasicController implements // } + private void doDrop(String targetId, String dropId) { + try { + int lastIndex = dropId.lastIndexOf('-'); + String rowStr = dropId.substring(lastIndex+1, dropId.length()); + int row = Integer.parseInt(rowStr); + + QuestionItem item = currentCtrl.getQuestionAt(row); + System.out.println("Item: " + item); + } catch (Exception e) { + logError("Cannot drop with id: " + dropId, e); + } + } + private void doSelectMyQuestions(UserRequest ureq) { if(myQuestionsCtrl == null) { myQuestionsCtrl = new QuestionsController(ureq, getWindowControl(), new MyQuestionItemsSource(getIdentity())); myQuestionsCtrl.setStackedController(stackPanel); listenTo(myQuestionsCtrl); } + currentCtrl = myQuestionsCtrl; content.setContent(myQuestionsCtrl.getInitialComponent()); } @@ -127,6 +152,7 @@ public class QuestionPoolMainEditorController extends BasicController implements markedQuestionsCtrl.setStackedController(stackPanel); listenTo(markedQuestionsCtrl); } + currentCtrl = markedQuestionsCtrl; content.setContent(markedQuestionsCtrl.getInitialComponent()); } @@ -136,11 +162,12 @@ public class QuestionPoolMainEditorController extends BasicController implements selectedPoolCtrl.setStackedController(stackPanel); listenTo(selectedPoolCtrl); } + currentCtrl = selectedPoolCtrl; content.setContent(selectedPoolCtrl.getInitialComponent()); } private TreeModel buildTreeModel() { - GenericTreeModel gtm = new GenericTreeModel(); + QuestionPoolMenuTreeModel gtm = new QuestionPoolMenuTreeModel(); GenericTreeNode rootNode = new GenericTreeNode(translate("topnav.qpool"), "topnav.qpool.alt"); rootNode.setCssClass("o_sel_qpool_home"); gtm.setRootNode(rootNode); diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMenuTreeModel.java b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMenuTreeModel.java new file mode 100644 index 00000000000..5b89cde2980 --- /dev/null +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionPoolMenuTreeModel.java @@ -0,0 +1,40 @@ +/** + * <a href="http://www.openolat.org"> + * OpenOLAT - Online Learning and Training</a><br> + * <p> + * Licensed under the Apache License, Version 2.0 (the "License"); <br> + * you may not use this file except in compliance with the License.<br> + * You may obtain a copy of the License at the + * <a href="http://www.apache.org/licenses/LICENSE-2.0">Apache homepage</a> + * <p> + * Unless required by applicable law or agreed to in writing,<br> + * software distributed under the License is distributed on an "AS IS" BASIS, <br> + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. <br> + * See the License for the specific language governing permissions and <br> + * limitations under the License. + * <p> + * Initial code contributed and copyrighted by<br> + * frentix GmbH, http://www.frentix.com + * <p> + */ +package org.olat.modules.qpool.ui; + +import org.olat.core.gui.components.tree.DnDTreeModel; +import org.olat.core.gui.components.tree.GenericTreeModel; +import org.olat.core.gui.components.tree.TreeNode; + +/** + * + * Initial date: 15.02.2013<br> + * @author srosse, stephane.rosse@frentix.com, http://www.frentix.com + * + */ +public class QuestionPoolMenuTreeModel extends GenericTreeModel implements DnDTreeModel{ + + private static final long serialVersionUID = -665560407090871912L; + + @Override + public boolean canDrop(TreeNode droppedNode, TreeNode targetNode, boolean sibling) { + return !sibling; + } +} diff --git a/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java b/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java index 51f0a95dd34..9c21c1192c5 100644 --- a/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java +++ b/src/main/java/org/olat/modules/qpool/ui/QuestionsController.java @@ -71,6 +71,10 @@ public class QuestionsController extends BasicController implements StackedContr protected void doDispose() { // } + + public QuestionItem getQuestionAt(int index) { + return listCtrl.getQuestionItemAt(index); + } @Override public void setStackedController(StackedController stackPanel) { diff --git a/src/main/java/org/olat/modules/qpool/ui/_content/item_list.html b/src/main/java/org/olat/modules/qpool/ui/_content/item_list.html index d444cccd7bb..c39cf4004bf 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_content/item_list.html +++ b/src/main/java/org/olat/modules/qpool/ui/_content/item_list.html @@ -1 +1,5 @@ -$r.render("items") \ No newline at end of file +$r.render("items") +<div> +$r.render("create.list") + +</div> \ No newline at end of file diff --git a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties index aec3469eaa8..6e474b54242 100644 --- a/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties +++ b/src/main/java/org/olat/modules/qpool/ui/_i18n/LocalStrings_de.properties @@ -1,4 +1,5 @@ #Mon Mar 02 09:54:04 CET 2009 +create.list=Liste erstellen topnav.qpool=Q-Pool topnav.qpool.alt=Question pools menu.database=Fragendatenbank diff --git a/src/main/webapp/static/js/functions.js b/src/main/webapp/static/js/functions.js index 3e5f3477f89..0a553dd76b1 100644 --- a/src/main/webapp/static/js/functions.js +++ b/src/main/webapp/static/js/functions.js @@ -950,19 +950,18 @@ function o_ffRegisterSubmit(formId, submElmId){ function showInfoBox(title, content){ // Factory method to create message box var uuid = Math.floor(Math.random() * 0x10000 /* 65536 */).toString(16); - var info = '<div id="' + uuid + '" class="b_msg-div msg"><div class="b_msg_info_content b_msg_info_winicon o_sel_info_message"><h3>' + var info = '<div id="' + uuid + '" class="b_msg-div msg" style="display:none;"><div class="b_msg_info_content b_msg_info_winicon o_sel_info_message"><h3>' + title + '</h3>' + content + '<br/><br/></div></div>'; var msgCt = jQuery('#b_page').prepend(info); // Hide message automatically - var time = (content.length > 70) ? 6000 : 4000; - time = (content.length > 150) ? 8000 : time; + var time = (content.length > 150) ? 8000 : ((content.length > 70) ? 6000 : 4000); jQuery('#' + uuid).slideDown(300).delay(time).slideUp(300); // Visually remove message box immediately when user clicks on it // The ghost event from above is triggered anyway. jQuery('#' + uuid).click(function(e) { jQuery('#' + uuid).remove(); }); - // + // Help GC, prevent cyclic reference from on-click closure (OLAT-5755) title = null; content = null; @@ -978,12 +977,21 @@ function showMessageBox(type, title, message, buttonCallback){ if(type == 'info'){ showInfoBox(title, message) } else { - jQuery('<p>' + message + '</p>').dialog({ - height: 140, + var prefix; + if("warn" == type) { + prefix = '<div><div class="b_msg_info_content b_msg_warn_winicon">'; + } else if("error" == type) { + prefix = '<div><div class="b_msg_info_content b_msg_error_winicon">'; + } else { + prefix = '<div><div>'; + } + jQuery(prefix + '<p>' + message + '</p></div></div>').dialog({ + height: 170, + width: 400, modal: true, title: title, resizable:false - }); + }).dialog('open'); } } diff --git a/src/main/webapp/static/js/jquery/jquery-ui.css b/src/main/webapp/static/js/jquery/jquery-ui.css deleted file mode 100644 index dd403d8bab5..00000000000 --- a/src/main/webapp/static/js/jquery/jquery-ui.css +++ /dev/null @@ -1,474 +0,0 @@ -/*! jQuery UI - v1.9.2 - 2012-11-23 -* http://jqueryui.com -* Includes: jquery.ui.core.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.slider.css, jquery.ui.spinner.css, jquery.ui.tabs.css, jquery.ui.tooltip.css, jquery.ui.theme.css -* Copyright 2012 jQuery Foundation and other contributors; Licensed MIT */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { display: none; } -.ui-helper-hidden-accessible { border: 0; clip: rect(0 0 0 0); height: 1px; margin: -1px; overflow: hidden; padding: 0; position: absolute; width: 1px; } -.ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; } -.ui-helper-clearfix:before, .ui-helper-clearfix:after { content: ""; display: table; } -.ui-helper-clearfix:after { clear: both; } -.ui-helper-clearfix { zoom: 1; } -.ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); } - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { cursor: default !important; } - - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; } - - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; } - -.ui-accordion .ui-accordion-header { display: block; cursor: pointer; position: relative; margin-top: 2px; padding: .5em .5em .5em .7em; zoom: 1; } -.ui-accordion .ui-accordion-icons { padding-left: 2.2em; } -.ui-accordion .ui-accordion-noicons { padding-left: .7em; } -.ui-accordion .ui-accordion-icons .ui-accordion-icons { padding-left: 2.2em; } -.ui-accordion .ui-accordion-header .ui-accordion-header-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; } -.ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; overflow: auto; zoom: 1; } - -.ui-autocomplete { - position: absolute; - top: 0; - left: 0; - cursor: default; -} - -/* workarounds */ -* html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */ - -.ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */ -.ui-button, .ui-button:link, .ui-button:visited, .ui-button:hover, .ui-button:active { text-decoration: none; } -.ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */ -button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */ -.ui-button-icons-only { width: 3.4em; } -button.ui-button-icons-only { width: 3.7em; } - -/*button text element */ -.ui-button .ui-button-text { display: block; line-height: 1.4; } -.ui-button-text-only .ui-button-text { padding: .4em 1em; } -.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; } -.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; } -.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; } -.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; } -/* no icon support for input elements, provide padding by default */ -input.ui-button { padding: .4em 1em; } - -/*button icon element(s) */ -.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; } -.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; } -.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; } -.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } -.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; } - -/*button sets*/ -.ui-buttonset { margin-right: 7px; } -.ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; } - -/* workarounds */ -button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */ - -.ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; } -.ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; } -.ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; } -.ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; } -.ui-datepicker .ui-datepicker-prev { left:2px; } -.ui-datepicker .ui-datepicker-next { right:2px; } -.ui-datepicker .ui-datepicker-prev-hover { left:1px; } -.ui-datepicker .ui-datepicker-next-hover { right:1px; } -.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; } -.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; } -.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; } -.ui-datepicker select.ui-datepicker-month-year {width: 100%;} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { width: 49%;} -.ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; } -.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; } -.ui-datepicker td { border: 0; padding: 1px; } -.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; } -.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; } -.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; } -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; } - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { width:auto; } -.ui-datepicker-multi .ui-datepicker-group { float:left; } -.ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; } -.ui-datepicker-multi-2 .ui-datepicker-group { width:50%; } -.ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; } -.ui-datepicker-multi-4 .ui-datepicker-group { width:25%; } -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; } -.ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; } -.ui-datepicker-row-break { clear:both; width:100%; font-size:0em; } - -/* RTL support */ -.ui-datepicker-rtl { direction: rtl; } -.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; } -.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; } -.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; } -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; } -.ui-datepicker-rtl .ui-datepicker-group { float:right; } -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; } -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; } - -/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */ -.ui-datepicker-cover { - position: absolute; /*must have*/ - z-index: -1; /*must have*/ - filter: mask(); /*must have*/ - top: -4px; /*must have*/ - left: -4px; /*must have*/ - width: 200px; /*must have*/ - height: 200px; /*must have*/ -} -.ui-dialog { position: absolute; top: 0; left: 0; padding: .2em; width: 300px; overflow: hidden; } -.ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; } -.ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; } -.ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; } -.ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; } -.ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; } -.ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; } -.ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; } -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; } -.ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; } -.ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; } -.ui-draggable .ui-dialog-titlebar { cursor: move; } - -.ui-menu { list-style:none; padding: 2px; margin: 0; display:block; outline: none; } -.ui-menu .ui-menu { margin-top: -3px; position: absolute; } -.ui-menu .ui-menu-item { margin: 0; padding: 0; zoom: 1; width: 100%; } -.ui-menu .ui-menu-divider { margin: 5px -2px 5px -2px; height: 0; font-size: 0; line-height: 0; border-width: 1px 0 0 0; } -.ui-menu .ui-menu-item a { text-decoration: none; display: block; padding: 2px .4em; line-height: 1.5; zoom: 1; font-weight: normal; } -.ui-menu .ui-menu-item a.ui-state-focus, -.ui-menu .ui-menu-item a.ui-state-active { font-weight: normal; margin: -1px; } - -.ui-menu .ui-state-disabled { font-weight: normal; margin: .4em 0 .2em; line-height: 1.5; } -.ui-menu .ui-state-disabled a { cursor: default; } - -/* icon support */ -.ui-menu-icons { position: relative; } -.ui-menu-icons .ui-menu-item a { position: relative; padding-left: 2em; } - -/* left-aligned */ -.ui-menu .ui-icon { position: absolute; top: .2em; left: .2em; } - -/* right-aligned */ -.ui-menu .ui-menu-icon { position: static; float: right; } - -.ui-progressbar { height:2em; text-align: left; overflow: hidden; } -.ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; } -.ui-resizable { position: relative;} -.ui-resizable-handle { position: absolute;font-size: 0.1px; display: block; } -.ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; } -.ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; } -.ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; } -.ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; } -.ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; } -.ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; } -.ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; } -.ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; } -.ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;} -.ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; } - -.ui-slider { position: relative; text-align: left; } -.ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; } -.ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; } - -.ui-slider-horizontal { height: .8em; } -.ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; } -.ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; } -.ui-slider-horizontal .ui-slider-range-min { left: 0; } -.ui-slider-horizontal .ui-slider-range-max { right: 0; } - -.ui-slider-vertical { width: .8em; height: 100px; } -.ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; } -.ui-slider-vertical .ui-slider-range { left: 0; width: 100%; } -.ui-slider-vertical .ui-slider-range-min { bottom: 0; } -.ui-slider-vertical .ui-slider-range-max { top: 0; } -.ui-spinner { position:relative; display: inline-block; overflow: hidden; padding: 0; vertical-align: middle; } -.ui-spinner-input { border: none; background: none; padding: 0; margin: .2em 0; vertical-align: middle; margin-left: .4em; margin-right: 22px; } -.ui-spinner-button { width: 16px; height: 50%; font-size: .5em; padding: 0; margin: 0; text-align: center; position: absolute; cursor: default; display: block; overflow: hidden; right: 0; } -.ui-spinner a.ui-spinner-button { border-top: none; border-bottom: none; border-right: none; } /* more specificity required here to overide default borders */ -.ui-spinner .ui-icon { position: absolute; margin-top: -8px; top: 50%; left: 0; } /* vertical centre icon */ -.ui-spinner-up { top: 0; } -.ui-spinner-down { bottom: 0; } - -/* TR overrides */ -.ui-spinner .ui-icon-triangle-1-s { - /* need to fix icons sprite */ - background-position:-65px -16px; -} - -.ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ -.ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; } -.ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 0; margin: 1px .2em 0 0; border-bottom: 0; padding: 0; white-space: nowrap; } -.ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; } -.ui-tabs .ui-tabs-nav li.ui-tabs-active { margin-bottom: -1px; padding-bottom: 1px; } -.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-tabs-loading a { cursor: text; } -.ui-tabs .ui-tabs-nav li a, .ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */ -.ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; } - -.ui-tooltip { - padding: 8px; - position: absolute; - z-index: 9999; - max-width: 300px; - -webkit-box-shadow: 0 0 5px #aaa; - box-shadow: 0 0 5px #aaa; -} -/* Fades and background-images don't work well together in IE6, drop the image */ -* html .ui-tooltip { - background-image: none; -} -body .ui-tooltip { border-width: 2px; } - -/* Component containers -----------------------------------*/ -.ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; } -.ui-widget .ui-widget { font-size: 1em; } -.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; } -.ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ url(images/ui-bg_flat_75_ffffff_40x100.png)/*{bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; } -.ui-widget-content a { color: #222222/*{fcContent}*/; } -.ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ url(images/ui-bg_highlight-soft_75_cccccc_1x100.png)/*{bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; } -.ui-widget-header a { color: #222222/*{fcHeader}*/; } - -/* Interaction states -----------------------------------*/ -.ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ url(images/ui-bg_glass_75_e6e6e6_1x400.png)/*{bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; } -.ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; } -.ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ url(images/ui-bg_glass_75_dadada_1x400.png)/*{bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; } -.ui-state-hover a, .ui-state-hover a:hover, .ui-state-hover a:link, .ui-state-hover a:visited { color: #212121/*{fcHover}*/; text-decoration: none; } -.ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ url(images/ui-bg_glass_65_ffffff_1x400.png)/*{bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; } -.ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; } - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ url(images/ui-bg_glass_55_fbf9ee_1x400.png)/*{bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; } -.ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; } -.ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ url(images/ui-bg_glass_95_fef1ec_1x400.png)/*{bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; } -.ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; } -.ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; } -.ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; } -.ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; } -.ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; } -.ui-state-disabled .ui-icon { filter:Alpha(Opacity=35); } /* For IE8 - See #6059 */ - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { width: 16px; height: 16px; background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-content .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsContent}*/; } -.ui-widget-header .ui-icon {background-image: url(images/ui-icons_222222_256x240.png)/*{iconsHeader}*/; } -.ui-state-default .ui-icon { background-image: url(images/ui-icons_888888_256x240.png)/*{iconsDefault}*/; } -.ui-state-hover .ui-icon, .ui-state-focus .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsHover}*/; } -.ui-state-active .ui-icon {background-image: url(images/ui-icons_454545_256x240.png)/*{iconsActive}*/; } -.ui-state-highlight .ui-icon {background-image: url(images/ui-icons_2e83ff_256x240.png)/*{iconsHighlight}*/; } -.ui-state-error .ui-icon, .ui-state-error-text .ui-icon {background-image: url(images/ui-icons_cd0a0a_256x240.png)/*{iconsError}*/; } - -/* positioning */ -.ui-icon-carat-1-n { background-position: 0 0; } -.ui-icon-carat-1-ne { background-position: -16px 0; } -.ui-icon-carat-1-e { background-position: -32px 0; } -.ui-icon-carat-1-se { background-position: -48px 0; } -.ui-icon-carat-1-s { background-position: -64px 0; } -.ui-icon-carat-1-sw { background-position: -80px 0; } -.ui-icon-carat-1-w { background-position: -96px 0; } -.ui-icon-carat-1-nw { background-position: -112px 0; } -.ui-icon-carat-2-n-s { background-position: -128px 0; } -.ui-icon-carat-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -64px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -64px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 0 -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-on { background-position: -96px -144px; } -.ui-icon-radio-off { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; } -.ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; } - -/* Overlays */ -.ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; } -.ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ url(images/ui-bg_flat_0_aaaaaa_40x100.png)/*{bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; } \ No newline at end of file diff --git a/src/main/webapp/static/js/jquery/ui/images/animated-overlay.gif b/src/main/webapp/static/js/jquery/ui/images/animated-overlay.gif new file mode 100755 index 0000000000000000000000000000000000000000..d441f75ebfbdf26a265dfccd670120d25c0a341c GIT binary patch literal 1738 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 ORn*B%u*Wk|4g3!*Rv{Mv literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-bg_flat_0_aaaaaa_40x100.png b/src/main/webapp/static/js/jquery/ui/images/ui-bg_flat_0_aaaaaa_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..f5f09827f693ed896898f5987c03852d9257ecfa GIT binary patch literal 274 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F$P6UUt$JVyq*&4&eH|GXHuiJ>Nn{1`8H<D5 zofy`glX(f`C?tCX`7$t6sWC7#v@kII0tz*}U|=XUU|@Kaz`$TNgMmT3V9u^U8=wSR zfKQ0)s#UB0|NqY_e;H&0W0JSK3*&z#-FrX|zo(01h{pNk1PRu~4M2mKA{ZD;&DzR= zQmQ4c5hW>!C8<`)MX5lF!N|bSSl7Tv*U%uu(89{p%*w!0*TBNcz@S$-o(V-mZhlH; YS|x4`f9js^18QLKboFyt=akR{07GI&KL7v# literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-bg_flat_75_ffffff_40x100.png b/src/main/webapp/static/js/jquery/ui/images/ui-bg_flat_75_ffffff_40x100.png new file mode 100755 index 0000000000000000000000000000000000000000..9e7a5125257e93d8ddab93f0d685db5128eddbd4 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^8bF-F$P6UUt$JVyq*&4&eH|GXHuiJ>Nn{1`8H<D5 zofy`glX(f`C?tCX`7$t6sWC7#v@kII0tz*}U|=XUU|@Kaz`$TNgMmT3V9u^U8=wSp zfKQ0)|NsA&ACW!*<T56CySp%Su*!M>IsBe3jv*T7lM^IZ7dHS+VTxd2EH!H@2TG}y zxJHzuB$lLFB^RXvDF!10Lt|Y7BV9v-5JL+qQ!^_N*TTxc;OS3>ODGz0^HVa@DsgL= TvSdddPy>UftDnm{r-UW|Lm);= literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_55_fbf9ee_1x400.png b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..42f16314434dcbe73286dc902150677b11cad1fa GIT binary patch literal 387 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^DTpg73g ziDBJ2nU_G0Lb6AYF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=Ijcz0ZOnX zdAqy(2LsNC?{|PAy`C<PAs)xyo>$~zaujKJSU)dGAg8%w!(ui^3BziR*I}z84KnZk zu3$dcT+u38*8N!e;3H9&!`|^fF8l9$xy+KAL82{D;y&BeDX(VTsr~jY?gNWg;)$NM z21)PAoE)F1i0Ir6oUvh%QoM=D$IB=9ZMOs$CX2nPbltnn^8-sb7qd;a<BJRbyE6|P z^vHi=vq@A5?s!wF2XvTfiEBhjN@7W>RdP`(kYX@0Ff`URFw!+N2r;y<GBvd_G0-)z mure?xKek>2MMG|WN@iLmZVha+#isx@FnGH9xvX<aXaWE<S%XFZ literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_65_ffffff_1x400.png b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_65_ffffff_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..3d583e1447019eb59071c99b1f4536e8d5d84129 GIT binary patch literal 272 zcmeAS@N?(olHy`uVBq!ia0vp^j6gJjkr~Jeoi<|zkYY)9^mSxl*x1kgCy^DTpg73g ziDBJ2nU_G0Lb6AYF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CF41H=pF><Y92N-zib zgt-3y|9|-r=@URMW0JSK3quF1tOt-I;OXKRqH#VsL4tL0g2)3V24)2Y#&i7wM}Tsw zC9V-ADTyViR>?)FK#IZ0z|dINz)087AjHtZ%GAut$XwUJ!pgv4zNNAfiiX_$l+3hB W+#24c%$^6-z~JfX=d#Wzp$P!6szj~; literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_75_dadada_1x400.png b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_75_dadada_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..84c34ed61fbf1a81d5764e8de47044a393ad0358 GIT binary patch literal 375 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^DTpg73g ziDBJ2nU_G0Lb6AYF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=Ijcz0ZOnX zdAqy(2LsNC?{|PAjh-%!As)xyo?pnzqA22e@%ulq#)UmAlUNoC$oTsDcX-bDlVGUf z5wTe}r|f9Bdu-vt=<Ruo3<nH&4*#%P++)ObD)L+rm$>-!3l}eP^2^y2tgpW7t>QVU z<yQ9kzf;TaRXWSpesSd1-J;Ob(=*@C!qT!;TtAM9pZ~x7<+enL{f~KL`%FJ&>!zOt zI!3j`HKHUXu_V<hxhNG#F&G&b8tWPu=^7e@7+P4Fnpqi{>l#>C85qpBR8~UKkei>9 ZnO2Eg!@HE(^MD!{JYD@<);T3K0RY|qd0GGf literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_75_e6e6e6_1x400.png b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..56d1030895f2e2fa93b7725ea60c58fa3b1c3676 GIT binary patch literal 368 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^DTpg73g ziDBJ2nU_G0Lb6AYF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=Ijcz0ZOnX zdAqy(2LsNC?{|PARh}-6As)xyp5MsXtSHg)aQAt)?CSOc1NP$fdUo~=!drwzw)hEe za`fn0U-jVWtiwLWXH^&&G`bdP+-KYS{hqa(OrcAU)vFbU+WF-Z6B7mH<m4VceJUCi z6}52j;@?NUFWI;;ac1f?!IYGgHyaM~G4b>N7hf*w8d!INoBxwRi;GitEYKCIC9V-A zDTyViR>?)FK#IZ0z|dINz)087AjHtZ%GAut$XwUJ!pgv4zNNAfiiX_$l+3hB+#24c S%$^6-z~JfX=d#Wzp$Pyst#|+c literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_95_fef1ec_1x400.png b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100755 index 0000000000000000000000000000000000000000..c5ae1338e044c572f1c2f1877b519a492c6a9707 GIT binary patch literal 384 zcmeAS@N?(olHy`uVBq!ia0vp^j6gI&fC<Rju*&f~kYY)9^mSxl*x1kgCy^DTpg73g ziDBJ2nU_G0Lb6AYF9SoB8UsT^3j@P1pisjL28L1t28LG&3=CE?7#PG0=Ijcz0ZOnX zdAqy(2LsNC?{|PAU7jwEAs)xyp5MsJm?+Wy@%eu-q31D*VFJC^_`H-O4lqo+aG~3! zR#>8eS1;{{-AUQbcXq5B8w2)SU0<=PeM`lecf!mJ#|vei-@dS|RF>)Ftim~yHl>Mc zU;1FSYhABg^xWQ<rH9&^7Eii(eRlZb5R;;}J0)hCSxLr*SxLw~)8W;S_;Ym2V~cbA zl}zrs8Y#2pb9w+>rCQ<|QIe8al4_M)lnSI6j0_Bobq$Pk4GlsJEv!t<tPBlx4J@n- j42seOf1_x~%}>cptHiB=*?OfrPy>UftDnm{r-UW|Y2SeL literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/src/main/webapp/static/js/jquery/ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100755 index 0000000000000000000000000000000000000000..e504a3ca152cd424819cb7313fe13aa7c124ee0d GIT binary patch literal 360 zcmeAS@N?(olHy`uVBq!ia0vp^j6j?szyu^`+!HJTQY`6?zK#qG8~eHcB(j1O6bHFG zF|0c$^AgBWNcITwWnidMV_;}#VPN<L6l!?Ez))(y!0;-8fx&791A}<MoLzx7Knb=a zZ+DmfV89vi{SHv1$kW9!MC1I^2?se{6a}0Qmn52A?wuRiTl~$yUDqMt{4@EmmiU8u zZ(dGp5#Wf*Tq?@Q@F4#|fkoE(y=9F~3!Rn*wKg_7T3A@<si`kFFg89sT|eHPv)66+ zj~Ui)w_IL3|ILc;hqA>41qIX6((c#2JpPek&$r@Ir;|4~0c}?;ag8WRNi0dVN-jzT zQVd20hQ_)EM!JRuA%+%Kre;<~=DG$JRt5(1EtQo}H00)|WTsW(*6=Q6_B@~l22WQ% Jmvv4FO#njTcDn!o literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-icons_222222_256x240.png b/src/main/webapp/static/js/jquery/ui/images/ui-icons_222222_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..0de6293259d866646ee06e63162f42bc56c5bae4 GIT binary patch literal 6781 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-icons_2e83ff_256x240.png b/src/main/webapp/static/js/jquery/ui/images/ui-icons_2e83ff_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..513a241d44d68c31a0db4af7f0c4d4a3d5596822 GIT binary patch literal 4353 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 br@N)Q3*pA~9(VP_MS!ussa}PSbL@Wrp;;A% literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-icons_454545_256x240.png b/src/main/webapp/static/js/jquery/ui/images/ui-icons_454545_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..95032e4423f5589c377ac4ccdc1fa4e74b5a8e72 GIT binary patch literal 6854 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 J8a2n*{{hD+0U`hZ literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-icons_888888_256x240.png b/src/main/webapp/static/js/jquery/ui/images/ui-icons_888888_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..8449bebc24690ee945ba5827b2ae8d6d3fb5bb36 GIT binary patch literal 6897 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 literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/images/ui-icons_cd0a0a_256x240.png b/src/main/webapp/static/js/jquery/ui/images/ui-icons_cd0a0a_256x240.png new file mode 100755 index 0000000000000000000000000000000000000000..e28c9249bdb6c65caf4de1face364db3a363787f GIT binary patch literal 4353 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 b4>t=pXX1_PJ#K1;ivS}%6Wt1Jr`Z1hd_CNw literal 0 HcmV?d00001 diff --git a/src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.css b/src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.css new file mode 100755 index 00000000000..c443b95033c --- /dev/null +++ b/src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.css @@ -0,0 +1,1014 @@ +/*! jQuery UI - v1.10.0 - 2013-02-14 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.tooltip.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */ + +/* Layout helpers +----------------------------------*/ +.ui-helper-hidden { + display: none; +} +.ui-helper-hidden-accessible { + border: 0; + clip: rect(0 0 0 0); + height: 1px; + margin: -1px; + overflow: hidden; + padding: 0; + position: absolute; + width: 1px; +} +.ui-helper-reset { + margin: 0; + padding: 0; + border: 0; + outline: 0; + line-height: 1.3; + text-decoration: none; + font-size: 100%; + list-style: none; +} +.ui-helper-clearfix:before, +.ui-helper-clearfix:after { + content: ""; + display: table; +} +.ui-helper-clearfix:after { + clear: both; +} +.ui-helper-clearfix { + min-height: 0; /* support: IE7 */ +} +.ui-helper-zfix { + width: 100%; + height: 100%; + top: 0; + left: 0; + position: absolute; + opacity: 0; + filter:Alpha(Opacity=0); +} + +.ui-front { + z-index: 100; +} + + +/* Interaction Cues +----------------------------------*/ +.ui-state-disabled { + cursor: default !important; +} + + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + display: block; + text-indent: -99999px; + overflow: hidden; + background-repeat: no-repeat; +} + + +/* Misc visuals +----------------------------------*/ + +/* Overlays */ +.ui-widget-overlay { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.ui-resizable { + position: relative; +} +.ui-resizable-handle { + position: absolute; + font-size: 0.1px; + display: block; +} +.ui-resizable-disabled .ui-resizable-handle, +.ui-resizable-autohide .ui-resizable-handle { + display: none; +} +.ui-resizable-n { + cursor: n-resize; + height: 7px; + width: 100%; + top: -5px; + left: 0; +} +.ui-resizable-s { + cursor: s-resize; + height: 7px; + width: 100%; + bottom: -5px; + left: 0; +} +.ui-resizable-e { + cursor: e-resize; + width: 7px; + right: -5px; + top: 0; + height: 100%; +} +.ui-resizable-w { + cursor: w-resize; + width: 7px; + left: -5px; + top: 0; + height: 100%; +} +.ui-resizable-se { + cursor: se-resize; + width: 12px; + height: 12px; + right: 1px; + bottom: 1px; +} +.ui-resizable-sw { + cursor: sw-resize; + width: 9px; + height: 9px; + left: -5px; + bottom: -5px; +} +.ui-resizable-nw { + cursor: nw-resize; + width: 9px; + height: 9px; + left: -5px; + top: -5px; +} +.ui-resizable-ne { + cursor: ne-resize; + width: 9px; + height: 9px; + right: -5px; + top: -5px; +} +.ui-selectable-helper { + position: absolute; + z-index: 100; + border: 1px dotted black; +} +.ui-accordion .ui-accordion-header { + display: block; + cursor: pointer; + position: relative; + margin-top: 2px; + padding: .5em .5em .5em .7em; + min-height: 0; /* support: IE7 */ +} +.ui-accordion .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-noicons { + padding-left: .7em; +} +.ui-accordion .ui-accordion-icons .ui-accordion-icons { + padding-left: 2.2em; +} +.ui-accordion .ui-accordion-header .ui-accordion-header-icon { + position: absolute; + left: .5em; + top: 50%; + margin-top: -8px; +} +.ui-accordion .ui-accordion-content { + padding: 1em 2.2em; + border-top: 0; + overflow: auto; +} +.ui-autocomplete { + position: absolute; + top: 0; + left: 0; + cursor: default; +} +.ui-button { + display: inline-block; + position: relative; + padding: 0; + line-height: normal; + margin-right: .1em; + cursor: pointer; + vertical-align: middle; + text-align: center; + overflow: visible; /* removes extra width in IE */ +} +.ui-button, +.ui-button:link, +.ui-button:visited, +.ui-button:hover, +.ui-button:active { + text-decoration: none; +} +/* to make room for the icon, a width needs to be set here */ +.ui-button-icon-only { + width: 2.2em; +} +/* button elements seem to need a little more width */ +button.ui-button-icon-only { + width: 2.4em; +} +.ui-button-icons-only { + width: 3.4em; +} +button.ui-button-icons-only { + width: 3.7em; +} + +/* button text element */ +.ui-button .ui-button-text { + display: block; + line-height: normal; +} +.ui-button-text-only .ui-button-text { + padding: .4em 1em; +} +.ui-button-icon-only .ui-button-text, +.ui-button-icons-only .ui-button-text { + padding: .4em; + text-indent: -9999999px; +} +.ui-button-text-icon-primary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 1em .4em 2.1em; +} +.ui-button-text-icon-secondary .ui-button-text, +.ui-button-text-icons .ui-button-text { + padding: .4em 2.1em .4em 1em; +} +.ui-button-text-icons .ui-button-text { + padding-left: 2.1em; + padding-right: 2.1em; +} +/* no icon support for input elements, provide padding by default */ +input.ui-button { + padding: .4em 1em; +} + +/* button icon element(s) */ +.ui-button-icon-only .ui-icon, +.ui-button-text-icon-primary .ui-icon, +.ui-button-text-icon-secondary .ui-icon, +.ui-button-text-icons .ui-icon, +.ui-button-icons-only .ui-icon { + position: absolute; + top: 50%; + margin-top: -8px; +} +.ui-button-icon-only .ui-icon { + left: 50%; + margin-left: -8px; +} +.ui-button-text-icon-primary .ui-button-icon-primary, +.ui-button-text-icons .ui-button-icon-primary, +.ui-button-icons-only .ui-button-icon-primary { + left: .5em; +} +.ui-button-text-icon-secondary .ui-button-icon-secondary, +.ui-button-text-icons .ui-button-icon-secondary, +.ui-button-icons-only .ui-button-icon-secondary { + right: .5em; +} + +/* button sets */ +.ui-buttonset { + margin-right: 7px; +} +.ui-buttonset .ui-button { + margin-left: 0; + margin-right: -.3em; +} + +/* workarounds */ +/* reset extra padding in Firefox, see h5bp.com/l */ +input.ui-button::-moz-focus-inner, +button.ui-button::-moz-focus-inner { + border: 0; + padding: 0; +} +.ui-datepicker { + width: 17em; + padding: .2em .2em 0; + display: none; +} +.ui-datepicker .ui-datepicker-header { + position: relative; + padding: .2em 0; +} +.ui-datepicker .ui-datepicker-prev, +.ui-datepicker .ui-datepicker-next { + position: absolute; + top: 2px; + width: 1.8em; + height: 1.8em; +} +.ui-datepicker .ui-datepicker-prev-hover, +.ui-datepicker .ui-datepicker-next-hover { + top: 1px; +} +.ui-datepicker .ui-datepicker-prev { + left: 2px; +} +.ui-datepicker .ui-datepicker-next { + right: 2px; +} +.ui-datepicker .ui-datepicker-prev-hover { + left: 1px; +} +.ui-datepicker .ui-datepicker-next-hover { + right: 1px; +} +.ui-datepicker .ui-datepicker-prev span, +.ui-datepicker .ui-datepicker-next span { + display: block; + position: absolute; + left: 50%; + margin-left: -8px; + top: 50%; + margin-top: -8px; +} +.ui-datepicker .ui-datepicker-title { + margin: 0 2.3em; + line-height: 1.8em; + text-align: center; +} +.ui-datepicker .ui-datepicker-title select { + font-size: 1em; + margin: 1px 0; +} +.ui-datepicker select.ui-datepicker-month-year { + width: 100%; +} +.ui-datepicker select.ui-datepicker-month, +.ui-datepicker select.ui-datepicker-year { + width: 49%; +} +.ui-datepicker table { + width: 100%; + font-size: .9em; + border-collapse: collapse; + margin: 0 0 .4em; +} +.ui-datepicker th { + padding: .7em .3em; + text-align: center; + font-weight: bold; + border: 0; +} +.ui-datepicker td { + border: 0; + padding: 1px; +} +.ui-datepicker td span, +.ui-datepicker td a { + display: block; + padding: .2em; + text-align: right; + text-decoration: none; +} +.ui-datepicker .ui-datepicker-buttonpane { + background-image: none; + margin: .7em 0 0 0; + padding: 0 .2em; + border-left: 0; + border-right: 0; + border-bottom: 0; +} +.ui-datepicker .ui-datepicker-buttonpane button { + float: right; + margin: .5em .2em .4em; + cursor: pointer; + padding: .2em .6em .3em .6em; + width: auto; + overflow: visible; +} +.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { + float: left; +} + +/* with multiple calendars */ +.ui-datepicker.ui-datepicker-multi { + width: auto; +} +.ui-datepicker-multi .ui-datepicker-group { + float: left; +} +.ui-datepicker-multi .ui-datepicker-group table { + width: 95%; + margin: 0 auto .4em; +} +.ui-datepicker-multi-2 .ui-datepicker-group { + width: 50%; +} +.ui-datepicker-multi-3 .ui-datepicker-group { + width: 33.3%; +} +.ui-datepicker-multi-4 .ui-datepicker-group { + width: 25%; +} +.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { + border-left-width: 0; +} +.ui-datepicker-multi .ui-datepicker-buttonpane { + clear: left; +} +.ui-datepicker-row-break { + clear: both; + width: 100%; + font-size: 0; +} + +/* RTL support */ +.ui-datepicker-rtl { + direction: rtl; +} +.ui-datepicker-rtl .ui-datepicker-prev { + right: 2px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next { + left: 2px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-prev:hover { + right: 1px; + left: auto; +} +.ui-datepicker-rtl .ui-datepicker-next:hover { + left: 1px; + right: auto; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane { + clear: right; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button { + float: left; +} +.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, +.ui-datepicker-rtl .ui-datepicker-group { + float: right; +} +.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, +.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { + border-right-width: 0; + border-left-width: 1px; +} +.ui-dialog { + position: absolute; + top: 0; + left: 0; + padding: .2em; + outline: 0; +} +.ui-dialog .ui-dialog-titlebar { + padding: .4em 1em; + position: relative; +} +.ui-dialog .ui-dialog-title { + float: left; + margin: .1em 0; + white-space: nowrap; + width: 90%; + overflow: hidden; + text-overflow: ellipsis; +} +.ui-dialog .ui-dialog-titlebar-close { + position: absolute; + right: .3em; + top: 50%; + width: 21px; + margin: -10px 0 0 0; + padding: 1px; + height: 20px; +} +.ui-dialog .ui-dialog-content { + position: relative; + border: 0; + padding: .5em 1em; + background: none; + overflow: auto; +} +.ui-dialog .ui-dialog-buttonpane { + text-align: left; + border-width: 1px 0 0 0; + background-image: none; + margin-top: .5em; + padding: .3em 1em .5em .4em; +} +.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { + float: right; +} +.ui-dialog .ui-dialog-buttonpane button { + margin: .5em .4em .5em 0; + cursor: pointer; +} +.ui-dialog .ui-resizable-se { + width: 12px; + height: 12px; + right: -5px; + bottom: -5px; + background-position: 16px 16px; +} +.ui-draggable .ui-dialog-titlebar { + cursor: move; +} +.ui-menu { + list-style: none; + padding: 2px; + margin: 0; + display: block; + outline: none; +} +.ui-menu .ui-menu { + margin-top: -3px; + position: absolute; +} +.ui-menu .ui-menu-item { + margin: 0; + padding: 0; + width: 100%; +} +.ui-menu .ui-menu-divider { + margin: 5px -2px 5px -2px; + height: 0; + font-size: 0; + line-height: 0; + border-width: 1px 0 0 0; +} +.ui-menu .ui-menu-item a { + text-decoration: none; + display: block; + padding: 2px .4em; + line-height: 1.5; + min-height: 0; /* support: IE7 */ + font-weight: normal; +} +.ui-menu .ui-menu-item a.ui-state-focus, +.ui-menu .ui-menu-item a.ui-state-active { + font-weight: normal; + margin: -1px; +} + +.ui-menu .ui-state-disabled { + font-weight: normal; + margin: .4em 0 .2em; + line-height: 1.5; +} +.ui-menu .ui-state-disabled a { + cursor: default; +} + +/* icon support */ +.ui-menu-icons { + position: relative; +} +.ui-menu-icons .ui-menu-item a { + position: relative; + padding-left: 2em; +} + +/* left-aligned */ +.ui-menu .ui-icon { + position: absolute; + top: .2em; + left: .2em; +} + +/* right-aligned */ +.ui-menu .ui-menu-icon { + position: static; + float: right; +} +.ui-progressbar { + height: 2em; + text-align: left; + overflow: hidden; +} +.ui-progressbar .ui-progressbar-value { + margin: -1px; + height: 100%; +} +.ui-progressbar .ui-progressbar-overlay { + background: url("images/animated-overlay.gif"); + height: 100%; + filter: alpha(opacity=25); + opacity: 0.25; +} +.ui-progressbar-indeterminate .ui-progressbar-value { + background-image: none; +} +.ui-tooltip { + padding: 8px; + position: absolute; + z-index: 9999; + max-width: 300px; + -webkit-box-shadow: 0 0 5px #aaa; + box-shadow: 0 0 5px #aaa; +} +body .ui-tooltip { + border-width: 2px; +} + +/* Component containers +----------------------------------*/ +.ui-widget { + font-family: Verdana,Arial,sans-serif; + font-size: 1.1em; +} +.ui-widget .ui-widget { + font-size: 1em; +} +.ui-widget input, +.ui-widget select, +.ui-widget textarea, +.ui-widget button { + font-family: Verdana,Arial,sans-serif; + font-size: 1em; +} +.ui-widget-content { + border: 1px solid #aaaaaa; + background: #ffffff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x; + color: #222222; +} +.ui-widget-content a { + color: #222222; +} +.ui-widget-header { + border: 1px solid #aaaaaa; + background: #cccccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x; + color: #222222; + font-weight: bold; +} +.ui-widget-header a { + color: #222222; +} + +/* Interaction states +----------------------------------*/ +.ui-state-default, +.ui-widget-content .ui-state-default, +.ui-widget-header .ui-state-default { + border: 1px solid #d3d3d3; + background: #e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #555555; +} +.ui-state-default a, +.ui-state-default a:link, +.ui-state-default a:visited { + color: #555555; + text-decoration: none; +} +.ui-state-hover, +.ui-widget-content .ui-state-hover, +.ui-widget-header .ui-state-hover, +.ui-state-focus, +.ui-widget-content .ui-state-focus, +.ui-widget-header .ui-state-focus { + border: 1px solid #999999; + background: #dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-hover a, +.ui-state-hover a:hover, +.ui-state-hover a:link, +.ui-state-hover a:visited { + color: #212121; + text-decoration: none; +} +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active { + border: 1px solid #aaaaaa; + background: #ffffff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x; + font-weight: normal; + color: #212121; +} +.ui-state-active a, +.ui-state-active a:link, +.ui-state-active a:visited { + color: #212121; + text-decoration: none; +} + +/* Interaction Cues +----------------------------------*/ +.ui-state-highlight, +.ui-widget-content .ui-state-highlight, +.ui-widget-header .ui-state-highlight { + border: 1px solid #fcefa1; + background: #fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x; + color: #363636; +} +.ui-state-highlight a, +.ui-widget-content .ui-state-highlight a, +.ui-widget-header .ui-state-highlight a { + color: #363636; +} +.ui-state-error, +.ui-widget-content .ui-state-error, +.ui-widget-header .ui-state-error { + border: 1px solid #cd0a0a; + background: #fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x; + color: #cd0a0a; +} +.ui-state-error a, +.ui-widget-content .ui-state-error a, +.ui-widget-header .ui-state-error a { + color: #cd0a0a; +} +.ui-state-error-text, +.ui-widget-content .ui-state-error-text, +.ui-widget-header .ui-state-error-text { + color: #cd0a0a; +} +.ui-priority-primary, +.ui-widget-content .ui-priority-primary, +.ui-widget-header .ui-priority-primary { + font-weight: bold; +} +.ui-priority-secondary, +.ui-widget-content .ui-priority-secondary, +.ui-widget-header .ui-priority-secondary { + opacity: .7; + filter:Alpha(Opacity=70); + font-weight: normal; +} +.ui-state-disabled, +.ui-widget-content .ui-state-disabled, +.ui-widget-header .ui-state-disabled { + opacity: .35; + filter:Alpha(Opacity=35); + background-image: none; +} +.ui-state-disabled .ui-icon { + filter:Alpha(Opacity=35); /* For IE8 - See #6059 */ +} + +/* Icons +----------------------------------*/ + +/* states and images */ +.ui-icon { + width: 16px; + height: 16px; + background-position: 16px 16px; +} +.ui-icon, +.ui-widget-content .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-widget-header .ui-icon { + background-image: url(images/ui-icons_222222_256x240.png); +} +.ui-state-default .ui-icon { + background-image: url(images/ui-icons_888888_256x240.png); +} +.ui-state-hover .ui-icon, +.ui-state-focus .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png); +} +.ui-state-active .ui-icon { + background-image: url(images/ui-icons_454545_256x240.png); +} +.ui-state-highlight .ui-icon { + background-image: url(images/ui-icons_2e83ff_256x240.png); +} +.ui-state-error .ui-icon, +.ui-state-error-text .ui-icon { + background-image: url(images/ui-icons_cd0a0a_256x240.png); +} + +/* positioning */ +.ui-icon-carat-1-n { background-position: 0 0; } +.ui-icon-carat-1-ne { background-position: -16px 0; } +.ui-icon-carat-1-e { background-position: -32px 0; } +.ui-icon-carat-1-se { background-position: -48px 0; } +.ui-icon-carat-1-s { background-position: -64px 0; } +.ui-icon-carat-1-sw { background-position: -80px 0; } +.ui-icon-carat-1-w { background-position: -96px 0; } +.ui-icon-carat-1-nw { background-position: -112px 0; } +.ui-icon-carat-2-n-s { background-position: -128px 0; } +.ui-icon-carat-2-e-w { background-position: -144px 0; } +.ui-icon-triangle-1-n { background-position: 0 -16px; } +.ui-icon-triangle-1-ne { background-position: -16px -16px; } +.ui-icon-triangle-1-e { background-position: -32px -16px; } +.ui-icon-triangle-1-se { background-position: -48px -16px; } +.ui-icon-triangle-1-s { background-position: -64px -16px; } +.ui-icon-triangle-1-sw { background-position: -80px -16px; } +.ui-icon-triangle-1-w { background-position: -96px -16px; } +.ui-icon-triangle-1-nw { background-position: -112px -16px; } +.ui-icon-triangle-2-n-s { background-position: -128px -16px; } +.ui-icon-triangle-2-e-w { background-position: -144px -16px; } +.ui-icon-arrow-1-n { background-position: 0 -32px; } +.ui-icon-arrow-1-ne { background-position: -16px -32px; } +.ui-icon-arrow-1-e { background-position: -32px -32px; } +.ui-icon-arrow-1-se { background-position: -48px -32px; } +.ui-icon-arrow-1-s { background-position: -64px -32px; } +.ui-icon-arrow-1-sw { background-position: -80px -32px; } +.ui-icon-arrow-1-w { background-position: -96px -32px; } +.ui-icon-arrow-1-nw { background-position: -112px -32px; } +.ui-icon-arrow-2-n-s { background-position: -128px -32px; } +.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } +.ui-icon-arrow-2-e-w { background-position: -160px -32px; } +.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } +.ui-icon-arrowstop-1-n { background-position: -192px -32px; } +.ui-icon-arrowstop-1-e { background-position: -208px -32px; } +.ui-icon-arrowstop-1-s { background-position: -224px -32px; } +.ui-icon-arrowstop-1-w { background-position: -240px -32px; } +.ui-icon-arrowthick-1-n { background-position: 0 -48px; } +.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } +.ui-icon-arrowthick-1-e { background-position: -32px -48px; } +.ui-icon-arrowthick-1-se { background-position: -48px -48px; } +.ui-icon-arrowthick-1-s { background-position: -64px -48px; } +.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } +.ui-icon-arrowthick-1-w { background-position: -96px -48px; } +.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } +.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } +.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } +.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } +.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } +.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } +.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } +.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } +.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } +.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } +.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } +.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } +.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } +.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } +.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } +.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } +.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } +.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } +.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } +.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } +.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } +.ui-icon-arrow-4 { background-position: 0 -80px; } +.ui-icon-arrow-4-diag { background-position: -16px -80px; } +.ui-icon-extlink { background-position: -32px -80px; } +.ui-icon-newwin { background-position: -48px -80px; } +.ui-icon-refresh { background-position: -64px -80px; } +.ui-icon-shuffle { background-position: -80px -80px; } +.ui-icon-transfer-e-w { background-position: -96px -80px; } +.ui-icon-transferthick-e-w { background-position: -112px -80px; } +.ui-icon-folder-collapsed { background-position: 0 -96px; } +.ui-icon-folder-open { background-position: -16px -96px; } +.ui-icon-document { background-position: -32px -96px; } +.ui-icon-document-b { background-position: -48px -96px; } +.ui-icon-note { background-position: -64px -96px; } +.ui-icon-mail-closed { background-position: -80px -96px; } +.ui-icon-mail-open { background-position: -96px -96px; } +.ui-icon-suitcase { background-position: -112px -96px; } +.ui-icon-comment { background-position: -128px -96px; } +.ui-icon-person { background-position: -144px -96px; } +.ui-icon-print { background-position: -160px -96px; } +.ui-icon-trash { background-position: -176px -96px; } +.ui-icon-locked { background-position: -192px -96px; } +.ui-icon-unlocked { background-position: -208px -96px; } +.ui-icon-bookmark { background-position: -224px -96px; } +.ui-icon-tag { background-position: -240px -96px; } +.ui-icon-home { background-position: 0 -112px; } +.ui-icon-flag { background-position: -16px -112px; } +.ui-icon-calendar { background-position: -32px -112px; } +.ui-icon-cart { background-position: -48px -112px; } +.ui-icon-pencil { background-position: -64px -112px; } +.ui-icon-clock { background-position: -80px -112px; } +.ui-icon-disk { background-position: -96px -112px; } +.ui-icon-calculator { background-position: -112px -112px; } +.ui-icon-zoomin { background-position: -128px -112px; } +.ui-icon-zoomout { background-position: -144px -112px; } +.ui-icon-search { background-position: -160px -112px; } +.ui-icon-wrench { background-position: -176px -112px; } +.ui-icon-gear { background-position: -192px -112px; } +.ui-icon-heart { background-position: -208px -112px; } +.ui-icon-star { background-position: -224px -112px; } +.ui-icon-link { background-position: -240px -112px; } +.ui-icon-cancel { background-position: 0 -128px; } +.ui-icon-plus { background-position: -16px -128px; } +.ui-icon-plusthick { background-position: -32px -128px; } +.ui-icon-minus { background-position: -48px -128px; } +.ui-icon-minusthick { background-position: -64px -128px; } +.ui-icon-close { background-position: -80px -128px; } +.ui-icon-closethick { background-position: -96px -128px; } +.ui-icon-key { background-position: -112px -128px; } +.ui-icon-lightbulb { background-position: -128px -128px; } +.ui-icon-scissors { background-position: -144px -128px; } +.ui-icon-clipboard { background-position: -160px -128px; } +.ui-icon-copy { background-position: -176px -128px; } +.ui-icon-contact { background-position: -192px -128px; } +.ui-icon-image { background-position: -208px -128px; } +.ui-icon-video { background-position: -224px -128px; } +.ui-icon-script { background-position: -240px -128px; } +.ui-icon-alert { background-position: 0 -144px; } +.ui-icon-info { background-position: -16px -144px; } +.ui-icon-notice { background-position: -32px -144px; } +.ui-icon-help { background-position: -48px -144px; } +.ui-icon-check { background-position: -64px -144px; } +.ui-icon-bullet { background-position: -80px -144px; } +.ui-icon-radio-on { background-position: -96px -144px; } +.ui-icon-radio-off { background-position: -112px -144px; } +.ui-icon-pin-w { background-position: -128px -144px; } +.ui-icon-pin-s { background-position: -144px -144px; } +.ui-icon-play { background-position: 0 -160px; } +.ui-icon-pause { background-position: -16px -160px; } +.ui-icon-seek-next { background-position: -32px -160px; } +.ui-icon-seek-prev { background-position: -48px -160px; } +.ui-icon-seek-end { background-position: -64px -160px; } +.ui-icon-seek-start { background-position: -80px -160px; } +/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ +.ui-icon-seek-first { background-position: -80px -160px; } +.ui-icon-stop { background-position: -96px -160px; } +.ui-icon-eject { background-position: -112px -160px; } +.ui-icon-volume-off { background-position: -128px -160px; } +.ui-icon-volume-on { background-position: -144px -160px; } +.ui-icon-power { background-position: 0 -176px; } +.ui-icon-signal-diag { background-position: -16px -176px; } +.ui-icon-signal { background-position: -32px -176px; } +.ui-icon-battery-0 { background-position: -48px -176px; } +.ui-icon-battery-1 { background-position: -64px -176px; } +.ui-icon-battery-2 { background-position: -80px -176px; } +.ui-icon-battery-3 { background-position: -96px -176px; } +.ui-icon-circle-plus { background-position: 0 -192px; } +.ui-icon-circle-minus { background-position: -16px -192px; } +.ui-icon-circle-close { background-position: -32px -192px; } +.ui-icon-circle-triangle-e { background-position: -48px -192px; } +.ui-icon-circle-triangle-s { background-position: -64px -192px; } +.ui-icon-circle-triangle-w { background-position: -80px -192px; } +.ui-icon-circle-triangle-n { background-position: -96px -192px; } +.ui-icon-circle-arrow-e { background-position: -112px -192px; } +.ui-icon-circle-arrow-s { background-position: -128px -192px; } +.ui-icon-circle-arrow-w { background-position: -144px -192px; } +.ui-icon-circle-arrow-n { background-position: -160px -192px; } +.ui-icon-circle-zoomin { background-position: -176px -192px; } +.ui-icon-circle-zoomout { background-position: -192px -192px; } +.ui-icon-circle-check { background-position: -208px -192px; } +.ui-icon-circlesmall-plus { background-position: 0 -208px; } +.ui-icon-circlesmall-minus { background-position: -16px -208px; } +.ui-icon-circlesmall-close { background-position: -32px -208px; } +.ui-icon-squaresmall-plus { background-position: -48px -208px; } +.ui-icon-squaresmall-minus { background-position: -64px -208px; } +.ui-icon-squaresmall-close { background-position: -80px -208px; } +.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } +.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } +.ui-icon-grip-solid-vertical { background-position: -32px -224px; } +.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } +.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } +.ui-icon-grip-diagonal-se { background-position: -80px -224px; } + + +/* Misc visuals +----------------------------------*/ + +/* Corner radius */ +.ui-corner-all, +.ui-corner-top, +.ui-corner-left, +.ui-corner-tl { + border-top-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-top, +.ui-corner-right, +.ui-corner-tr { + border-top-right-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-left, +.ui-corner-bl { + border-bottom-left-radius: 4px; +} +.ui-corner-all, +.ui-corner-bottom, +.ui-corner-right, +.ui-corner-br { + border-bottom-right-radius: 4px; +} + +/* Overlays */ +.ui-widget-overlay { + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); +} +.ui-widget-shadow { + margin: -8px 0 0 -8px; + padding: 8px; + background: #aaaaaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x; + opacity: .3; + filter: Alpha(Opacity=30); + border-radius: 8px; +} diff --git a/src/main/webapp/static/js/jquery/jquery-ui-1.10.0.custom.js b/src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.js similarity index 100% rename from src/main/webapp/static/js/jquery/jquery-ui-1.10.0.custom.js rename to src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.js diff --git a/src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.min.css b/src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.min.css new file mode 100755 index 00000000000..65848259f39 --- /dev/null +++ b/src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.10.0 - 2013-02-14 +* http://jqueryui.com +* Includes: jquery.ui.core.css, jquery.ui.resizable.css, jquery.ui.selectable.css, jquery.ui.accordion.css, jquery.ui.autocomplete.css, jquery.ui.button.css, jquery.ui.datepicker.css, jquery.ui.dialog.css, jquery.ui.menu.css, jquery.ui.progressbar.css, jquery.ui.tooltip.css +* To view and modify this theme, visit http://jqueryui.com/themeroller/?ffDefault=Verdana%2CArial%2Csans-serif&fwDefault=normal&fsDefault=1.1em&cornerRadius=4px&bgColorHeader=cccccc&bgTextureHeader=highlight_soft&bgImgOpacityHeader=75&borderColorHeader=aaaaaa&fcHeader=222222&iconColorHeader=222222&bgColorContent=ffffff&bgTextureContent=flat&bgImgOpacityContent=75&borderColorContent=aaaaaa&fcContent=222222&iconColorContent=222222&bgColorDefault=e6e6e6&bgTextureDefault=glass&bgImgOpacityDefault=75&borderColorDefault=d3d3d3&fcDefault=555555&iconColorDefault=888888&bgColorHover=dadada&bgTextureHover=glass&bgImgOpacityHover=75&borderColorHover=999999&fcHover=212121&iconColorHover=454545&bgColorActive=ffffff&bgTextureActive=glass&bgImgOpacityActive=65&borderColorActive=aaaaaa&fcActive=212121&iconColorActive=454545&bgColorHighlight=fbf9ee&bgTextureHighlight=glass&bgImgOpacityHighlight=55&borderColorHighlight=fcefa1&fcHighlight=363636&iconColorHighlight=2e83ff&bgColorError=fef1ec&bgTextureError=glass&bgImgOpacityError=95&borderColorError=cd0a0a&fcError=cd0a0a&iconColorError=cd0a0a&bgColorOverlay=aaaaaa&bgTextureOverlay=flat&bgImgOpacityOverlay=0&opacityOverlay=30&bgColorShadow=aaaaaa&bgTextureShadow=flat&bgImgOpacityShadow=0&opacityShadow=30&thicknessShadow=8px&offsetTopShadow=-8px&offsetLeftShadow=-8px&cornerRadiusShadow=8px +* Copyright (c) 2013 jQuery Foundation and other contributors Licensed MIT */.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table}.ui-helper-clearfix:after{clear:both}.ui-helper-clearfix{min-height:0}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important}.ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin-top:2px;padding:.5em .5em .5em .7em;min-height:0}.ui-accordion .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-noicons{padding-left:.7em}.ui-accordion .ui-accordion-icons .ui-accordion-icons{padding-left:2.2em}.ui-accordion .ui-accordion-header .ui-accordion-header-icon{position:absolute;left:.5em;top:50%;margin-top:-8px}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-button{display:inline-block;position:relative;padding:0;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2.2em}button.ui-button-icon-only{width:2.4em}.ui-button-icons-only{width:3.4em}button.ui-button-icons-only{width:3.7em}.ui-button .ui-button-text{display:block;line-height:normal}.ui-button-text-only .ui-button-text{padding:.4em 1em}.ui-button-icon-only .ui-button-text,.ui-button-icons-only .ui-button-text{padding:.4em;text-indent:-9999999px}.ui-button-text-icon-primary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 1em .4em 2.1em}.ui-button-text-icon-secondary .ui-button-text,.ui-button-text-icons .ui-button-text{padding:.4em 2.1em .4em 1em}.ui-button-text-icons .ui-button-text{padding-left:2.1em;padding-right:2.1em}input.ui-button{padding:.4em 1em}.ui-button-icon-only .ui-icon,.ui-button-text-icon-primary .ui-icon,.ui-button-text-icon-secondary .ui-icon,.ui-button-text-icons .ui-icon,.ui-button-icons-only .ui-icon{position:absolute;top:50%;margin-top:-8px}.ui-button-icon-only .ui-icon{left:50%;margin-left:-8px}.ui-button-text-icon-primary .ui-button-icon-primary,.ui-button-text-icons .ui-button-icon-primary,.ui-button-icons-only .ui-button-icon-primary{left:.5em}.ui-button-text-icon-secondary .ui-button-icon-secondary,.ui-button-text-icons .ui-button-icon-secondary,.ui-button-icons-only .ui-button-icon-secondary{right:.5em}.ui-buttonset{margin-right:7px}.ui-buttonset .ui-button{margin-left:0;margin-right:-.3em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month-year{width:100%}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:49%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:21px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-se{width:12px;height:12px;right:-5px;bottom:-5px;background-position:16px 16px}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-menu{list-style:none;padding:2px;margin:0;display:block;outline:none}.ui-menu .ui-menu{margin-top:-3px;position:absolute}.ui-menu .ui-menu-item{margin:0;padding:0;width:100%}.ui-menu .ui-menu-divider{margin:5px -2px 5px -2px;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-menu-item a{text-decoration:none;display:block;padding:2px .4em;line-height:1.5;min-height:0;font-weight:normal}.ui-menu .ui-menu-item a.ui-state-focus,.ui-menu .ui-menu-item a.ui-state-active{font-weight:normal;margin:-1px}.ui-menu .ui-state-disabled{font-weight:normal;margin:.4em 0 .2em;line-height:1.5}.ui-menu .ui-state-disabled a{cursor:default}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item a{position:relative;padding-left:2em}.ui-menu .ui-icon{position:absolute;top:.2em;left:.2em}.ui-menu .ui-menu-icon{position:static;float:right}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("images/animated-overlay.gif");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px;-webkit-box-shadow:0 0 5px #aaa;box-shadow:0 0 5px #aaa}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #aaa;background:#fff url(images/ui-bg_flat_75_ffffff_40x100.png) 50% 50% repeat-x;color:#222}.ui-widget-content a{color:#222}.ui-widget-header{border:1px solid #aaa;background:#ccc url(images/ui-bg_highlight-soft_75_cccccc_1x100.png) 50% 50% repeat-x;color:#222;font-weight:bold}.ui-widget-header a{color:#222}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #d3d3d3;background:#e6e6e6 url(images/ui-bg_glass_75_e6e6e6_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#555}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#555;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #999;background:#dadada url(images/ui-bg_glass_75_dadada_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited{color:#212121;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #aaa;background:#fff url(images/ui-bg_glass_65_ffffff_1x400.png) 50% 50% repeat-x;font-weight:normal;color:#212121}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#212121;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fcefa1;background:#fbf9ee url(images/ui-bg_glass_55_fbf9ee_1x400.png) 50% 50% repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#fef1ec url(images/ui-bg_glass_95_fef1ec_1x400.png) 50% 50% repeat-x;color:#cd0a0a}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#cd0a0a}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#cd0a0a}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px;background-position:16px 16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-widget-header .ui-icon{background-image:url(images/ui-icons_222222_256x240.png)}.ui-state-default .ui-icon{background-image:url(images/ui-icons_888888_256x240.png)}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-active .ui-icon{background-image:url(images/ui-icons_454545_256x240.png)}.ui-state-highlight .ui-icon{background-image:url(images/ui-icons_2e83ff_256x240.png)}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url(images/ui-icons_cd0a0a_256x240.png)}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30)}.ui-widget-shadow{margin:-8px 0 0 -8px;padding:8px;background:#aaa url(images/ui-bg_flat_0_aaaaaa_40x100.png) 50% 50% repeat-x;opacity:.3;filter:Alpha(Opacity=30);border-radius:8px} \ No newline at end of file diff --git a/src/main/webapp/static/js/jquery/jquery-ui-1.10.0.custom.min.js b/src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.min.js similarity index 100% rename from src/main/webapp/static/js/jquery/jquery-ui-1.10.0.custom.min.js rename to src/main/webapp/static/js/jquery/ui/jquery-ui-1.10.0.custom.min.js -- GitLab