Start making the portlet responsive for liferay 6.2.5
git-svn-id: https://svn.research-infrastructures.eu/d4science/gcube/trunk/portlets/user/share-updates@128390 82a268e6-3cf1-43bd-a215-b396298e98cf
This commit is contained in:
parent
75b1336145
commit
5ed995ddf7
|
@ -5,10 +5,7 @@
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/java"/>
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/target/generated-sources/gwt"/>
|
||||||
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
<wb-resource deploy-path="/WEB-INF/classes" source-path="/src/main/resources"/>
|
||||||
<dependent-module archiveName="gcube-widgets-2.0.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/gcube-widgets/gcube-widgets">
|
<dependent-module archiveName="fileupload-progress-bar-1.4.1-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/fileupload-progress-bar/fileupload-progress-bar">
|
||||||
<dependency-type>uses</dependency-type>
|
|
||||||
</dependent-module>
|
|
||||||
<dependent-module archiveName="pickitem-widget-1.1.0-SNAPSHOT.jar" deploy-path="/WEB-INF/lib" handle="module:/resource/pickitem-widget/pickitem-widget">
|
|
||||||
<dependency-type>uses</dependency-type>
|
<dependency-type>uses</dependency-type>
|
||||||
</dependent-module>
|
</dependent-module>
|
||||||
<property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/>
|
<property name="java-output-path" value="/${module}/target/www/WEB-INF/classes"/>
|
||||||
|
|
|
@ -162,5 +162,11 @@ public class AttachmentPreviewer extends Composite {
|
||||||
attachmentContainer.getElement().getStyle().setWidth(newWidth, unit);
|
attachmentContainer.getElement().getStyle().setWidth(newWidth, unit);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void changeAttachmentStyle(String style){
|
||||||
|
|
||||||
|
attachmentContainer.setStyleName(style);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,25 +26,12 @@
|
||||||
vertical-align: middle;
|
vertical-align: middle;
|
||||||
}
|
}
|
||||||
|
|
||||||
.container-style {
|
|
||||||
padding: 5px;
|
|
||||||
font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;
|
|
||||||
background-clip: border-box;
|
|
||||||
background-color: #FBFBFB;
|
|
||||||
background-image: none;
|
|
||||||
border: 1px solid #DDD;
|
|
||||||
border-radius: 4px;
|
|
||||||
width: 579px;
|
|
||||||
margin: 5px;
|
|
||||||
display: inline-block;
|
|
||||||
}
|
|
||||||
|
|
||||||
.label-style {
|
.label-style {
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
width: 200px
|
word-wrap: break-word;
|
||||||
}
|
}
|
||||||
</ui:style>
|
</ui:style>
|
||||||
<g:HTMLPanel styleName="{style.container-style}" ui:field="attachmentContainer">
|
<g:HTMLPanel styleName="attachment-container-full-width" ui:field="attachmentContainer">
|
||||||
<g:Image styleName="{style.image-preview}" ui:field="imagePreview"></g:Image>
|
<g:Image styleName="{style.image-preview}" ui:field="imagePreview"></g:Image>
|
||||||
<g:VerticalPanel styleName="{style.attach-result}">
|
<g:VerticalPanel styleName="{style.attach-result}">
|
||||||
<g:Label ui:field="fileNameLabel" styleName="{style.label-style}"></g:Label>
|
<g:Label ui:field="fileNameLabel" styleName="{style.label-style}"></g:Label>
|
||||||
|
|
|
@ -2,7 +2,6 @@ package org.gcube.portlets.user.shareupdates.client.view;
|
||||||
|
|
||||||
|
|
||||||
import com.google.gwt.core.shared.GWT;
|
import com.google.gwt.core.shared.GWT;
|
||||||
import com.google.gwt.dom.client.Style.Unit;
|
|
||||||
import com.google.gwt.user.client.ui.FlowPanel;
|
import com.google.gwt.user.client.ui.FlowPanel;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
import com.google.gwt.user.client.ui.WidgetCollection;
|
import com.google.gwt.user.client.ui.WidgetCollection;
|
||||||
|
@ -12,8 +11,8 @@ import com.google.gwt.user.client.ui.WidgetCollection;
|
||||||
* @author Costantino Perciante at ISTI CNR
|
* @author Costantino Perciante at ISTI CNR
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class Placeholder extends FlowPanel {
|
public class Placeholder extends FlowPanel{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Modified version of the add method.
|
* Modified version of the add method.
|
||||||
*/
|
*/
|
||||||
|
@ -33,8 +32,8 @@ public class Placeholder extends FlowPanel {
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
// we need to change the length of the last element added and of this new one
|
// we need to change the length of the last element added and of this new one
|
||||||
((AttachmentPreviewer) listOfChildren.get(size -1)).changeAttachmentWidth(278, Unit.PX);
|
((AttachmentPreviewer) listOfChildren.get(size -1)).changeAttachmentStyle("attachment-container-half-width");
|
||||||
atPrev.changeAttachmentWidth(278, Unit.PX);
|
atPrev.changeAttachmentStyle("attachment-container-half-width");
|
||||||
|
|
||||||
// add it finally
|
// add it finally
|
||||||
add((Widget)atPrev);
|
add((Widget)atPrev);
|
||||||
|
@ -50,7 +49,7 @@ public class Placeholder extends FlowPanel {
|
||||||
|
|
||||||
// if the number is odd
|
// if the number is odd
|
||||||
if(listOfChildren.size()%2 != 0)
|
if(listOfChildren.size()%2 != 0)
|
||||||
((AttachmentPreviewer) listOfChildren.get(listOfChildren.size() -1)).changeAttachmentWidth(579, Unit.PX);
|
((AttachmentPreviewer) listOfChildren.get(listOfChildren.size() -1)).changeAttachmentStyle("attachment-container-full-width");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,6 +16,8 @@ import org.gcube.portlets.user.shareupdates.client.ShareUpdateServiceAsync;
|
||||||
import org.gcube.portlets.user.shareupdates.shared.LinkPreview;
|
import org.gcube.portlets.user.shareupdates.shared.LinkPreview;
|
||||||
import org.gcube.portlets.user.shareupdates.shared.UploadedFile;
|
import org.gcube.portlets.user.shareupdates.shared.UploadedFile;
|
||||||
import org.gcube.portlets.user.shareupdates.shared.UserSettings;
|
import org.gcube.portlets.user.shareupdates.shared.UserSettings;
|
||||||
|
import org.gcube.portlets.widgets.fileupload.client.events.FileTooLargeEvent;
|
||||||
|
import org.gcube.portlets.widgets.fileupload.client.events.FileTooLargeEventHandler;
|
||||||
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEvent;
|
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEvent;
|
||||||
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEventHandler;
|
import org.gcube.portlets.widgets.fileupload.client.events.FileUploadCompleteEventHandler;
|
||||||
import org.gcube.portlets.widgets.fileupload.client.view.FileSubmit;
|
import org.gcube.portlets.widgets.fileupload.client.view.FileSubmit;
|
||||||
|
@ -23,10 +25,11 @@ import org.gcube.portlets.widgets.fileupload.client.view.UploadProgressPanel;
|
||||||
import org.jsonmaker.gwt.client.Jsonizer;
|
import org.jsonmaker.gwt.client.Jsonizer;
|
||||||
|
|
||||||
import com.github.gwtbootstrap.client.ui.Button;
|
import com.github.gwtbootstrap.client.ui.Button;
|
||||||
|
import com.github.gwtbootstrap.client.ui.ListBox;
|
||||||
|
import com.github.gwtbootstrap.client.ui.constants.Device;
|
||||||
import com.google.gwt.core.client.GWT;
|
import com.google.gwt.core.client.GWT;
|
||||||
import com.google.gwt.dom.client.Document;
|
import com.google.gwt.dom.client.Document;
|
||||||
import com.google.gwt.dom.client.Style.BorderStyle;
|
import com.google.gwt.dom.client.Style.BorderStyle;
|
||||||
import com.google.gwt.dom.client.Style.Display;
|
|
||||||
import com.google.gwt.dom.client.Style.FontWeight;
|
import com.google.gwt.dom.client.Style.FontWeight;
|
||||||
import com.google.gwt.dom.client.Style.Unit;
|
import com.google.gwt.dom.client.Style.Unit;
|
||||||
import com.google.gwt.dom.client.Style.Visibility;
|
import com.google.gwt.dom.client.Style.Visibility;
|
||||||
|
@ -42,20 +45,19 @@ import com.google.gwt.uibinder.client.UiBinder;
|
||||||
import com.google.gwt.uibinder.client.UiFactory;
|
import com.google.gwt.uibinder.client.UiFactory;
|
||||||
import com.google.gwt.uibinder.client.UiField;
|
import com.google.gwt.uibinder.client.UiField;
|
||||||
import com.google.gwt.uibinder.client.UiHandler;
|
import com.google.gwt.uibinder.client.UiHandler;
|
||||||
|
import com.google.gwt.user.client.Timer;
|
||||||
import com.google.gwt.user.client.Window;
|
import com.google.gwt.user.client.Window;
|
||||||
import com.google.gwt.user.client.rpc.AsyncCallback;
|
import com.google.gwt.user.client.rpc.AsyncCallback;
|
||||||
import com.google.gwt.user.client.ui.Composite;
|
import com.google.gwt.user.client.ui.Composite;
|
||||||
import com.google.gwt.user.client.ui.FileUpload;
|
import com.google.gwt.user.client.ui.FileUpload;
|
||||||
import com.google.gwt.user.client.ui.HTMLPanel;
|
import com.google.gwt.user.client.ui.HTMLPanel;
|
||||||
import com.google.gwt.user.client.ui.Image;
|
import com.google.gwt.user.client.ui.Image;
|
||||||
import com.google.gwt.user.client.ui.ListBox;
|
|
||||||
import com.google.gwt.user.client.ui.ValueBoxBase.TextAlignment;
|
import com.google.gwt.user.client.ui.ValueBoxBase.TextAlignment;
|
||||||
import com.google.gwt.user.client.ui.Widget;
|
import com.google.gwt.user.client.ui.Widget;
|
||||||
/**
|
/**
|
||||||
* The main share update class.
|
* The main share update class.
|
||||||
* @author Massimiliano Assante at ISTI CNR
|
* @author Massimiliano Assante at ISTI CNR
|
||||||
* @author Costantino Perciante at ISTI CNR
|
* @author Costantino Perciante at ISTI CNR
|
||||||
*
|
|
||||||
*/
|
*/
|
||||||
public class ShareUpdateForm extends Composite {
|
public class ShareUpdateForm extends Composite {
|
||||||
|
|
||||||
|
@ -129,10 +131,16 @@ public class ShareUpdateForm extends Composite {
|
||||||
Placeholder preview;
|
Placeholder preview;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
Button submitButton;
|
Button submitButtonScreen;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
Button attachButton;
|
Button attachButtonScreen;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
Button submitButtonPhoneTablet;
|
||||||
|
|
||||||
|
@UiField
|
||||||
|
Button attachButtonPhoneTablet;
|
||||||
|
|
||||||
@UiField
|
@UiField
|
||||||
Image avatarImage;
|
Image avatarImage;
|
||||||
|
@ -162,8 +170,25 @@ public class ShareUpdateForm extends Composite {
|
||||||
avatarImage.setUrl(loading);
|
avatarImage.setUrl(loading);
|
||||||
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
||||||
|
|
||||||
attachButton.getElement().getStyle().setDisplay(Display.INLINE);
|
// set the style and on which devices we show the buttons
|
||||||
attachButton.addStyleName("upload-btn-m");
|
submitButtonScreen.addStyleName("upload-btn-m");
|
||||||
|
attachButtonScreen.addStyleName("upload-btn-m");
|
||||||
|
submitButtonPhoneTablet.addStyleName("upload-btn-m");
|
||||||
|
attachButtonPhoneTablet.addStyleName("upload-btn-m");
|
||||||
|
|
||||||
|
submitButtonScreen.setShowOn(Device.DESKTOP);
|
||||||
|
attachButtonScreen.setShowOn(Device.DESKTOP);
|
||||||
|
submitButtonScreen.setHideOn(Device.TABLET);
|
||||||
|
attachButtonScreen.setHideOn(Device.TABLET);
|
||||||
|
submitButtonScreen.setHideOn(Device.PHONE);
|
||||||
|
attachButtonScreen.setHideOn(Device.PHONE);
|
||||||
|
|
||||||
|
submitButtonPhoneTablet.setHideOn(Device.DESKTOP);
|
||||||
|
attachButtonPhoneTablet.setHideOn(Device.DESKTOP);
|
||||||
|
submitButtonPhoneTablet.setShowOn(Device.TABLET);
|
||||||
|
attachButtonPhoneTablet.setShowOn(Device.TABLET);
|
||||||
|
submitButtonPhoneTablet.setShowOn(Device.PHONE);
|
||||||
|
attachButtonPhoneTablet.setShowOn(Device.PHONE);
|
||||||
|
|
||||||
shareupdateService.getUserSettings(new AsyncCallback<UserSettings>() {
|
shareupdateService.getUserSettings(new AsyncCallback<UserSettings>() {
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
|
@ -203,8 +228,12 @@ public class ShareUpdateForm extends Composite {
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
privacyLevel.setVisible(true);
|
privacyLevel.setVisible(true);
|
||||||
attachButton.setVisible(true);
|
|
||||||
submitButton.setVisible(true);
|
// all visible
|
||||||
|
attachButtonScreen.setVisible(true);
|
||||||
|
submitButtonScreen.setVisible(true);
|
||||||
|
attachButtonPhoneTablet.setVisible(true);
|
||||||
|
submitButtonPhoneTablet.setVisible(true);
|
||||||
|
|
||||||
// check if DND can be activated and enable it if it's possible
|
// check if DND can be activated and enable it if it's possible
|
||||||
if(checkDNDAvailability()){
|
if(checkDNDAvailability()){
|
||||||
|
@ -265,6 +294,27 @@ public class ShareUpdateForm extends Composite {
|
||||||
checkFile(event.getUploadedFileInfo().getFilename(), absolutePathOnServer);
|
checkFile(event.getUploadedFileInfo().getFilename(), absolutePathOnServer);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// on too large files event put to enabled the buttons attach/submit
|
||||||
|
eventBus.addHandler(FileTooLargeEvent.TYPE, new FileTooLargeEventHandler() {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onFileTooLargeEvent(FileTooLargeEvent fileTooLargeEvent) {
|
||||||
|
|
||||||
|
// We need to delay the enable calls because this event is launched in a
|
||||||
|
// FileUpload.onChange() that is also used for disabling the same buttons.
|
||||||
|
// In order to be sure they are first disabled and then enabled a delay is needed.
|
||||||
|
Timer timer = new Timer() {
|
||||||
|
public void run() {
|
||||||
|
enableSubmitButtons(true);
|
||||||
|
enableAttachButtons(true);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// Execute the timer to expire 2 seconds in the future
|
||||||
|
timer.schedule(300);
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Used by UiBinder to instantiate UploadProgressView */
|
/** Used by UiBinder to instantiate UploadProgressView */
|
||||||
|
@ -285,8 +335,11 @@ public class ShareUpdateForm extends Composite {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("attachButton")
|
/**
|
||||||
void onAttachClick(ClickEvent e) {
|
* One handler for the two attach buttons.
|
||||||
|
* @param e
|
||||||
|
*/
|
||||||
|
private void onAttachClickHandlerBody(ClickEvent e){
|
||||||
|
|
||||||
// check if there is a link preview
|
// check if there is a link preview
|
||||||
if(linkPreviewer != null){
|
if(linkPreviewer != null){
|
||||||
|
@ -319,7 +372,8 @@ public class ShareUpdateForm extends Composite {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChange(ChangeEvent event) {
|
public void onChange(ChangeEvent event) {
|
||||||
attachButton.setEnabled(false);
|
enableSubmitButtons(false);
|
||||||
|
enableAttachButtons(false);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -327,11 +381,29 @@ public class ShareUpdateForm extends Composite {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@UiHandler("submitButton")
|
@UiHandler("attachButtonScreen")
|
||||||
void onClick(ClickEvent e) {
|
void onAttachClickScreen(ClickEvent e) {
|
||||||
|
|
||||||
|
onAttachClickHandlerBody(e);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@UiHandler("attachButtonPhoneTablet")
|
||||||
|
void onAttachClickOther(ClickEvent e) {
|
||||||
|
|
||||||
|
onAttachClickHandlerBody(e);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* One handler for the two submit buttons.
|
||||||
|
* @param e
|
||||||
|
*/
|
||||||
|
private void onSubmitClickHandlerBody(ClickEvent e){
|
||||||
|
|
||||||
//because otherwise it looses the other properties setting
|
//because otherwise it looses the other properties setting
|
||||||
attachButton.getElement().getStyle().setVisibility(Visibility.VISIBLE);
|
attachButtonScreen.getElement().getStyle().setVisibility(Visibility.VISIBLE);
|
||||||
|
attachButtonPhoneTablet.getElement().getStyle().setVisibility(Visibility.VISIBLE);
|
||||||
|
|
||||||
shareupdateService.getUserSettings(new AsyncCallback<UserSettings>() {
|
shareupdateService.getUserSettings(new AsyncCallback<UserSettings>() {
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
|
@ -384,6 +456,21 @@ public class ShareUpdateForm extends Composite {
|
||||||
postTweet(toPost, shareTextArea.getMentionedUsers(), postContent);
|
postTweet(toPost, shareTextArea.getMentionedUsers(), postContent);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@UiHandler("submitButtonScreen")
|
||||||
|
void onClickSubmitScreen(ClickEvent e) {
|
||||||
|
|
||||||
|
onSubmitClickHandlerBody(e);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@UiHandler("submitButtonPhoneTablet")
|
||||||
|
void onClickSubmitOtherDevices(ClickEvent e) {
|
||||||
|
|
||||||
|
onSubmitClickHandlerBody(e);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -403,7 +490,7 @@ public class ShareUpdateForm extends Composite {
|
||||||
}
|
}
|
||||||
|
|
||||||
// disable text edit and submission button
|
// disable text edit and submission button
|
||||||
submitButton.setEnabled(false);
|
enableSubmitButtons(false);
|
||||||
shareTextArea.setEnabled(false);
|
shareTextArea.setEnabled(false);
|
||||||
|
|
||||||
// retrieve the vre id
|
// retrieve the vre id
|
||||||
|
@ -436,7 +523,7 @@ public class ShareUpdateForm extends Composite {
|
||||||
shareupdateService.sharePostWithLinkPreview(toShareText, FeedType.TWEET, getPrivacyLevel(), vreOrgId, preview2Share, linkUrlThumbnail, mentionedUsers, notifyGroup, new AsyncCallback<ClientFeed>() {
|
shareupdateService.sharePostWithLinkPreview(toShareText, FeedType.TWEET, getPrivacyLevel(), vreOrgId, preview2Share, linkUrlThumbnail, mentionedUsers, notifyGroup, new AsyncCallback<ClientFeed>() {
|
||||||
|
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
submitButton.setEnabled(true);
|
enableSubmitButtons(true);
|
||||||
shareTextArea.setEnabled(true);
|
shareTextArea.setEnabled(true);
|
||||||
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
||||||
shareTextArea.cleanHighlighterDiv();
|
shareTextArea.cleanHighlighterDiv();
|
||||||
|
@ -445,8 +532,7 @@ public class ShareUpdateForm extends Composite {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onSuccess(ClientFeed feed) {
|
public void onSuccess(ClientFeed feed) {
|
||||||
|
enableSubmitButtons(true);
|
||||||
submitButton.setEnabled(true);
|
|
||||||
shareTextArea.setEnabled(true);
|
shareTextArea.setEnabled(true);
|
||||||
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
||||||
shareTextArea.cleanHighlighterDiv();
|
shareTextArea.cleanHighlighterDiv();
|
||||||
|
@ -498,8 +584,7 @@ public class ShareUpdateForm extends Composite {
|
||||||
public void onSuccess(ClientFeed feed) {
|
public void onSuccess(ClientFeed feed) {
|
||||||
|
|
||||||
//GWT.log("Saved feed looks like " + feed.toString());
|
//GWT.log("Saved feed looks like " + feed.toString());
|
||||||
|
enableSubmitButtons(true);
|
||||||
submitButton.setEnabled(true);
|
|
||||||
shareTextArea.setEnabled(true);
|
shareTextArea.setEnabled(true);
|
||||||
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
||||||
shareTextArea.cleanHighlighterDiv();
|
shareTextArea.cleanHighlighterDiv();
|
||||||
|
@ -528,8 +613,7 @@ public class ShareUpdateForm extends Composite {
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
|
|
||||||
GWT.log(caught.toString());
|
GWT.log(caught.toString());
|
||||||
|
enableSubmitButtons(true);
|
||||||
submitButton.setEnabled(true);
|
|
||||||
shareTextArea.setEnabled(true);
|
shareTextArea.setEnabled(true);
|
||||||
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
shareTextArea.setText(SHARE_UPDATE_TEXT);
|
||||||
shareTextArea.cleanHighlighterDiv();
|
shareTextArea.cleanHighlighterDiv();
|
||||||
|
@ -603,13 +687,13 @@ public class ShareUpdateForm extends Composite {
|
||||||
}
|
}
|
||||||
|
|
||||||
preview.add(new LinkLoader());
|
preview.add(new LinkLoader());
|
||||||
submitButton.setEnabled(false);
|
enableSubmitButtons(false);
|
||||||
|
|
||||||
//GWT.log("It's http link:" + linkToCheck);
|
//GWT.log("It's http link:" + linkToCheck);
|
||||||
shareupdateService.checkLink(textToCheck, new AsyncCallback<LinkPreview>() {
|
shareupdateService.checkLink(textToCheck, new AsyncCallback<LinkPreview>() {
|
||||||
public void onFailure(Throwable caught) {
|
public void onFailure(Throwable caught) {
|
||||||
preview.clear();
|
preview.clear();
|
||||||
submitButton.setEnabled(true);
|
enableSubmitButtons(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onSuccess(LinkPreview result) {
|
public void onSuccess(LinkPreview result) {
|
||||||
|
@ -621,7 +705,7 @@ public class ShareUpdateForm extends Composite {
|
||||||
preview.clear();
|
preview.clear();
|
||||||
if (result != null)
|
if (result != null)
|
||||||
addPreviewLink(result);
|
addPreviewLink(result);
|
||||||
submitButton.setEnabled(true);
|
enableSubmitButtons(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
|
@ -664,10 +748,10 @@ public class ShareUpdateForm extends Composite {
|
||||||
addPreviewAttachment(null, atPrev);
|
addPreviewAttachment(null, atPrev);
|
||||||
|
|
||||||
// enable anyway the button
|
// enable anyway the button
|
||||||
submitButton.setEnabled(true);
|
enableSubmitButtons(true);
|
||||||
|
|
||||||
// enable attach button
|
// enable attach button
|
||||||
attachButton.setEnabled(true);
|
enableAttachButtons(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// it returns a LinkPreview (for compatibility with old code)
|
// it returns a LinkPreview (for compatibility with old code)
|
||||||
|
@ -689,10 +773,11 @@ public class ShareUpdateForm extends Composite {
|
||||||
);
|
);
|
||||||
|
|
||||||
addPreviewAttachment(result, atPrev);
|
addPreviewAttachment(result, atPrev);
|
||||||
submitButton.setEnabled(true);
|
// enable anyway the button
|
||||||
|
enableSubmitButtons(true);
|
||||||
|
|
||||||
// enable attach button
|
// enable attach button
|
||||||
attachButton.setEnabled(true);
|
enableAttachButtons(true);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -766,7 +851,8 @@ public class ShareUpdateForm extends Composite {
|
||||||
protected void cancelLinkPreview() {
|
protected void cancelLinkPreview() {
|
||||||
preview.clear();
|
preview.clear();
|
||||||
linkPreviewer = null;
|
linkPreviewer = null;
|
||||||
attachButton.getElement().getStyle().setVisibility(Visibility.VISIBLE); //beacuse otherwise it looses the other properties setting
|
attachButtonScreen.getElement().getStyle().setVisibility(Visibility.VISIBLE); //beacuse otherwise it looses the other properties setting
|
||||||
|
attachButtonPhoneTablet.getElement().getStyle().setVisibility(Visibility.VISIBLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -842,9 +928,9 @@ public class ShareUpdateForm extends Composite {
|
||||||
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::resetDNDStyleEffects()();
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::resetDNDStyleEffects()();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
// else delete the link preview and proceeed
|
// else delete the link preview, enable the attach buttons and proceeed
|
||||||
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::cancelLinkPreview()();
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::cancelLinkPreview()();
|
||||||
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::enableAttachButtons(Z)(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
// check limit for number of files
|
// check limit for number of files
|
||||||
|
@ -887,7 +973,10 @@ public class ShareUpdateForm extends Composite {
|
||||||
var numberIgnoredFiles = 0;
|
var numberIgnoredFiles = 0;
|
||||||
|
|
||||||
// disable attach button
|
// disable attach button
|
||||||
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::enableAttachButton(Z)(false);
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::enableAttachButtons(Z)(false);
|
||||||
|
|
||||||
|
// disable submit button
|
||||||
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::enableSubmitButtons(Z)(false);
|
||||||
|
|
||||||
// for each dropped file
|
// for each dropped file
|
||||||
for (var i = 0; i < files.length; i++) {
|
for (var i = 0; i < files.length; i++) {
|
||||||
|
@ -898,7 +987,6 @@ public class ShareUpdateForm extends Composite {
|
||||||
// be sure it is not a folder
|
// be sure it is not a folder
|
||||||
if (!isFolder(file)) {
|
if (!isFolder(file)) {
|
||||||
console.log("filesSelected: " + fileSelected);
|
console.log("filesSelected: " + fileSelected);
|
||||||
console.log("files: " + files);
|
|
||||||
|
|
||||||
// check its size
|
// check its size
|
||||||
var fileSize = file.size / 1024 / 1024;
|
var fileSize = file.size / 1024 / 1024;
|
||||||
|
@ -947,16 +1035,16 @@ public class ShareUpdateForm extends Composite {
|
||||||
|
|
||||||
// reset text area
|
// reset text area
|
||||||
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::resetDNDStyleEffects()();
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::resetDNDStyleEffects()();
|
||||||
return;
|
|
||||||
|
|
||||||
|
}else{
|
||||||
|
|
||||||
|
// print ignored folders, if any
|
||||||
|
var msg = "Ignored ";
|
||||||
|
msg += numFolder > 1? numFolder+" folders": numFolder+" folder";
|
||||||
|
msg += " during upload.";
|
||||||
|
console.log(msg);
|
||||||
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::showAlert(Ljava/lang/String;)(msg);
|
||||||
}
|
}
|
||||||
|
|
||||||
// print ignored folders, if any
|
|
||||||
var msg = "Ignored ";
|
|
||||||
msg += numFolder > 1? numFolder+" folders": numFolder+" folder";
|
|
||||||
msg+= " during upload.";
|
|
||||||
console.log(msg);
|
|
||||||
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::showAlert(Ljava/lang/String;)(msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// alert for too large files
|
// alert for too large files
|
||||||
|
@ -968,19 +1056,24 @@ public class ShareUpdateForm extends Composite {
|
||||||
msg = file.name + " can't be uploaded because it is too large!";
|
msg = file.name + " can't be uploaded because it is too large!";
|
||||||
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::showAlert(Ljava/lang/String;)(msg);
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::showAlert(Ljava/lang/String;)(msg);
|
||||||
|
|
||||||
// reset text area
|
}else{
|
||||||
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::resetDNDStyleEffects()();
|
|
||||||
return;
|
var msg = numberIgnoredFiles + ignoredFilesAlert;
|
||||||
|
console.log(msg);
|
||||||
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::showAlert(Ljava/lang/String;)(msg);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
var msg = numberIgnoredFiles + ignoredFilesAlert;
|
|
||||||
console.log(msg);
|
|
||||||
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::showAlert(Ljava/lang/String;)(msg);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// reset text area
|
// reset text area
|
||||||
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::resetDNDStyleEffects()();
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::resetDNDStyleEffects()();
|
||||||
|
|
||||||
|
// enable attach buttons
|
||||||
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::enableAttachButtons(Z)(true);
|
||||||
|
|
||||||
|
// enable submit buttons
|
||||||
|
instance.@org.gcube.portlets.user.shareupdates.client.view.ShareUpdateForm::enableSubmitButtons(Z)(true);
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
}-*/;
|
}-*/;
|
||||||
|
@ -1147,13 +1240,25 @@ public class ShareUpdateForm extends Composite {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enables or disable the attach button
|
* Enables or disable the attach buttons
|
||||||
* @param enable
|
* @param enable
|
||||||
*/
|
*/
|
||||||
private void enableAttachButton(boolean enable){
|
private void enableAttachButtons(boolean enable){
|
||||||
|
|
||||||
GWT.log("Enable attach button? " + enable);
|
attachButtonScreen.setEnabled(enable);
|
||||||
attachButton.setEnabled(enable);
|
attachButtonPhoneTablet.setEnabled(enable);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enables or disable the submit buttons
|
||||||
|
* @param enable
|
||||||
|
*/
|
||||||
|
private void enableSubmitButtons(boolean enable){
|
||||||
|
|
||||||
|
GWT.log("enable is " + enable);
|
||||||
|
submitButtonScreen.setEnabled(enable);
|
||||||
|
submitButtonPhoneTablet.setEnabled(enable);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -4,7 +4,7 @@
|
||||||
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui" xmlns:j="urn:import:org.gcube.portlets.widgets.fileupload.client.view">
|
xmlns:b="urn:import:com.github.gwtbootstrap.client.ui" xmlns:j="urn:import:org.gcube.portlets.widgets.fileupload.client.view">
|
||||||
<ui:style>
|
<ui:style>
|
||||||
.attachment-container {
|
.attachment-container {
|
||||||
width: 600px;
|
width: 100%;
|
||||||
}
|
}
|
||||||
</ui:style>
|
</ui:style>
|
||||||
<g:HTMLPanel ui:field="mainPanel">
|
<g:HTMLPanel ui:field="mainPanel">
|
||||||
|
@ -38,15 +38,22 @@
|
||||||
<td class="share-updates-cell">
|
<td class="share-updates-cell">
|
||||||
<b:Form>
|
<b:Form>
|
||||||
|
|
||||||
<g:ListBox styleName="wizardListbox" ui:field="privacyLevel"
|
<b:ListBox styleName="wizardListbox" ui:field="privacyLevel"
|
||||||
visible="false" />
|
visible="false" />
|
||||||
<g:ListBox styleName="wizardListbox" ui:field="notifyListbox"
|
<b:ListBox styleName="wizardListbox" ui:field="notifyListbox"
|
||||||
visible="false" />
|
visible="false" />
|
||||||
|
|
||||||
|
<b:Button ui:field="attachButtonScreen" icon="UPLOAD_ALT"
|
||||||
|
visible="false" />
|
||||||
|
<b:Button ui:field="submitButtonScreen" type="PRIMARY"
|
||||||
|
text="Share" visible="false" />
|
||||||
|
|
||||||
|
<!-- Other devices are smartphones and tablet-->
|
||||||
|
<b:Button ui:field="attachButtonPhoneTablet" icon="UPLOAD_ALT"
|
||||||
|
visible="false" />
|
||||||
|
<b:Button ui:field="submitButtonPhoneTablet" type="PRIMARY"
|
||||||
|
text="Share" visible="false" />
|
||||||
|
|
||||||
<b:Button ui:field="attachButton" icon="UPLOAD_ALT"
|
|
||||||
visible="false" />
|
|
||||||
<b:Button ui:field="submitButton" type="PRIMARY" width="70px"
|
|
||||||
text="Share" visible="false" />
|
|
||||||
</b:Form>
|
</b:Form>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|
|
@ -12,8 +12,11 @@
|
||||||
<inherits
|
<inherits
|
||||||
name="net.eliasbalasis.tibcopagebus4gwt.testsubscriber.TestSubscriber" />
|
name="net.eliasbalasis.tibcopagebus4gwt.testsubscriber.TestSubscriber" />
|
||||||
|
|
||||||
|
<!-- Responsive design -->
|
||||||
|
<set-property name="bootstrap.responsiveDesign" value="true" />
|
||||||
|
|
||||||
<!-- To Comment out -->
|
<!-- To Comment out -->
|
||||||
<!-- <set-property name="user.agent" value="safari,gecko1_8,ie10" /> -->
|
<!-- <set-property name="user.agent" value="safari,gecko1_8,ie10" /> -->
|
||||||
|
|
||||||
<!-- Other module inherits -->
|
<!-- Other module inherits -->
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,113 @@
|
||||||
|
@media screen and (max-width: 1280px) {
|
||||||
|
select.wizardListbox {
|
||||||
|
width: 70% !important;
|
||||||
|
background: #F2F2F2 url(images/white-grad.png) repeat-x scroll left top;
|
||||||
|
border-color: #BBB;
|
||||||
|
color: #444;
|
||||||
|
font-size: 12px;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
margin-left: 0px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-top: 2px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 1100px) {
|
||||||
|
select.wizardListbox {
|
||||||
|
width: 40% !important;
|
||||||
|
background: #F2F2F2 url(images/white-grad.png) repeat-x scroll left top;
|
||||||
|
border-color: #BBB;
|
||||||
|
color: #444;
|
||||||
|
font-size: 12px;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
margin-left: 0px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-top: 2px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@media screen and (max-width: 800px) {
|
||||||
|
select.wizardListbox {
|
||||||
|
width: 100% !important;
|
||||||
|
background: #F2F2F2 url(images/white-grad.png) repeat-x scroll left top;
|
||||||
|
border-color: #BBB;
|
||||||
|
color: #444;
|
||||||
|
font-size: 12px;
|
||||||
|
border-width: 1px;
|
||||||
|
border-style: solid;
|
||||||
|
cursor: pointer;
|
||||||
|
cursor: hand;
|
||||||
|
margin-left: 0px;
|
||||||
|
-moz-border-radius: 4px;
|
||||||
|
-webkit-border-radius: 4px;
|
||||||
|
border-radius: 4px;
|
||||||
|
margin-top: 2px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
}
|
||||||
|
.attachment-container-full-width {
|
||||||
|
padding: 5px;
|
||||||
|
font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;
|
||||||
|
background-clip: border-box;
|
||||||
|
background-color: #FBFBFB;
|
||||||
|
background-image: none;
|
||||||
|
border: 1px solid #DDD;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 95% !important;
|
||||||
|
border-color: red;
|
||||||
|
margin-left: 5px !important;
|
||||||
|
}
|
||||||
|
.attachment-container-half-width {
|
||||||
|
padding: 5px;
|
||||||
|
font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;
|
||||||
|
background-clip: border-box;
|
||||||
|
background-color: #FBFBFB;
|
||||||
|
background-image: none;
|
||||||
|
border: 1px solid #DDD;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 95% !important;
|
||||||
|
border-color: red;
|
||||||
|
margin-left: 5px !important;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.attachment-container-full-width {
|
||||||
|
padding: 5px;
|
||||||
|
font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;
|
||||||
|
background-clip: border-box;
|
||||||
|
background-color: #FBFBFB;
|
||||||
|
background-image: none;
|
||||||
|
border: 1px solid #DDD;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 93%;
|
||||||
|
}
|
||||||
|
|
||||||
|
.attachment-container-half-width {
|
||||||
|
padding: 5px;
|
||||||
|
font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;
|
||||||
|
background-clip: border-box;
|
||||||
|
background-color: #FBFBFB;
|
||||||
|
background-image: none;
|
||||||
|
border: 1px solid #DDD;
|
||||||
|
border-radius: 4px;
|
||||||
|
display: inline-block;
|
||||||
|
width: 46%;
|
||||||
|
}
|
||||||
|
|
||||||
td>form {
|
td>form {
|
||||||
margin-top: 5px !important;
|
margin-top: 5px !important;
|
||||||
margin-bottom: 0px !important;
|
margin-bottom: 0px !important;
|
||||||
|
@ -5,26 +115,29 @@ td>form {
|
||||||
|
|
||||||
.share-updates-table {
|
.share-updates-table {
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
width: 100%;
|
width: 95%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.upload-btn-m {
|
.upload-btn-m {
|
||||||
margin: 0 13px;
|
margin-right: 10px;
|
||||||
|
margin-bottom: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.share-updates-table .share-updates-cell {
|
.share-updates-table .share-updates-cell {
|
||||||
padding-left: 3px;
|
padding-left: 3px;
|
||||||
|
width: 95%;
|
||||||
}
|
}
|
||||||
|
|
||||||
.share-updates-table .share-updates-photo-cell {
|
.share-updates-table .share-updates-photo-cell {
|
||||||
width: 60px;
|
|
||||||
text-align: right;
|
text-align: right;
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
|
width: 5%;
|
||||||
|
min-width: 50px;
|
||||||
}
|
}
|
||||||
|
|
||||||
.share-updates-member-photo {
|
.share-updates-member-photo {
|
||||||
width: 32px;
|
width: auto !important;
|
||||||
height: 32px;
|
height: 40px !important;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -38,8 +151,8 @@ td>form {
|
||||||
left: 0;
|
left: 0;
|
||||||
top: 0;
|
top: 0;
|
||||||
cursor: text;
|
cursor: text;
|
||||||
width: 525px;
|
|
||||||
height: 32px;
|
height: 32px;
|
||||||
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
#inputContainer {
|
#inputContainer {
|
||||||
|
@ -60,7 +173,7 @@ td>form {
|
||||||
-moz-border-radius: 4px;
|
-moz-border-radius: 4px;
|
||||||
-webkit-border-radius: 4px;
|
-webkit-border-radius: 4px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
width: 525px;
|
width: 100%;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
word-wrap: break-word;
|
word-wrap: break-word;
|
||||||
/* this is very important when usere paste long links*/
|
/* this is very important when usere paste long links*/
|
||||||
|
@ -80,7 +193,7 @@ div#inputContainer textarea.postTextArea {
|
||||||
-moz-border-radius: 4px;
|
-moz-border-radius: 4px;
|
||||||
-webkit-border-radius: 4px;
|
-webkit-border-radius: 4px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
width: 525px;
|
width: 100%;
|
||||||
height: 32px;
|
height: 32px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -138,7 +251,7 @@ div#inputContainer textarea.postTextArea {
|
||||||
}
|
}
|
||||||
|
|
||||||
.link-previewer {
|
.link-previewer {
|
||||||
width: 600px;
|
width: 100%;
|
||||||
padding-top: 10px;
|
padding-top: 10px;
|
||||||
padding-bottom: 10px;
|
padding-bottom: 10px;
|
||||||
font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;
|
font-family: 'lucida grande', tahoma, verdana, arial, sans-serif;
|
||||||
|
@ -263,8 +376,7 @@ a.link:hover {
|
||||||
}
|
}
|
||||||
|
|
||||||
select.wizardListbox {
|
select.wizardListbox {
|
||||||
height: 25px;
|
width: 80%;
|
||||||
width: 372px;
|
|
||||||
background: #F2F2F2 url(images/white-grad.png) repeat-x scroll left top;
|
background: #F2F2F2 url(images/white-grad.png) repeat-x scroll left top;
|
||||||
border-color: #BBB;
|
border-color: #BBB;
|
||||||
color: #444;
|
color: #444;
|
||||||
|
@ -278,6 +390,8 @@ select.wizardListbox {
|
||||||
-webkit-border-radius: 4px;
|
-webkit-border-radius: 4px;
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
margin-top: 2px;
|
margin-top: 2px;
|
||||||
|
margin-bottom: 5px;
|
||||||
|
margin-right: 10px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* smart textarea */
|
/* smart textarea */
|
||||||
|
|
Loading…
Reference in New Issue