Author: dward
Date: 2007-11-07 18:15:04 +0100 (Wed, 07 Nov 2007)
New Revision: 5702
Modified:
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/utils/ClickListenerMetadata.java
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/widgets/metadata/MetadataEdit.java
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/wizard/AddAssetWizard.java
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/wizard/CreateCompositeAssetWizard.java
Log:
- CURRIKI-1100
- Initial step to split metadata info dialogue into two
Modified:
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/utils/ClickListenerMetadata.java
===================================================================
---
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/utils/ClickListenerMetadata.java
2007-11-07 16:56:40 UTC (rev 5701)
+++
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/utils/ClickListenerMetadata.java
2007-11-07 17:15:04 UTC (rev 5702)
@@ -34,6 +34,8 @@
}
public void onClick(Widget sender) {
- meta.submit();
+ if (meta.doNext()){
+ meta.submit();
+ }
}
}
Modified:
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/widgets/metadata/MetadataEdit.java
===================================================================
---
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/widgets/metadata/MetadataEdit.java
2007-11-07 16:56:40 UTC (rev 5701)
+++
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/widgets/metadata/MetadataEdit.java
2007-11-07 17:15:04 UTC (rev 5702)
@@ -40,12 +40,10 @@
import org.curriki.gwt.client.editor.Editor;
import org.curriki.gwt.client.widgets.modaldialogbox.NextCancelDialog;
import org.curriki.gwt.client.widgets.modaldialogbox.NominateDialog;
-import org.gwtwidgets.client.util.SimpleDateFormat;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
-import java.util.Date;
public class MetadataEdit extends Composite implements MouseListener,
ClickListener
@@ -54,6 +52,7 @@
private Document doc;
private FormPanel form = new FormPanel();
private boolean fullMode;
+ private boolean startFullMode;
private HashMap fieldMap = new HashMap();
private Hyperlink moreInfoLabel = null;
private HTML moreInfoText = null;
@@ -62,6 +61,9 @@
private NextCancelDialog ncDialog;
// CRS
private String currentCRSStatus;
+ private int step = 1;
+ private VerticalPanel panelStep1;
+ private VerticalPanel panelStep2;
public MetadataEdit(boolean fullMode){
this(null, fullMode);
@@ -99,10 +101,12 @@
return;
this.doc = doc;
this.fullMode = fullMode;
+ this.startFullMode = fullMode;
if (((AssetDocument) doc).isDirectionBlock()) {
panel.clear();
panel.add(new
HTML(Main.getTranslation("metadata.directionblocks_have_no_metadata")));
+ startFullMode = true; // So that "Next" will work correctly
} else {
form.setAction(doc.getSaveURL());
showEdit();
@@ -123,23 +127,21 @@
panel.clear();
panel.add(new Hidden("comment",
Main.getTranslation("curriki.comment.updatemetadata")));
- if (!fullMode) {
- addSectionTitle("when_you_add_a_resource", true);
- panel.add(new
HTML(Main.getTranslation("metadata.add_resource_metadata_desc")));
- addSubTitle("complete_required_fields");
+
+ if (startFullMode){
+ showTabEdit();
+ } else {
+ showDialogEdit();
}
- //HTML htmlRequired = new HTML("<span
class=\"required_fields\">!</span> " +
Main.getTranslation("metadata.required_fields"));
- //panel.add(htmlRequired);
+ }
+ protected void showTabEdit(){
addSectionTitle("required_information", true);
XObject assetObj = doc.getObject(Constants.ASSET_CLASS);
XObject rightObj = doc.getObject(Constants.ASSET_LICENCE_CLASS);
addEditor(assetObj, "title", "title", true);
- HTML copyInfo = new
HTML(Main.getTranslation("metadata.copy_info_text"));
- copyInfo.addStyleName("copy-info-text");
- panel.add(copyInfo);
addEditor(assetObj, "description", "description", true);
@@ -197,6 +199,61 @@
}
}
+ protected void showDialogEdit(){
+ panelStep1 = new VerticalPanel();
+ panelStep2 = new VerticalPanel();
+ panelStep2.setVisible(false);
+
+ addSectionTitle(panelStep1, "when_you_add_a_resource", true);
+ panelStep1.add(new
HTML(Main.getTranslation("metadata.add_resource_metadata_desc")));
+ addSubTitle(panelStep1, "complete_required_fields");
+
+ XObject assetObj = doc.getObject(Constants.ASSET_CLASS);
+ XObject rightObj = doc.getObject(Constants.ASSET_LICENCE_CLASS);
+
+ addEditor(assetObj, "title", "title", panelStep1, true, true);
+ addEditor(assetObj, "description", "description", panelStep1, true,
true);
+
+ HorizontalPanel hPanel = new HorizontalPanel();
+
+ hPanel.addStyleName("subject-level-table");
+ addEditor(assetObj, "fw_items", "fw_items", hPanel, true, true);
+ addEditor(assetObj, "educational_level2", "educational_level", hPanel,
true, true);
+ hPanel.setCellWidth(hPanel.getWidget(0), "50%");
+ hPanel.setCellWidth(hPanel.getWidget(1), "50%");
+ panelStep1.add(hPanel);
+
+ addEditor(assetObj, Constants.ASSET_INSTRUCTIONAL_COMPONENT_PROPERTY,
Constants.ASSET_INSTRUCTIONAL_COMPONENT_PROPERTY, panelStep1, true, fullMode);
+
+ panel.add(panelStep1);
+
+
+ addSubTitle(panelStep2, "review_and_update_fields");
+ User user = Main.getSingleton().getUser();
+ boolean forceViewMode = !(user == null ||
(doc.getCreator().equals(user.getFullName()) || user.isAdmin()));
+ addEditor(assetObj, "rights", "rights", panelStep2, false, true,
forceViewMode);
+
+ String rating = "";
+ if (doc.getObject(Constants.CURRIKI_REVIEW_STATUS_CLASS) != null){
+ doc.use(Constants.CURRIKI_REVIEW_STATUS_CLASS);
+ if (doc.get(Constants.CURRIKI_REVIEW_STATUS_STATUS) != null){
+ rating =
String.valueOf(doc.getValue(Constants.CURRIKI_REVIEW_STATUS_STATUS));
+ }
+ }
+ if (!(rating.equals("P") || rating.equals("3"))){
+ // Only show Hide From Search if the CRS rating is not a P or 3
+ addEditor(assetObj, Constants.ASSET_HIDE_FROM_SEARCH_PROPERTY,
Constants.ASSET_HIDE_FROM_SEARCH_PROPERTY, panelStep2, false, true);
+ }
+
+ addEditor(assetObj, "keywords", "keywords", panelStep2, false, true);
+ addEditor(assetObj, "language", "language", panelStep2, false, true);
+
+ addEditor(rightObj, Constants.ASSET_LICENCE_RIGHT_HOLDER_PROPERTY,
"right_holder", panelStep2, false, true, forceViewMode);
+ addEditor(rightObj, "licenseType2", "license_type", panelStep2, false,
true, forceViewMode);
+
+ panel.add(panelStep2);
+ }
+
private void addCRS(Document doc, Panel panel, boolean isPrivate) {
String role = Main.getProperty("role");
XObject crsObj = doc.getObject(Constants.CURRIKI_REVIEW_STATUS_CLASS);
@@ -339,21 +396,33 @@
}
public void addSectionTitle(String titleKey, boolean visible){
+ addSectionTitle(panel, titleKey, visible);
+ }
+
+ public void addSectionTitle(Panel panel, String titleKey, boolean visible){
Label label = new Label(Main.getTranslation("metadata." + titleKey));
label.addStyleName("curriki-title");
label.setVisible(visible);
-
+
fieldMap.put(titleKey, label);
panel.add(label);
}
public void addSubTitle(String titleKey){
+ addSubTitle(panel, titleKey);
+ }
+
+ public void addSubTitle(Panel panel, String titleKey){
HTML title = new HTML(Main.getTranslation("metadata." + titleKey));
title.addStyleName("curriki-subtitle");
panel.add(title);
}
public void SetHiddenCategoryValue(String value){
+ SetHiddenCategoryValue(panel, value);
+ }
+
+ public void SetHiddenCategoryValue(Panel panel, String value){
XObject obj = doc.getObject(Constants.ASSET_CLASS);
if (obj != null){
Hidden hidden = new
Hidden(obj.getEditPropertyFieldName("category"), value);
@@ -538,24 +607,31 @@
}
public void submit(){
+ if (!hasMissing()){
+ form.submit();
+ }
+ }
+
+ public boolean hasMissing(){
String missing = isFormValid();
- if (missing.equals(""))
- form.submit();
- else {
+ if (missing.equals("")){
+ return false;
+ } else {
String[] missings = missing.split(",");
String text;
if (missings.length==1) {
- text = Main.getTranslation("metadata.field_missing") + ": " +
Main.getTranslation("metadata." + missings[0] + "_title");
+ text = Main.getTranslation("metadata.field_missing") + ": " +
Main.getTranslation("metadata." + missings[0] + "_title");
} else {
text = Main.getTranslation("metadata.fields_missing");
text += " : ";
for (int i=0;i<missings.length;i++) {
if (i>0)
- text += ",";
+ text += ",";
text += Main.getTranslation("metadata." + missings[i] +
"_title");
}
}
Window.alert(text);
+ return true;
}
}
@@ -581,6 +657,13 @@
missing += "description";
}
+ if (form["XWiki.AssetClass_0_instructional_component2"].selectedIndex
== -1) {
+ if (!first)
+ missing += ",";
+ first = false;
+ missing += "instructional_component";
+ }
+
var checkboxes = form["XWiki.AssetClass_0_educational_level2"];
var selected = false;
@@ -631,6 +714,17 @@
}
}
+ private void set_view_step(int nextStep){
+ if (nextStep == 1){
+ panelStep1.setVisible(true);
+ panelStep2.setVisible(false);
+ }
+ if (nextStep == 2){
+ panelStep1.setVisible(false);
+ panelStep2.setVisible(true);
+ }
+ }
+
public void onMouseDown(Widget sender, int x, int y) {
//To change body of implemented methods use File | Settings | File
Templates.
}
@@ -661,4 +755,23 @@
public void setResizeListener(WindowResizeListener resizeListener) {
this.resizeListener = resizeListener;
}
+
+ public boolean doNext(){
+ if (startFullMode){
+ return true;
+ }
+ if (step == 1){
+ if (!hasMissing()){
+ // Go to step 2
+ step = 2;
+ set_view_step(step);
+ }
+ return false;
+ } else if (step == 2){
+ if (hasMissing()){
+ return false;
+ }
+ }
+ return true;
+ }
}
Modified:
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/wizard/AddAssetWizard.java
===================================================================
---
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/wizard/AddAssetWizard.java
2007-11-07 16:56:40 UTC (rev 5701)
+++
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/wizard/AddAssetWizard.java
2007-11-07 17:15:04 UTC (rev 5702)
@@ -41,11 +41,12 @@
import org.curriki.gwt.client.CurrikiAsyncCallback;
import org.curriki.gwt.client.CurrikiService;
import org.curriki.gwt.client.Main;
-import org.curriki.gwt.client.search.editor.ResourceAdder;
-import org.curriki.gwt.client.search.editor.SearchPanel;
import org.curriki.gwt.client.editor.Editor;
import org.curriki.gwt.client.pages.EditPage;
+import org.curriki.gwt.client.search.editor.ResourceAdder;
+import org.curriki.gwt.client.search.editor.SearchPanel;
import org.curriki.gwt.client.utils.ClickListenerDocument;
+import org.curriki.gwt.client.utils.ClickListenerMetadata;
import org.curriki.gwt.client.widgets.addfile.AddFileDialog;
import org.curriki.gwt.client.widgets.addfile.URLEntry;
import org.curriki.gwt.client.widgets.addfile.VidiTalkUploadComponent;
@@ -152,7 +153,7 @@
meta.SetHiddenCategoryValue(category);
panel.add(meta, DockPanel.CENTER);
- bttNext = new Button(Main.getTranslation("editor.btt_next"), new
MetadataClickListener(meta));
+ bttNext = new Button(Main.getTranslation("editor.btt_next"), new
ClickListenerMetadata(meta));
bttNext.addStyleName("gwt-ButtonOrange");
bttNext.addStyleName("gwt-bttNext");
@@ -204,18 +205,6 @@
editor.refreshState();
}
- public class MetadataClickListener implements ClickListener {
- MetadataEdit meta;
-
- public MetadataClickListener(MetadataEdit meta) {
- this.meta = meta;
- }
-
- public void onClick(Widget sender) {
- meta.submit();
- }
- }
-
public void initFileOrLink() {
ClickListenerDocument nextCallback = new ClickListenerDocument(){
public void onClick(Widget sender){
Modified:
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/wizard/CreateCompositeAssetWizard.java
===================================================================
---
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/wizard/CreateCompositeAssetWizard.java
2007-11-07 16:56:40 UTC (rev 5701)
+++
xwiki-products/curriki/trunk/gwt/src/main/java/org/curriki/gwt/client/wizard/CreateCompositeAssetWizard.java
2007-11-07 17:15:04 UTC (rev 5702)
@@ -21,13 +21,21 @@
*/
package org.curriki.gwt.client.wizard;
-import com.google.gwt.user.client.Window;
-import com.google.gwt.user.client.ui.*;
+import com.google.gwt.user.client.ui.Button;
+import com.google.gwt.user.client.ui.ClickListener;
+import com.google.gwt.user.client.ui.DockPanel;
+import com.google.gwt.user.client.ui.FormHandler;
+import com.google.gwt.user.client.ui.FormSubmitCompleteEvent;
+import com.google.gwt.user.client.ui.FormSubmitEvent;
+import com.google.gwt.user.client.ui.HorizontalPanel;
+import com.google.gwt.user.client.ui.ScrollPanel;
+import com.google.gwt.user.client.ui.TextBox;
+import com.google.gwt.user.client.ui.Widget;
import com.xpn.xwiki.gwt.api.client.Document;
+import org.curriki.gwt.client.CurrikiAsyncCallback;
import org.curriki.gwt.client.CurrikiService;
import org.curriki.gwt.client.Main;
-import org.curriki.gwt.client.CurrikiAsyncCallback;
-import org.curriki.gwt.client.utils.Translator;
+import org.curriki.gwt.client.utils.ClickListenerMetadata;
import org.curriki.gwt.client.widgets.metadata.MetadataEdit;
@@ -87,7 +95,7 @@
panel.add(meta, DockPanel.CENTER);
- bttNext = new Button(Main.getTranslation("editor.btt_finish"), new
MetadataClickListener(meta));
+ bttNext = new Button(Main.getTranslation("editor.btt_finish"), new
ClickListenerMetadata(meta));
bttNext.addStyleName("gwt-ButtonOrange");
HorizontalPanel buttonPanel = new HorizontalPanel();
@@ -99,18 +107,6 @@
}
}
- public class MetadataClickListener implements ClickListener {
- MetadataEdit meta;
-
- public MetadataClickListener(MetadataEdit meta) {
- this.meta = meta;
- }
-
- public void onClick(Widget sender) {
- meta.submit();
- }
- }
-
public int getOffsetHeight(){
return panel.getOffsetHeight();
}
_______________________________________________
notifications mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/notifications