Repository: syncope Updated Branches: refs/heads/master 355ffbb9c -> 8cee98bc2
[SYNCOPE-730] Replaced the Bootstrap DateTimePicker with the YUI DateTimePicker Project: http://git-wip-us.apache.org/repos/asf/syncope/repo Commit: http://git-wip-us.apache.org/repos/asf/syncope/commit/8cee98bc Tree: http://git-wip-us.apache.org/repos/asf/syncope/tree/8cee98bc Diff: http://git-wip-us.apache.org/repos/asf/syncope/diff/8cee98bc Branch: refs/heads/master Commit: 8cee98bc2e6c548558ae71723a714222f0511a31 Parents: 355ffbb Author: Marco Di Sabatino Di Diodoro <mdisabat...@apache.org> Authored: Tue Mar 15 16:31:16 2016 +0100 Committer: Marco Di Sabatino Di Diodoro <mdisabat...@apache.org> Committed: Tue Mar 15 16:31:16 2016 +0100 ---------------------------------------------------------------------- .../panels/ParametersCreateWizardAttrStep.java | 17 +- .../console/panels/ParametersDetailsPanel.java | 15 +- .../console/tasks/StartAtTogglePanel.java | 7 +- .../markup/html/form/AjaxDateFieldPanel.java | 209 ------------------- .../wicket/markup/html/form/DateFieldPanel.java | 132 ++++++++++++ .../markup/html/form/DateTextFieldPanel.java | 112 ++++++++++ .../markup/html/form/DateTimeFieldPanel.java | 187 +++++++++++++++++ .../markup/html/form/DateTimePickerField.java | 89 ++++++++ .../client/console/wizards/any/PlainAttrs.java | 20 +- .../resources/META-INF/resources/css/search.css | 4 + .../META-INF/resources/css/syncopeConsole.css | 93 +++++++++ .../panels/search/AbstractSearchPanel.html | 3 - .../markup/html/form/AjaxDateFieldPanel.html | 34 --- .../markup/html/form/DateTextFieldPanel.html | 33 +++ .../markup/html/form/DateTimeFieldPanel.html | 36 ++++ .../html/form/DateTimeFieldPanel.properties | 17 ++ .../html/form/DateTimeFieldPanel_it.properties | 17 ++ .../form/DateTimeFieldPanel_pt_BR.properties | 17 ++ .../markup/html/form/DateTimePickerField.html | 41 ++++ 19 files changed, 825 insertions(+), 258 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardAttrStep.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardAttrStep.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardAttrStep.java index c3795a1..3f38b5f 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardAttrStep.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersCreateWizardAttrStep.java @@ -22,12 +22,14 @@ import java.util.Arrays; import java.util.Date; import java.util.List; import org.apache.syncope.client.console.commons.SchemaUtils; -import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDateFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSpinnerFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel; +import org.apache.syncope.client.console.wicket.markup.html.form.DateTextFieldPanel; +import org.apache.syncope.client.console.wicket.markup.html.form.DateTimeFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel; +import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.to.AttrTO; import org.apache.syncope.common.lib.to.PlainSchemaTO; import org.apache.wicket.extensions.wizard.WizardStep; @@ -91,8 +93,17 @@ public class ParametersCreateWizardAttrStep extends WizardStep { final FieldPanel panel; switch (plainSchemaTO.getType()) { case Date: - panel = new AjaxDateFieldPanel( - id, valueHeaderName, new Model<Date>(), plainSchemaTO.getConversionPattern()); + final String dataPattern = plainSchemaTO.getConversionPattern() == null + ? SyncopeConstants.DEFAULT_DATE_PATTERN + : plainSchemaTO.getConversionPattern(); + + if (dataPattern.contains("H")) { + panel = new DateTimeFieldPanel( + id, valueHeaderName, new Model<Date>(), dataPattern); + } else { + panel = new DateTextFieldPanel( + "panel", valueHeaderName, new Model<Date>(), dataPattern); + } break; case Boolean: panel = new AjaxDropDownChoicePanel<>(id, valueHeaderName, new Model<String>(), false); http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java index ff56848..972c3f7 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/panels/ParametersDetailsPanel.java @@ -23,12 +23,14 @@ import java.util.Date; import java.util.List; import org.apache.syncope.client.console.SyncopeConsoleSession; import org.apache.syncope.client.console.commons.SchemaUtils; -import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDateFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSpinnerFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel; +import org.apache.syncope.client.console.wicket.markup.html.form.DateTextFieldPanel; +import org.apache.syncope.client.console.wicket.markup.html.form.DateTimeFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel; +import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.to.AttrTO; import org.apache.syncope.common.lib.to.PlainSchemaTO; import org.apache.syncope.common.lib.types.SchemaType; @@ -78,8 +80,15 @@ public class ParametersDetailsPanel extends Panel { final FieldPanel panel; switch (schemaTO.getType()) { case Date: - panel = new AjaxDateFieldPanel( - id, valueHeaderName, new Model<Date>(), schemaTO.getConversionPattern()); + final String dataPattern = schemaTO.getConversionPattern() == null + ? SyncopeConstants.DEFAULT_DATE_PATTERN + : schemaTO.getConversionPattern(); + + if (dataPattern.contains("H")) { + panel = new DateTimeFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), dataPattern); + } else { + panel = new DateTextFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), dataPattern); + } break; case Boolean: panel = new AjaxDropDownChoicePanel<>(id, valueHeaderName, new Model<String>(), false); http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java b/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java index 7219c4c..341e4cd 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/tasks/StartAtTogglePanel.java @@ -26,7 +26,7 @@ import org.apache.syncope.client.console.commons.Constants; import org.apache.syncope.client.console.panels.TogglePanel; import org.apache.syncope.client.console.rest.TaskRestClient; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel; -import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDateFieldPanel; +import org.apache.syncope.client.console.wicket.markup.html.form.DateTimeFieldPanel; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.to.SchedTaskTO; @@ -51,8 +51,9 @@ public class StartAtTogglePanel extends TogglePanel<Serializable> { final Model<Date> startAtDateModel = new Model<>(); - final AjaxDateFieldPanel startAtDate = new AjaxDateFieldPanel( - "startAtDate", "startAtDate", startAtDateModel, SyncopeConstants.DATE_PATTERNS[3]); + final DateTimeFieldPanel startAtDate = + new DateTimeFieldPanel( + "startAtDate", "startAtDate", startAtDateModel, SyncopeConstants.DATE_PATTERNS[3]); startAtDate.setReadOnly(true).hideLabel(); form.add(startAtDate); http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDateFieldPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDateFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDateFieldPanel.java deleted file mode 100644 index 0cb5118..0000000 --- a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDateFieldPanel.java +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.syncope.client.console.wicket.markup.html.form; - -import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.DateTextField; -import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.DateTextFieldConfig; -import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.datetime.DatetimePicker; -import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.datetime.DatetimePickerConfig; -import de.agilecoders.wicket.extensions.markup.html.bootstrap.form.datetime.DatetimePickerIconConfig; -import de.agilecoders.wicket.extensions.markup.html.bootstrap.icon.FontAwesomeIconType; -import java.io.Serializable; -import java.text.DateFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; -import java.util.Locale; -import org.apache.commons.lang3.time.FastDateFormat; -import org.apache.syncope.client.console.SyncopeConsoleSession; -import org.apache.syncope.common.lib.SyncopeConstants; -import org.apache.wicket.markup.html.list.ListItem; -import org.apache.wicket.model.IModel; -import org.apache.wicket.model.Model; -import org.apache.wicket.model.ResourceModel; -import org.apache.wicket.util.convert.IConverter; -import org.apache.wicket.util.convert.converter.DateConverter; - -public class AjaxDateFieldPanel extends FieldPanel<Date> { - - private static final long serialVersionUID = -428975732068281726L; - - private final String datePattern; - - public AjaxDateFieldPanel(final String id, final String name, final IModel<Date> model, final String pattern) { - super(id, name, model); - - this.datePattern = pattern == null ? SyncopeConstants.DEFAULT_DATE_PATTERN : pattern; - - if (this.datePattern.contains("H")) { - field = new DatetimePicker("date", model, new DatetimePickerConfig(). - withFormat(this.datePattern.replaceAll("'", "")). - setShowToday(true). - useSideBySide(true). - with(new DatetimePickerIconConfig() - .useDateIcon(FontAwesomeIconType.calendar) - .useTimeIcon(FontAwesomeIconType.clock_o) - .useUpIcon(FontAwesomeIconType.arrow_up) - .useDownIcon(FontAwesomeIconType.arrow_down) - )) { - - private static final long serialVersionUID = -6308790460702853262L; - - // T0DO: trying to fix SYNCOPE-730 - // Check if SimpleDateFormat can be replaced by FastDateFormat (see usage below) - @Override - @SuppressWarnings("unchecked") - public <C> IConverter<C> getConverter(final Class<C> type) { - return (IConverter<C>) new DateConverter() { - - private static final long serialVersionUID = 8025900377461981157L; - - @Override - public DateFormat getDateFormat(final Locale locale) { - return new SimpleDateFormat( - datePattern, - locale == null ? SyncopeConsoleSession.get().getLocale() : locale); - } - }; - } - }; - } else { - field = new DateTextField("date", model, new DateTextFieldConfig() - .withFormat(this.datePattern) - .highlightToday(true) - .autoClose(true) - .showTodayButton(DateTextFieldConfig.TodayButton.TRUE)); - } - - add(field.setLabel(new ResourceModel(name, name)).setOutputMarkupId(true)); - add(field); - } - - // todo: Evaluate the actual needs to keep this override. - @Override - public FieldPanel<Date> setNewModel(final List<Serializable> list) { - final SimpleDateFormat formatter = datePattern == null - ? new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN, Locale.getDefault()) - : new SimpleDateFormat(datePattern, Locale.getDefault()); - - IModel<Date> model = new Model<Date>() { - - private static final long serialVersionUID = 6799404673615637845L; - - @Override - public Date getObject() { - Date date = null; - final Object obj = list == null || list.isEmpty() ? null : list.get(0); - - if (obj != null && !obj.toString().isEmpty()) { - if (obj instanceof String) { - // Parse string using datePattern - try { - date = formatter.parse(obj.toString()); - } catch (ParseException e) { - LOG.error("While parsing date", e); - } - } else if (obj instanceof Date) { - // Don't parse anything - date = (Date) obj; - } else { - // consider Long - date = new Date((Long) obj); - } - } - return date; - } - - @Override - public void setObject(final Date object) { - super.setObject(object); - } - }; - - field.setModel(model); - return this; - } - - // todo: Evaluate the actual needs to keep this override. - @SuppressWarnings("rawtypes") - @Override - public FieldPanel<Date> setNewModel(final ListItem item) { - final FastDateFormat formatter = datePattern == null - ? FastDateFormat.getInstance( - SyncopeConstants.DEFAULT_DATE_PATTERN, SyncopeConsoleSession.get().getLocale()) - : FastDateFormat.getInstance( - datePattern, SyncopeConsoleSession.get().getLocale()); - - IModel<Date> model = new Model<Date>() { - - private static final long serialVersionUID = 6799404673615637845L; - - @Override - public Date getObject() { - Date date = null; - - final Object obj = item.getModelObject(); - - if (obj != null && !obj.toString().isEmpty()) { - if (obj instanceof String) { - // Parse string using datePattern - try { - date = formatter.parse(obj.toString()); - } catch (ParseException e) { - LOG.error("While parsing date", e); - } - } else if (obj instanceof Date) { - // Don't parse anything - date = (Date) obj; - } else { - // consider Long - date = new Date((Long) obj); - } - } - - return date; - } - - @Override - @SuppressWarnings("unchecked") - public void setObject(final Date object) { - item.setModelObject(object != null ? formatter.format(object) : null); - } - }; - - field.setModel(model); - return this; - } - - @Override - public FieldPanel<Date> clone() { - final FieldPanel<Date> panel = new AjaxDateFieldPanel(getId(), name, new Model<Date>(null), datePattern); - - panel.setRequired(isRequired()); - panel.setReadOnly(isReadOnly()); - panel.setTitle(title); - - if (isRequiredLabelAdded) { - panel.addRequiredLabel(); - } - - return panel; - } -} http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateFieldPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateFieldPanel.java new file mode 100644 index 0000000..2d18b44 --- /dev/null +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateFieldPanel.java @@ -0,0 +1,132 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.console.wicket.markup.html.form; + +import java.io.Serializable; +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.Date; +import java.util.List; +import java.util.Locale; +import org.apache.syncope.common.lib.SyncopeConstants; +import org.apache.wicket.markup.html.list.ListItem; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.springframework.util.StringUtils; + +public class DateFieldPanel extends FieldPanel<Date> { + + private static final long serialVersionUID = -428975732068281726L; + + protected final String name; + + protected final String datePattern; + + protected DateFieldPanel(final String id, final String name, final IModel<Date> model, final String datePattern) { + super(id, name, model); + this.name = name; + this.datePattern = datePattern; + } + + @Override + public FieldPanel<Date> setNewModel(final List<Serializable> list) { + final SimpleDateFormat formatter = datePattern == null + ? new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN, Locale.getDefault()) + : new SimpleDateFormat(datePattern, Locale.getDefault()); + + setNewModel(new Model<Date>() { + + private static final long serialVersionUID = 527651414610325237L; + + @Override + public Date getObject() { + Date date = null; + + if (list != null && !list.isEmpty() && StringUtils.hasText(list.get(0).toString())) { + try { + // Parse string using datePattern + date = formatter.parse(list.get(0).toString()); + } catch (ParseException e) { + LOG.error("invalid parse exception", e); + } + } + + return date; + } + + @Override + public void setObject(final Date object) { + list.clear(); + if (object != null) { + list.add(formatter.format(object)); + } + } + }); + + return this; + } + + @SuppressWarnings("rawtypes") + @Override + public FieldPanel<Date> setNewModel(final ListItem item) { + final SimpleDateFormat formatter = datePattern == null + ? new SimpleDateFormat(SyncopeConstants.DEFAULT_DATE_PATTERN, Locale.getDefault()) + : new SimpleDateFormat(datePattern, Locale.getDefault()); + + IModel<Date> model = new Model<Date>() { + + private static final long serialVersionUID = 6799404673615637845L; + + @Override + public Date getObject() { + Date date = null; + + final Object obj = item.getModelObject(); + + if (obj != null && !obj.toString().isEmpty()) { + if (obj instanceof String) { + // Parse string using datePattern + try { + date = formatter.parse(obj.toString()); + } catch (ParseException e) { + LOG.error("While parsing date", e); + } + } else if (obj instanceof Date) { + // Don't parse anything + date = (Date) obj; + } else { + // consider Long + date = new Date((Long) obj); + } + } + + return date; + } + + @Override + @SuppressWarnings("unchecked") + public void setObject(final Date object) { + item.setModelObject(object != null ? formatter.format(object) : null); + } + }; + + field.setModel(model); + return this; + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTextFieldPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTextFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTextFieldPanel.java new file mode 100644 index 0000000..464bf55 --- /dev/null +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTextFieldPanel.java @@ -0,0 +1,112 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.console.wicket.markup.html.form; + +import java.util.Date; +import org.apache.syncope.client.console.commons.Constants; +import org.apache.wicket.Component; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; +import org.apache.wicket.datetime.markup.html.form.DateTextField; +import org.apache.wicket.extensions.yui.calendar.DatePicker; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.request.Response; + +public class DateTextFieldPanel extends DateFieldPanel { + + private static final long serialVersionUID = 1919852712185883648L; + + public DateTextFieldPanel(final String id, final String name, final IModel<Date> model, final String datePattern) { + super(id, name, model, datePattern); + + field = DateTextField.forDatePattern("field", model, datePattern); + + if (!isReadOnly()) { + field.add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { + + private static final long serialVersionUID = -1107858522700306810L; + + @Override + protected void onUpdate(final AjaxRequestTarget target) { + // nothing to do + } + }); + } + + field.add(getDatePicker()); + + add(field.setLabel(new Model<>(name)).setOutputMarkupId(true)); + } + + /** + * Setup a DatePicker component. + */ + private DatePicker getDatePicker() { + final DatePicker picker = new DatePicker() { + + private static final long serialVersionUID = 4166072895162221956L; + + @Override + protected boolean enableMonthYearSelection() { + return true; + } + + @Override + public void afterRender(final Component component) { + Response response = component.getResponse(); + response.write("\n<span class=\"yui-skin-sam\"> <span style=\""); + + if (renderOnLoad()) { + response.write("display:block;"); + } else { + response.write("display:none;"); + response.write("position:absolute;"); + } + + response.write("z-index: 99999;\" id=\""); + response.write(getEscapedComponentMarkupId()); + response.write("Dp\"></span>"); + + if (renderOnLoad()) { + response.write("<br style=\"clear:left;\"/>"); + } + response.write("</span>"); + } + }; + + picker.setShowOnFieldClick(true); + + return picker; + } + + @Override + public FieldPanel<Date> clone() { + final FieldPanel<Date> panel = new DateTextFieldPanel(getId(), name, new Model<Date>(), datePattern); + panel.setRequired(isRequired()); + panel.setReadOnly(isReadOnly()); + panel.setTitle(title); + + if (isRequiredLabelAdded) { + panel.addRequiredLabel(); + } + + return panel; + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.java new file mode 100644 index 0000000..4e13a6b --- /dev/null +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.java @@ -0,0 +1,187 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.console.wicket.markup.html.form; + +import java.util.Calendar; +import java.util.Date; +import org.apache.syncope.client.console.commons.Constants; +import org.apache.wicket.ajax.AjaxRequestTarget; +import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; +import org.apache.wicket.extensions.yui.calendar.DateTimeField; +import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.markup.html.form.FormComponent; +import org.apache.wicket.markup.html.form.validation.AbstractFormValidator; +import org.apache.wicket.model.IModel; +import org.apache.wicket.model.Model; +import org.apache.wicket.validation.IValidationError; +import org.apache.wicket.validation.ValidationError; + +public class DateTimeFieldPanel extends DateFieldPanel { + + private static final long serialVersionUID = -428975732068281726L; + + private Form<?> form = null; + + public DateTimeFieldPanel(final String id, final String name, final IModel<Date> model, final String datePattern) { + super(id, name, model, datePattern); + + field = new DateTimePickerField("field", model); + + final Calendar cal = Calendar.getInstance(); + + field.get("hours").add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { + + private static final long serialVersionUID = -1107858522700306810L; + + @SuppressWarnings("deprecation") + @Override + protected void onUpdate(final AjaxRequestTarget target) { + final Integer hours = ((DateTimeField) field).getHours(); + if (hours != null) { + cal.set(hours > 12 ? Calendar.HOUR_OF_DAY : Calendar.HOUR, hours); + field.setModelObject(cal.getTime()); + } + } + }); + + field.get("minutes").add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { + + private static final long serialVersionUID = -1107858522700306810L; + + @SuppressWarnings("deprecation") + @Override + protected void onUpdate(final AjaxRequestTarget target) { + final Integer minutes = ((DateTimeField) field).getMinutes(); + if (minutes != null) { + cal.set(Calendar.MINUTE, minutes); + field.setModelObject(cal.getTime()); + } + } + }); + + field.get("date").add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { + + private static final long serialVersionUID = -1107858522700306810L; + + @SuppressWarnings("deprecation") + @Override + protected void onUpdate(final AjaxRequestTarget target) { + final Date date = ((DateTimeField) field).getDate(); + if (date == null) { + field.setModelObject(null); + } else { + cal.setTime(date); + cal.set(Calendar.AM_PM, "PM".equals("" + ((DateTimeField) field).getAmOrPm()) + ? Calendar.PM + : Calendar.AM); + field.setModelObject(cal.getTime()); + } + } + }); + + field.get("amOrPmChoice").add(new AjaxFormComponentUpdatingBehavior(Constants.ON_CHANGE) { + + private static final long serialVersionUID = -1107858522700306810L; + + @SuppressWarnings("deprecation") + @Override + protected void onUpdate(final AjaxRequestTarget target) { + cal.set(Calendar.AM_PM, "PM".equals("" + ((DateTimeField) field).getAmOrPm()) ? Calendar.PM + : Calendar.AM); + field.setModelObject(cal.getTime()); + } + }); + + add(field.setLabel(new Model<String>(name)).setOutputMarkupId(true)); + } + + /** + * Custom form validator for registering and handling DateTimeField components that are in it. + */ + private class DateTimeFormValidator extends AbstractFormValidator { + + private static final long serialVersionUID = 6842264694946633582L; + + private FormComponent<?>[] dateTimeComponents; + + DateTimeFormValidator(final DateTimeField dateTimeComponent) { + if (dateTimeComponent == null) { + throw new IllegalArgumentException("argument dateTimeComponent cannot be null"); + } + + dateTimeComponents = new FormComponent<?>[] { dateTimeComponent }; + } + + @Override + public FormComponent<?>[] getDependentFormComponents() { + return dateTimeComponents; + } + + /** + * Validation rule : all 3 fields (date,hours,minutes) must be not-null. + * + * @param form + */ + @SuppressWarnings("deprecation") + @Override + public void validate(final Form<?> form) { + final DateTimeField dateTimeField = (DateTimeField) dateTimeComponents[0]; + + if (!(dateTimeField.getDate() != null && dateTimeField.getHours() != null + && dateTimeField.getMinutes() != null)) { + + ValidationError ve = new ValidationError(); + ve.setVariables(DateTimeFormValidator.this.variablesMap()); + ve.addKey(resourceKey()); + dateTimeComponents[0].error((IValidationError) ve); + } + } + } + + @SuppressWarnings("rawtypes") + public FieldPanel<Date> setFormValidator(final Form<?> form) { + if (field == null) { + LOG.error("Error setting form validator"); + } else { + form.add(new DateTimeFormValidator(((DateTimeField) field))); + this.form = form; + } + + return this; + } + + @Override + public FieldPanel<Date> clone() { + final FieldPanel<Date> panel = new DateTimeFieldPanel(getId(), name, new Model<Date>(null), datePattern); + + panel.setRequired(isRequired()); + panel.setReadOnly(isReadOnly()); + panel.setTitle(title); + + if (isRequiredLabelAdded) { + panel.addRequiredLabel(); + } + + if (form != null && isRequired()) { + ((DateTimeFieldPanel) panel).setFormValidator(form); + } + + return panel; + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTimePickerField.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTimePickerField.java b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTimePickerField.java new file mode 100644 index 0000000..d59dc0e --- /dev/null +++ b/client/console/src/main/java/org/apache/syncope/client/console/wicket/markup/html/form/DateTimePickerField.java @@ -0,0 +1,89 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.syncope.client.console.wicket.markup.html.form; + +import java.util.Date; +import java.util.Map; +import org.apache.wicket.Component; +import org.apache.wicket.extensions.yui.calendar.DatePicker; +import org.apache.wicket.extensions.yui.calendar.DateTimeField; +import org.apache.wicket.markup.head.IHeaderResponse; +import org.apache.wicket.model.IModel; +import org.apache.wicket.request.Response; +import org.apache.wicket.util.string.Strings; + +public class DateTimePickerField extends DateTimeField { + + private static final long serialVersionUID = 3733881705516982654L; + + public DateTimePickerField(final String id) { + this(id, null); + } + + public DateTimePickerField(final String id, final IModel<Date> model) { + super(id, model); + } + + @Override + protected DatePicker newDatePicker() { + return new DatePicker() { + + private static final long serialVersionUID = 1L; + + @Override + protected void configure(final Map<String, Object> widgetProperties, + final IHeaderResponse response, final Map<String, Object> initVariables) { + super.configure(widgetProperties, response, initVariables); + } + + @Override + public void afterRender(final Component component) { + Response response = component.getResponse(); + response.write("\n<span class=\"yui-skin-sam\"> <span style=\""); + + if (renderOnLoad()) { + response.write("display:block;"); + } else { + response.write("display:none;"); + response.write("position:absolute;"); + } + + response.write("z-index: 99999;\" id=\""); + response.write(getEscapedComponentMarkupId()); + response.write("Dp\"></span><i class=\"glyphicon glyphicon-calendar icon-top-position\""); + response.write(" id=\""); + response.write(getIconId()); + response.write("\" "); + response.write(" alt=\""); + CharSequence alt = getIconAltText(); + response.write(Strings.escapeMarkup((alt != null) ? alt.toString() : "")); + response.write("\" title=\""); + CharSequence title = getIconTitle(); + response.write(Strings.escapeMarkup((title != null) ? title.toString() : "")); + response.write("\"/>"); + + if (renderOnLoad()) { + response.write("<br style=\"clear:left;\"/>"); + } + response.write("</span>"); + } + + }; + } +} http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java ---------------------------------------------------------------------- diff --git a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java index 52f9fb8..1a2f6d0 100644 --- a/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java +++ b/client/console/src/main/java/org/apache/syncope/client/console/wizards/any/PlainAttrs.java @@ -33,14 +33,16 @@ import org.apache.syncope.client.console.commons.JexlHelpUtils; import org.apache.syncope.client.console.commons.Mode; import org.apache.syncope.client.console.commons.SchemaUtils; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxCheckBoxPanel; -import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDateFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxDropDownChoicePanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxSpinnerFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.AjaxTextFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.BinaryFieldPanel; +import org.apache.syncope.client.console.wicket.markup.html.form.DateTextFieldPanel; +import org.apache.syncope.client.console.wicket.markup.html.form.DateTimeFieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.FieldPanel; import org.apache.syncope.client.console.wicket.markup.html.form.MultiFieldPanel; import org.apache.syncope.common.lib.EntityTOUtils; +import org.apache.syncope.common.lib.SyncopeConstants; import org.apache.syncope.common.lib.to.AnyTO; import org.apache.syncope.common.lib.to.AnyTypeClassTO; import org.apache.syncope.common.lib.to.AttrTO; @@ -200,8 +202,20 @@ public class PlainAttrs extends AbstractAttrs { panel.setRequired(required); break; case Date: - panel = new AjaxDateFieldPanel( - "panel", schemaTO.getKey(), new Model<Date>(), schemaTO.getConversionPattern()); + final String dataPattern = schemaTO.getConversionPattern() == null + ? SyncopeConstants.DEFAULT_DATE_PATTERN + : schemaTO.getConversionPattern(); + + if (dataPattern.contains("H")) { + panel = new DateTimeFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), dataPattern); + } else { + panel = new DateTextFieldPanel("panel", schemaTO.getKey(), new Model<Date>(), dataPattern); + } + + if (required) { + panel.addRequiredLabel(); + } + break; case Enum: panel = new AjaxDropDownChoicePanel<>("panel", schemaTO.getKey(), new Model<String>(), false); http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/META-INF/resources/css/search.css ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/META-INF/resources/css/search.css b/client/console/src/main/resources/META-INF/resources/css/search.css index 29d152f..83cf0b6 100644 --- a/client/console/src/main/resources/META-INF/resources/css/search.css +++ b/client/console/src/main/resources/META-INF/resources/css/search.css @@ -61,6 +61,10 @@ width: 220px; } +.clause .textvalue{ + width: 45px; +} + .clause .action{ float: left; padding: 0px 7px 0px; http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css index 6aec71b..9785f26 100644 --- a/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css +++ b/client/console/src/main/resources/META-INF/resources/css/syncopeConsole.css @@ -541,3 +541,96 @@ END - Result page background-color: #dbffdb; border-color: #c1e9c1; } + +/** +START - AjaxDateTimePicker +*/ +.input-auto-width { + width: auto !important; +} + +.icon-top-position { + top: 5px !important; +} + +/** +END - AjaxDateTimePicker +*/ + +/** +START - Search - AjaxDateTimePicker +*/ +.searchBox .col-xs-12{ + padding-left: 0px !important; + padding-right: 0px !important; +} + +.clause{ + display: block; + line-height: 34px; + width: 100%; +} + +.clause .operator{ + width: 65px !important; +} + +.clause .operator .checkbox{ + margin: 0px !important; +} + +.clause .field { + line-height: 34px; + float: left; + padding: 0 3px 0px 0px; + display: inline-block !important; +} + +.clause .type{ + width: 120px !important; +} + +.clause .property{ + width: 190px; +} + +.clause .comparator{ + width: 100px; +} + +.clause .comparator button{ + width: 100px !important; +} + +.clause .value{ + width: 220px; +} + +.clause .date{ + width: 160px; +} + +.clause .hours{ + width: 45px; +} + +.clause .separator{ + width: 20px; + padding-left: 12px; +} + +.clause .action{ + float: left; + padding: 0px 7px 0px; +} + +.searchBox .input-group-addon:last-child{ + border: 1px solid #ccc !important; +} + +.searchBox .input-group{ + margin-top: 1px; +} +/** +END - Search - AjaxDateTimePicker +*/ http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.html ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.html index 70ea03d..190a28f 100644 --- a/client/console/src/main/resources/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.html +++ b/client/console/src/main/resources/org/apache/syncope/client/console/panels/search/AbstractSearchPanel.html @@ -19,9 +19,6 @@ under the License. <html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org"> <head><title></title></head> <body> - <wicket:head> - <link href="css/search.css" rel="stylesheet" type="text/css" /> - </wicket:head> <wicket:panel> <span class="searchBox"> <div class="col-xs-12"> http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDateFieldPanel.html ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDateFieldPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDateFieldPanel.html deleted file mode 100644 index 1b609e4..0000000 --- a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/AjaxDateFieldPanel.html +++ /dev/null @@ -1,34 +0,0 @@ -<!-- -Licensed to the Apache Software Foundation (ASF) under one -or more contributor license agreements. See the NOTICE file -distributed with this work for additional information -regarding copyright ownership. The ASF licenses this file -to you under the Apache License, Version 2.0 (the -"License"); you may not use this file except in compliance -with the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - -Unless required by applicable law or agreed to in writing, -software distributed under the License is distributed on an -"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -KIND, either express or implied. See the License for the -specific language governing permissions and limitations -under the License. ---> -<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org"> - <head> - <title>Ajaxt text field panel</title> - </head> - <body> - <wicket:extend> - <wicket:enclosure child="field-label"> - <label wicket:id="field-label">[LABEL]</label><span wicket:id="required"/> - <span wicket:id="externalAction"/> - </wicket:enclosure> - <fieldset class="input-group"> - <input class="form-control" type="datetime" wicket:id="date"/> - </fieldset> - </wicket:extend> - </body> -</html> http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTextFieldPanel.html ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTextFieldPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTextFieldPanel.html new file mode 100644 index 0000000..5cde8f1 --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTextFieldPanel.html @@ -0,0 +1,33 @@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org"> + <wicket:extend> + <wicket:enclosure child="field-label"> + <label wicket:id="field-label">[LABEL]</label><span wicket:id="required"/> + <span wicket:id="externalAction"/> + </wicket:enclosure> + <span class="clause"> + <span style="white-space: nowrap;"> + <span> + <input class="form-control datepicker" type="text" wicket:id="field" size="12" style="float: left"/> + </span> + </span> + </span> + </wicket:extend> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.html ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.html new file mode 100644 index 0000000..1b11685 --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.html @@ -0,0 +1,36 @@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org"> + <wicket:head> + <style type="text/css"> + div.input-group-addon:last-child { + border: 1px solid #ccc !important; + } + </style> + </wicket:head> + <wicket:extend> + <wicket:enclosure child="field-label"> + <label wicket:id="field-label">[LABEL]</label><span wicket:id="required"/> + <span wicket:id="externalAction"/> + </wicket:enclosure> + <div class="input-group"> + <span wicket:id="field"/> + </div> + </wicket:extend> +</html> \ No newline at end of file http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.properties new file mode 100644 index 0000000..9a39f4c --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel.properties @@ -0,0 +1,17 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +field.DateTimeFieldPanel$DateTimeFormValidator=Field '${label0}' must be fully valued http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel_it.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel_it.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel_it.properties new file mode 100644 index 0000000..c524834 --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel_it.properties @@ -0,0 +1,17 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +field.DateTimeFieldPanel$DateTimeFormValidator=Il campo '${label0}' dev'essere completamente valorizzato http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel_pt_BR.properties ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel_pt_BR.properties b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel_pt_BR.properties new file mode 100644 index 0000000..95be437 --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimeFieldPanel_pt_BR.properties @@ -0,0 +1,17 @@ +# Licensed to the Apache Software Foundation (ASF) under one +# or more contributor license agreements. See the NOTICE file +# distributed with this work for additional information +# regarding copyright ownership. The ASF licenses this file +# to you under the Apache License, Version 2.0 (the +# "License"); you may not use this file except in compliance +# with the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, +# software distributed under the License is distributed on an +# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +# KIND, either express or implied. See the License for the +# specific language governing permissions and limitations +# under the License. +field.DateTimeFieldPanel$DateTimeFormValidator=Campo'${label0}' precisa ser preenchido http://git-wip-us.apache.org/repos/asf/syncope/blob/8cee98bc/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimePickerField.html ---------------------------------------------------------------------- diff --git a/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimePickerField.html b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimePickerField.html new file mode 100644 index 0000000..fc9fbde --- /dev/null +++ b/client/console/src/main/resources/org/apache/syncope/client/console/wicket/markup/html/form/DateTimePickerField.html @@ -0,0 +1,41 @@ +<!-- +Licensed to the Apache Software Foundation (ASF) under one +or more contributor license agreements. See the NOTICE file +distributed with this work for additional information +regarding copyright ownership. The ASF licenses this file +to you under the Apache License, Version 2.0 (the +"License"); you may not use this file except in compliance +with the License. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, +software distributed under the License is distributed on an +"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +KIND, either express or implied. See the License for the +specific language governing permissions and limitations +under the License. +--> +<html xmlns="http://www.w3.org/1999/xhtml" xmlns:wicket="http://wicket.apache.org"> + <wicket:panel> + <span class="clause"> + <span style="white-space: nowrap;"> + <span class="field date"> + <input class="form-control input-auto-width" type="text" wicket:id="date" size="12" style="float: left"/> + </span> + <span class="field hours"> + <input class="form-control input-auto-width" type="text" wicket:id="hours" size="2" maxlength="2"/> + </span> + <span class="field separator"> + <span wicket:id="hoursSeparator">:</span> + </span> + <span class="field hours"> + <input class="form-control input-auto-width" type="text" wicket:id="minutes" size="2" maxlength="2"/> + </span> + <span class="field hours"> + <select class="form-control input-auto-width" wicket:id="amOrPmChoice"></select> + </span> + </span> + </span> + </wicket:panel> +</html> \ No newline at end of file