diff --git a/pom.xml b/pom.xml index 1b9cfd8ff6b82bcce6eafef0719e7c5f14ba74f1..359e39ed828ff910954a4cf6eaedb922856dcae7 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 4c90d53ded3e2044302d0c8d9c8983cfb25a7206..50faaf416619ea4b49713064bdd8fbc6d2df4e93 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 bf16ac25b3c52adc42e5daa5908fecca8cc7cca1..6a986062f6b9594fc6f31d2f036da2fdc3442e40 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 90bb528300a67bf3837dc91d3f6a7940baf1a2c5..8f0e4e517c8078c61a155037420e5fa5afa8d015 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 dc1172a611739377ac16765c64a5fd7538b7b1f4..e0c3bbd1fe2e43dfecad335178e0cb0ac47b825b 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 5b069725bbd0b5c32fd2a5a0cc9c386ce79ea816..545e1ad801115b69b2589f627523e42e08a16ec8 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 0000000000000000000000000000000000000000..0902299f7103f24ed3078bdfbad81cf881f9b398 --- /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 29b5f41c54cfe4d0503ab009750b7f4c72ed6c18..cffb150310eff1eec510c5c2ac514b42de396031 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 eff4ca063d1a41960c1624de9879e48b02c41f82..bfe387bac0c4b52fb8ded39f0111f3da68b7171d 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 7fea36d4ef9cf4e32efcb64522ee294e29a9c23c..c576cfeeef0a79a03a60dc65aaa77fd70f8f7b26 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 22dfabe607101a5e4c6e332c6e218e2bdf845e70..22b9c759eee68d1d14a787ef1a7331733c0b1357 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 794b6ee315abc64e28df8d8ef8b340b849385b71..35c8711cad8326aa6b02bbfeadd1d4101a19245a 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 6f7d06fb9935883029d0b1379020b2a912c3b33a..c687835c3f3a5217862a96b0c60f8af6d1a64ed5 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 f7179b6c65bed07c3a43717dbd523371bb9c86d1..549c65433fe524bb056ee928cb05ddbcab04ab6d 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 05b66800b3b1186b05d1b9b08b7e852f6386f865..39eb0c1c6337d1f72b25eaf6e2406164b2ae4dde 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 a1ee3117da3f5e9c1ea53848c511ef85dfffc3cc..b88e6e93291b1351c5e231f45871a8042542a396 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 87c536e2b74a540addd5d8dbd5082edc4992e097..bed04eb0d64abe56257be3aa4d947f457db41e82 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 9e490227c5d5b5600dfa9b88372cfdcfe51663ef..92228677d4c0d9ca0865be8b531bd69b3493aea9 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 8103eda259c4f9ded7f68250ec8258ffff462d2d..8cb0687156cebc277fe8a17370d649721d1aa771 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 35aad436a5d943fd3e5d5443e570b0502934022d..aaa11220231ca3ef1d8e3cbbefe339286870c61d 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 df37eb307ca0b1a4670a3fefeed835bdfc258f6b..55fab6e33d9b130ac8f9bf2663db05dbb798a30a 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 91ac044ada8c4a1b357b0dc31d31f99fc81031c3..488099c6decae24caf94506c7c9736f0d1f8acc4 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 3417428b65ae40de954dd3817277c971544f584c..2bf04b03d71459408cd543605187588b60deec1a 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 af847d97dd7ba0d1a39da97bcd862179510330c1..87361c50319137fc4d7752241c5b9f4d9e792cf3 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 757dfc49cf205eb97258523d8a65c84e435720dd..9c01c9d7cd024f110ce9c3f2f68f782b0a32059e 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 0f9104a61bf38aaf045bcaf567097f9f3ef06d0a..1334055c6817f5510daa409423231d61ef10814f 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 9bff74b71f8d87f96e9c253b0dd7ca268a8b3678..7255d1ddf696c5c6017cd05f7185254e9af11707 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 80ce343baf4cf11a98d2e2b12e1a37968fc5f914..6c4c3cfa4743f3853f42c41e63697b9e4f3e27fe 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 b988925e69d59f303a995ace20103458ae788d09..917fca8dbf278c8ab907841b32733af9f4c04699 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 72983ec941a2c068a29e7c48e6eb6adbbe5774b7..e274586644fc534ffc40207af5dd3420fe5bfbd5 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 2959b03a2b60faf41ec77690bfd16f411b2a393c..a818bf40d91c3d7795a92b88bf963a5eec3d2df4 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 9595f61bce8130c33fa209c844019a89f7b4bddd..1f44f33dd60350db17087f5b4f9dbbe52d16220b 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 0da4e156a09b07b3b79303e49946b9164a970395..1e7e1076bc1854c71c6a619c7e42554d5e3615d9 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 1fcfb488f65ffe8c6a54cd7114bd9fcbfdd00b00..982fd6b2b5d60ba016872ab10d172a9b0ffab6d2 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 5710b74d2d24a871e8438c3081e279c757943176..909e6fa1058e429ee421c4d135bda3275e4062b8 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 17cafef8357a76309ecd43d03f704761cb2248d8..84860bdd3d14452d2a83faca2bb549e678415033 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 4e1846909c41d4fe423e97505ab1019c0b95ebb6..1449d520c69e4f9fd529c0ddbb3be8afe322d9e5 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 83c4174376b369fd9f22a44a01c5079db0f60a4b..2119c8b311cae4b6c0c37620012de73686b5712d 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 27635e1224ede9a9fae1846b30c6f0270399b308..1415ab92166f2f3e96c82ad7e4e2b06f13fae363 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 ac551a46a063755867f4ad0439d34a57cc3501a4..19068ed9b7393b4f5a49bdf3c7f421c988874ce7 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 62178a549dd723db1f4def934e053688d6ca445c..158c8b76d8be1d4435141a5e9843552d7983c105 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 59fdd597d06b8639b1e1308ae830a20d78117c49..ab797fc43879cc25d52c4e7a7efa4d5d8c7582c8 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 338c82d84fc458147af18c31e8811a2d433368ec..94590a6b8cef3460cf79c71684f64287e1fe8f27 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 077e6c000100f73e50769b690d850db416e57ff3..3a12113a69b02a0b5e1865a967bdefa44242d045 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 e1713ab20dbc32a9f79721fc60eafcbe8f295617..fe9f202f58948abc4e11a484c2e1133208fcaa0b 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 77458e5b870ae195527f366273b2a2e6d085cb7e..6d639d43c1c1e00b5a50bcb97c39fc5aca7bef67 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 0000000000000000000000000000000000000000..5b89cde2980af0ee3a20f899039718d402e2301b --- /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 51f0a95dd3406ddbb8e2be45e5ead04860d448b0..9c21c1192c58c0bebee47f98d277b3e9cc8f5798 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 d444cccd7bba380508a02a478645509c64003257..c39cf4004bf4531709ce958fa6abde0b34fbda25 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 aec3469eaa8c22fa764fe974f53903c459e52a58..6e474b5424264f425653151a442c42d42aee1fef 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 3e5f3477f89f796f40f6f5eb5f3a267c5dc45ef1..0a553dd76b1d6b8b7f29a09577a703be432c77d9 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 dd403d8bab5a334663e6d99d74693fbfcdc749bb..0000000000000000000000000000000000000000 --- 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/animated-overlay.gif differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-bg_flat_0_aaaaaa_40x100.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-bg_flat_75_ffffff_40x100.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_55_fbf9ee_1x400.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_65_ffffff_1x400.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_75_dadada_1x400.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_75_e6e6e6_1x400.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-bg_glass_95_fef1ec_1x400.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-icons_222222_256x240.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-icons_2e83ff_256x240.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-icons_454545_256x240.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-icons_888888_256x240.png differ 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 Binary files /dev/null and b/src/main/webapp/static/js/jquery/ui/images/ui-icons_cd0a0a_256x240.png differ 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 0000000000000000000000000000000000000000..c443b95033c93979f1619b4837b626dcb0e4bdc2 --- /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 0000000000000000000000000000000000000000..65848259f39e251fb5f4d941e7b8e4bf127c85cb --- /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