kune-commits
Threads by month
- ----- 2026 -----
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- 1587 discussions
Author: vjrj
Date: 2008-11-25 17:52:11 +0100 (Tue, 25 Nov 2008)
New Revision: 969
Added:
trunk/src/main/java/org/ourproject/kune/wiki/
trunk/src/main/java/org/ourproject/kune/wiki/Kune-Wiki.gwt.xml
trunk/src/main/java/org/ourproject/kune/wiki/client/
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java
trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContent.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPanel.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentView.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewer.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPanel.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerView.java
trunk/src/main/java/org/ourproject/kune/wiki/client/ctx/
trunk/src/main/java/org/ourproject/kune/wiki/client/ctx/WikiContext.java
trunk/src/main/java/org/ourproject/kune/wiki/client/ctx/WikiContextPresenter.java
trunk/src/main/java/org/ourproject/kune/wiki/public/
trunk/src/main/java/org/ourproject/kune/wiki/server/
trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerModule.java
trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerTool.java
Modified:
trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientTool.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java
trunk/src/main/java/org/ourproject/kune/platf/client/tool/FoldableAbstractClientTool.java
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntitySummary.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java
Log:
New wiki tool.
Complete - task License onOver hide/show
Incomplete - task UI tools & workspace refactorization
Modified: trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2008-11-25 16:52:11 UTC (rev 969)
@@ -14,6 +14,7 @@
<inherits name='org.ourproject.kune.platf.Kune-Platform' />
<inherits name='org.ourproject.kune.docs.Kune-Docs' />
<inherits name='org.ourproject.kune.blogs.Kune-Blogs' />
+ <inherits name='org.ourproject.kune.wiki.Kune-Wiki' />
<inherits name='org.ourproject.kune.chat.Kune-Chat' />
<!-- gwt-ext -->
Modified: trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -27,6 +27,7 @@
import org.ourproject.kune.platf.client.services.KunePlatformModule;
import org.ourproject.kune.platf.client.services.KuneRegistryModule;
import org.ourproject.kune.platf.client.services.KuneWorkspaceModule;
+import org.ourproject.kune.wiki.client.WikiClientModule;
import com.allen_sauer.gwt.log.client.Log;
import com.calclab.emiteuimodule.client.EmiteUIModule;
@@ -56,6 +57,6 @@
public void onModuleLoadCont() {
Suco.install(new KuneCoreModule(), new KuneRegistryModule(), new KunePlatformModule(),
new KuneWorkspaceModule(), new EmiteUIModule(), new DocumentClientModule(), new BlogClientModule(),
- new ChatClientModule(), new KuneModule());
+ new WikiClientModule(), new ChatClientModule(), new KuneModule());
}
}
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-25 16:52:11 UTC (rev 969)
@@ -35,10 +35,10 @@
}
*/.kune-NavigationBar .topBar .gwt-Image{margin:0 2px 0 5px;}.kune-NavigationBar .Items{margin:2px 0;}.kune-NavigationBar .Items .gwt-Image{margin:2px 0;vertical-align:middle;}.kune-NavigationBar .Items .gwt-Hyperlink a{color:green;/* FIXME: other color */}.kune-NavigationBar .topBar .topBar-margin{margin-left:5px;}.kune-NavigationBar .pathMenu{vertical-align:middle;}.kune-NavigationBar .pathMenu .gwt-MenuItem{background:transparent url(img/button-bg-hard.gif) repeat-x 0 0;border-left:1px solid #AAA;border-right:1px solid #AAA;color:#999;cursor:pointer;white-space:nowrap;padding:3px 6px;}.kune-NavigationBar .pathMenu .gwt-MenuItem-selected{background:transparent url(img/button-bg-soft.gif) repeat-x 0 0;color:#000;}.kune-NavigationBar .kune-IconHyperlink{vertical-align:middle;margin-left:5px;}.kune-NavigationBar .kune-IconHyperlink a{color:green;text-decoration:none;}.kune-NavigationBar .kune-IconHyperlink .gwt-Image{margin-right:3px;vertical-align:middle;}/* Social Network */.kune-StackedDropDownPanel{}.kune-StackedDropDownPanel .gwt-StackPanelItem{border-top:1px solid #CCC;border-bottom:1px solid #CCC;background-color:#EFA;cursor:pointer;padding:1px 3px 0 6px;overflow:hidden;}.kune-StackedDropDownPanel .gwt-StackPanelItem img{margin:0 0 0 3px;vertical-align:middle;}.kune-StackedDropDownPanel .kune-DropDownInner table{width:100%;}.kune-StackedDropDownPanel .gwt-StackPanelItem-selected{}.kune-StackedDropDownPanelLink{background-color:#E6E6E6;border-top:1px solid #CCC;border-bottom:1px solid #F2F2F2;/* white-space: nowrap; */cursor:pointer;}.kune-StackedDropDownPanel .kune-DropDownInner{padding:0;}/* StackedDropDownPanel Members */.kune-StackSubItemLabel{overflow:hidden;}.kune-StackSubItemLabel .gwt-MenuItem{white-space:nowrap;cursor:pointer;border-bottom:1px solid #F2F2F2;}.kune-StackSubItemLabel table{width:100%;}.kune-StackSubItemLabel .gwt-MenuItem img{vertical-align:middle;margin-top:1px;margin-bottom:1px;margin-left:5px;margin-right:3px;}.kune-StackSubItemLabel .gwt-MenuItem-selected{background-color:#FFE6D5;}.kune-StackSubItemActions{background-color:#F2F2F2;border:1px solid #999;vertical-align:middle;padding:5px 0;margin-left:-120px;margin-top:-2px;}.kune-StackSubItemActions .gwt-MenuItem{cursor:pointer;padding:1px 10px;white-space:nowrap;}.kune-StackSubItemActions .gwt-MenuItem img{vertical-align:middle;margin-right:3px;}.kune-StackSubItemActions .gwt-MenuItem-selected{background-color:#FFB958;}/* AccessList */.kune-AccessListSubLabel{font-style:italic;}.kune-AccessList{margin:5px;width:100%;}.kune-AccessList .gwt-DisclosurePanel{margin:5px;width:100%;}.kune-AccessList .gwt-DisclosurePanel-open{width:100%;}.kune-AccessList .gwt-DisclosurePanel-closed{width:100%;}.kune-AccessList .header{margin:0 0 3px;text-decoration:none;width:100%;background-color:#8DD35F;}.kune-AccessList .header table{margin:0 5px 0 0;width:100%;color:#FFF;}.kune-AccessList .header img{margin:0 3px 0 0;}.kune-AccessList .content{margin:0 0 0 7px;width:100%;}.kune-AccessList .content table{margin-bottom:5px;width:100%;}/* Rate */.kune-RatePanel-Label{white-space:nowrap;vertical-align:middle;}.kune-RatePanel-Stars{margin-left:5px;vertical-align:middle;}.kune-RatePanel-Stars-RateIt{cursor:pointer;}/* Licenses */.kune-License-CC-Header{color:#15428B;font-weight:700;font-size:85%;margin-top:5px;}.kune-License-CC-Header .gwt-Label{color:#15428B;font-weight:700;font-size:85%;margin-top:5px;}/* Theme */.kune-IconBottomPanel .gwt-MenuItem{cursor:pointer;background-color:#FFF;margin:2px 2px 2px 5px;}.kune-IconBottomPanel .gwt-MenuItem-selected{background-color:#F2F2F2;}.gwt-MenuBar-bottomMenu{margin-left:-60px;margin-top:-120px;}/* i18n */.kune-I18nTranslatorCell{white-space:normal;}.kune-i18nTranslator-recommend{margin:10px;}.kune-i18nTranslator-recommend h1{font-size:131%;font-weight:700;}.kune-i18nTranslator-recommend h2{font-size:116%;font-weight:700;}.kune-i18nTranslator-recommend h3{font-size:108%;font-weight:700;font-style:italic;}.kune-i18nTranslator-recommend em{font-weight:700;}.kune-i18nTranslator-recommend strong{font-weight:700;}/* Admin Context */.kune-AdminContextPanel{margin:6px;width:100%;}.kune-AdminContextPanel .gwt-StackPanelItem{background:transparent url(img/arrow-right-white.gif) no-repeat scroll 3px 2px;cursor:pointer;padding:3px 10px 1px 20px;overflow:hidden;width:100%;}.kune-AdminContextPanel .gwt-StackPanelItem img{margin:0 0 0 3px;vertical-align:middle;}.kune-AdminContextPanel .gwt-StackPanelItem-selected{background:transparent url(img/arrow-down-white.gif) no-repeat scroll 3px 2px;background-color:#DEE3DB;}.kune-AdminContextPanelLink{background-color:#E6E6E6;border-top:1px solid #CCC;border-bottom:1px solid #F2F2F2;/* white-space: nowrap; */cursor:pointer;}.kune-AdminContextPanel-inner{background-color:#FFF;}.kune-AdminContextPanel-inner-wrap{margin:5px;}.kune-EditableLabel{}.kune-EditableLabel .kune-EditableLabel-editable{}.kune-EditableLabel-high{background-color:#FFFBC1;cursor:pointer;}.kune-EditableLabel-high span{background-color:#FFFBC1;}.kune-EditableLabel a{margin-left:5px;}.kune-EditableLabel a:link{color:green;}.kune-EditableLabel a:hover{text-decoration:underline;}.kune-EditableLabel a:visited{color:olive;}.kune-EditableLabel img{margin-right:4px;vertical-align:middle;}.kune-EditableLabel-editable img{margin-right:4px;vertical-align:middle;}.kune-EditableLabel-editable span{margin:3px;}.kune-EditableLabel span{margin:3px;}.kune-BottomIconsTrayPanel{width:165px;height:21px;vertical-align:middle;background-color:#EFEFEF;}.k-tp-tag{float:left;margin-right:5px;cursor:pointer;color:#00F;}.kune-Content-Main{margin:5px;}/* Yahoo ui base.css */.kune-Content-Main h1{font-size:138.5%;}.kune-Content-Main h2{font-size:123.099998%;}.kune-Content-Main h3{font-size:108%;}.kune-Content-Main h1{margin:1em 0;}.kune-Content-Main h2{margin:1em 0;}.kune-Content-Main h3{margin:1em 0;}.kune-Content-Main h1{font-weight:700;}.kune-Content-Main h2{font-weight:700;}.kune-Content-Main h3{font-weight:700;}.kune-Content-Main h4{font-weight:700;}.kune-Content-Main h5{font-weight:700;}.kune-Content-Main h6{font-weight:700;}.kune-Content-Main strong{font-weight:700;}.kune-Content-Main abbr{border-bottom:1px dotted #000;cursor:help;}.kune-Content-Main acronym{border-bottom:1px dotted #000;cursor:help;}.kune-Content-Main em{font-style:italic;}.kune-Content-Main blockquote{margin:1em;}.kune-Content-Main ul{margin:1em;}.kune-Content-Main ol{margin:1em;}.kune-Content-Main dl{margin:1em;}.kune-Content-Main ol{margin-left:2em;}.kune-Content-Main ul{margin-left:2em;}.kune-Content-Main dl{margin-left:2em;}.kune-Content-Main ol{list-style:decimal outside;}.kune-Content-Main li{list-style:decimal outside;}.kune-Content-Main li{list-style:disc outside;}.kune-Content-Main ul{list-style:disc outside;}.kune-Content-Main dl{margin-left:1em;}.kune-Content-Main dd{margin-left:1em;}.kune-Content-Main th{border:1px solid #000;padding:.5em;font-weight:700;text-align:center;}.kune-Content-Main td{border:1px solid #000;padding:.5em;}.kune-Content-Main caption{margin-bottom:.5em;text-align:center;}.kune-Content-Main p{margin-bottom:1em;}.kune-Content-Main fieldset{margin-bottom:1em;}.kune-Content-Main table{margin-bottom:1em;}.kune-Content-Main pre{margin-bottom:1em;}.kune-Content-Main input[type=text]{width:12.25em;width:11.9em;}.kune-Content-Main input[type=password]{width:12.25em;width:11.9em;}.kune-Content-Main textarea{width:12.25em;width:11.9em;}.search-icon{background-image:url(img/search.gif)!important;}.i18n-icon{background-image:url(img/language.gif)!important;}/* RTE Text editor */.kune-TexEditorPanel-TextArea{margin:3px;}.gwt-RichTextArea{/* border: 1px solid #000;
background-color: #FFF; */border:1px solid #4D4D4D;background-color:#FFF;margin:5px 0 5px 10px;}.gwt-RichTextToolbar{/* background-color: #F2F2F2;
- padding: 5px; */height:24px;vertical-align:middle;}.gwt-RichTextToolbar table{vertical-align:middle;}.gwt-RichTextToolbar .gwt-ToggleButton{float:left;margin-top:2px;}.gwt-RichTextToolbar .gwt-PushButton{float:left;margin-top:2px;}.gwt-RichTextToolbar .gwt-PushButton-up{margin-right:2px;border:1px solid #F2F2F2;}.gwt-RichTextToolbar .gwt-PushButton-up-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#E8F1FF #9daecd #9daecd #e8f1ff;}.gwt-RichTextToolbar .gwt-PushButton-down{margin-right:2px;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-PushButton-down-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-ToggleButton-up{margin-right:2px;border:1px solid #F2F2F2;}.gwt-RichTextToolbar .gwt-ToggleButton-up-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#E8F1FF #9daecd #9daecd #e8f1ff;}.gwt-RichTextToolbar .gwt-ToggleButton-down{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-ToggleButton-down-hovering{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .x-btn{float:left;}.gwt-RichTextToolbar .kune-Button-Large-lSpace{float:left;}.gwt-RichTextToolbar .kune-Button-Large-lrSpace{float:left;}.RichTextToolbar-menu{float:left;margin-top:2px;z-index:4;}.RichTextToolbar-menu table{border-collapse:collapse;border-spacing:0;margin:0;z-index:4;}.RichTextToolbar-menu .gwt-MenuItem{margin-right:2px;border:1px solid #F2F2F2;}.RichTextToolbar-menu .gwt-MenuItem-selected{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.RichTextToolbar-submenu{background-color:#FFFCD5;border:1px solid #D38D5F;cursor:default;z-index:4;}.RichTextToolbar-submenu .gwt-MenuItem{cursor:default;white-space:nowrap;border:1px solid #FFFCD5;padding:0 4px;}.RichTextToolbar-submenu .gwt-MenuItem-selected{background-color:#FFB958;border:1px solid #C83737;}.kune-WebSafePalette{background-color:#FFF;border:1px solid #AAA;margin:1px;}.kune-WebSafePalette td{width:12px;height:10px;}.k-site-traybar{background:#FFF none repeat scroll 0 50%;}.k-blank-toolbar{background:#FFF none repeat scroll 0 50%;}.k-sitebar .kune-IconHyperlink{white-space:nowrap;}.k-sitebar .kune-IconHyperlink a:link{cursor:pointer;text-decoration:underline;color:#B3B3B3;}.k-sitebar .kune-IconHyperlink a:hover{text-decoration:underline;}.k-sitebar .kune-IconHyperlink a:visited{color:#B3B3B3;}.k-sitebar-labellink{white-space:nowrap;color:#B3B3B3;cursor:pointer;text-decoration:underline;}.k-sitebar{margin-right:10px;height:16px;background:#FFF;}.k-sitebar .gwt-TextBox{border:1px solid #E4A374;margin:0 15px 0 3px;padding-left:3px;color:#B3B3B3;}.k-sitebar .gwt-Hyperlink a{white-space:nowrap;color:#B3B3B3;text-decoration:underline;cursor:pointer;}.k-sitebar .gwt-PushButton{cursor:pointer;}.k-sitebar-LabelLink{white-space:nowrap;color:#B3B3B3;cursor:pointer;text-decoration:underline;}.k-entity-summary{border-left-color:#FFF;border-left-width:5px;border-bottom-color:#FFF;border-bottom-width:5px;}.k-entitytextlogo-border{border:2px solid #F2F2F2;}.k-entitytextlogo-no-border{border:none;}.k-entitytextlogo{height:60px;margin:0 0 4px;overflow:hidden;width:468px;}.k-entitytextlogo table{vertical-align:middle;}.k-elogo-l-l{font-size:272%;}.k-elogo-l-m{font-size:167%;}.k-elogo-l-s{font-size:108%;}.k-entitytextlogo .gwt-Label{font-weight:700;margin:5px;height:27px;}.k-entitytextlogo-default .gwt-Label{color:#69312F;}.k-entitytextlogo-green .gwt-Label{color:#250;}.k-entitytextlogo-blue .gwt-Label{color:navy;}.k-entitytextlogo-grey .gwt-Label{color:#1A1A1A;}.k-entitytextlogo-purple .gwt-Label{color:#405;}.k-entitytextlogo-red .gwt-Label{color:maroon;}.k-elogo-plink{color:#CCC;font-size:85%;margin:5px;text-decoration:underline;white-space:nowrap;background-color:#FFF;}.k-elogop-expand{background-color:transparent;}.k-entity-default .x-layout-split,.k-entity-default .x-layout-collapsed{background:#DD8A3D none repeat scroll 0 50%;}.k-entity-green .x-layout-split,.k-entity-green .x-layout-collapsed{background:#5FD35F none repeat scroll 0 50%;}.k-entity-blue .x-layout-split,.k-entity-blue .x-layout-collapsed{background:#06F none repeat scroll 0 50%;}.k-entity-grey .x-layout-split,.k-entity-grey .x-layout-collapsed{background:#4D4D4D none repeat scroll 0 50%;}.k-entity-purple .x-layout-split,.k-entity-purple .x-layout-collapsed{background:#660080 none repeat scroll 0 50%;}.k-entity-red .x-layout-split,.k-entity-red .x-layout-collapsed{background:#D40000 none repeat scroll 0 50%;}.k-entityworkspace .x-layout-split,.k-entityworkspace .x-layout-collapsed{background:transparent none repeat scroll 0 50%;}.k-entityworkspace-default .x-layout-split,.k-entityworkspace-default .x-layout-collapsed{background:#DEAA87 none repeat scroll 0 50%;}.k-entityworkspace-green .x-layout-split,.k-entityworkspace-green .x-layout-collapsed{background:#DCE8AB none repeat scroll 0 50%;}.k-entityworkspace-blue .x-layout-split,.k-entityworkspace-blue .x-layout-collapsed{background:#D5D5FF none repeat scroll 0 50%;}.k-entityworkspace-grey .x-layout-split,.k-entityworkspace-grey .x-layout-collapsed{background:#999 none repeat scroll 0 50%;}.k-entityworkspace-purple .x-layout-split,.k-entityworkspace-purple .x-layout-collapsed{background:#A793AC none repeat scroll 0 50%;}.k-entityworkspace-red .x-layout-split,.k-entityworkspace-red .x-layout-collapsed{background:#F55 none repeat scroll 0 50%;}.k-entity-title{border-left-style:solid;border-left-width:2px;}.k-entity-title div{line-height:22px;white-space:nowrap;}.k-entity-subtitle{}.k-entity-subtitle div{line-height:22px;white-space:nowrap;}.k-entity-title-rd-default{background:#DD8A3D;}.k-entity-title-rd-green{background:#5FD35F;}.k-entity-title-rd-blue{background:#06F;}.k-entity-title-rd-grey{background:#4D4D4D;}.k-entity-title-rd-purple{background:#660080;}.k-entity-title-rd-red{background:#D40000;}.k-entity-title-default{background:#F1BB59 none repeat scroll 0 50%;border-left-color:#DD8A3D;}.k-entity-title-green{background:#AFA none repeat scroll 0 50%;border-left-color:#5FD35F;}.k-entity-title-blue{background:#AFDDE9 none repeat scroll 0 50%;border-left-color:#06F;}.k-entity-title-grey{background:#CCC none repeat scroll 0 50%;border-left-color:#4D4D4D;}.k-entity-title-purple{background:#DDAFE9 none repeat scroll 0 50%;border-left-color:#660080;}.k-entity-title-red{background:#FF8080 none repeat scroll 0 50%;border-left-color:#D40000;}.k-entity-title-default div{color:#69312F;}.k-entity-title-green div{color:#250;}.k-entity-title-blue div{color:navy;}.k-entity-title-grey div{color:#1A1A1A;}.k-entity-title-purple div{color:#405;}.k-entity-title-red div{color:maroon;}.k-entity-subtitle-default{background:#DD8A3D none repeat scroll 0 50%;}.k-entity-subtitle-green{background:#5FD35F none repeat scroll 0 50%;}.k-entity-subtitle-blue{background:#06F none repeat scroll 0 50%;}.k-entity-subtitle-grey{background:#4D4D4D none repeat scroll 0 50%;}.k-entity-subtitle-purple{background:#660080 none repeat scroll 0 50%;}.k-entity-subtitle-red{background:#D40000 none repeat scroll 0 50%;}.k-entity-subtitle-default div{color:#FFF;}.k-entity-subtitle-green div{color:#FFF;}.k-entity-subtitle-blue div{color:#FFF;}.k-entity-subtitle-grey div{color:#FFF;}.k-entity-subtitle-purple div{color:#FFF;}.k-entity-subtitle-red div{color:#FFF;}.k-entity-bottom-rd-default,.k-entity-bottom-default,.k-toolselectoritem-sel-default{background:#DD8A3D;}.k-entity-bottom-rd-green,.k-entity-bottom-green,.k-toolselectoritem-sel-green{background:#5FD35F;}.k-entity-bottom-rd-blue,.k-entity-bottom-blue,.k-toolselectoritem-sel-blue{background:#06F;}.k-entity-bottom-rd-grey,.k-entity-bottom-grey,.k-toolselectoritem-sel-grey{background:#4D4D4D;}.k-entity-bottom-rd-purple,.k-entity-bottom-purple,.k-toolselectoritem-sel-purple{background:#660080;}.k-entity-bottom-rd-red,.k-entity-bottom-red,.k-toolselectoritem-sel-red{background:#D40000;}.k-entitylicensepanel-licensetext{cursor:pointer;margin-left:5px;text-decoration:underline;}.k-entity-context-default div,.k-entity-context-default .x-tree .x-panel-body{background:#FFD09D none repeat scroll 0 50%;}.k-entity-context-green div,.k-entity-context-green .x-tree .x-panel-body{background:#CFA none repeat scroll 0 50%;}.k-entity-context-blue div,.k-entity-context-blue .x-tree .x-panel-body{background:#ACF none repeat scroll 0 50%;}.k-entity-context-grey div,.k-entity-context-grey .x-tree .x-panel-body{background:#B3B3B3 none repeat scroll 0 50%;}.k-entity-context-purple div,.k-entity-context-purple .x-tree .x-panel-body{background:#DDAFE9 none repeat scroll 0 50%;}.k-entity-context-red div,.k-entity-context-red .x-tree .x-panel-body{background:#FAA none repeat scroll 0 50%;}.k-entity-context-purple .x-tree .x-panel-body{background:#DDAFE9 none repeat scroll 0 50%;}.k-entity-bottom div{line-height:24px;color:#FFF;}.k-toolbar-top-line{border-top-color:#d0d0d0;border-top-style:solid;border-top-width:1px;}.k-toolbar-bottom-line{border-bottom-color:#d0d0d0;border-bottom-style:solid;border-bottom-width:1px;}.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;font:normal 100% arial, sans;line-height:19px;}.k-toolbar-sep{padding-top:4px;padding-left:5px;}/* Custom gwt-ext styles */.ytb-sep{background-image:url(../js/ext/resources/images/default/grid/grid-split.gif);background-position:center;background-repeat:no-repeat;display:block;font-size:1px;height:16px;width:4px;overflow:hidden;cursor:default;margin:0 2px;border:0;}.ytb-spacer{width:2px;}.x-grid-group-hd{border-bottom:2px solid grey;cursor:pointer;padding-top:3px;}/* Drop down */.k-dropdownouter{background-color:grey;}.k-dropdownouter-members{}.k-dropdownouter-members-default{background-color:#DF5244;}.k-dropdownouter-members-green{background-color:green;}.k-dropdownouter-members-blue{background-color:#5500D4;}.k-dropdownouter-members-grey{background-color:#4D4D4D;}.k-dropdownouter-members-purple{background-color:#672178;}.k-dropdownouter-members-red{background-color:#A02C2C;}.k-dropdownouter-part{}.k-dropdownouter-part-default{background-color:#CA5842;}.k-dropdownouter-part-green{background-color:#0A0;}.k-dropdownouter-part-blue{background-color:#60F;}.k-dropdownouter-part-grey{background-color:#666;}.k-dropdownouter-part-purple{background-color:#892CA0;}.k-dropdownouter-part-red{background-color:#C83737;}.k-dropdownouter-tags{}.k-dropdownouter-tags-default{background-color:#87501E;}.k-dropdownouter-tags-green{background-color:#00D400;}.k-dropdownouter-tags-blue{background-color:#95F;}.k-dropdownouter-tags-grey{background-color:gray;}.k-dropdownouter-tags-purple{background-color:#AB37C8;}.k-dropdownouter-tags-red{background-color:#D35F5F;}.k-dropdownouter-summary{}.k-dropdownouter-summary-default{background-color:#9F734B;}.k-dropdownouter-summary-green{background-color:#4CE14C;}.k-dropdownouter-summary-blue{background-color:#69A5FF;}.k-dropdownouter-summary-grey{background-color:#A6A6A6;}.k-dropdownouter-summary-purple{background-color:#C473D8;}.k-dropdownouter-summary-red{background-color:#E08F8F;}.k-dropdowninner{margin:0 3px 1px;background:green;background-color:#FFF;/* padding: 3px; */}.k-dropdownlabel{color:#FFF;cursor:pointer;}.k-dropdownlabel .gwt-Label{margin:0 5px 0 0;width:100%;}.k-dropdownlabel img{margin:0 3px 0 1px;}/* WsTheme */.k-wstheme-icon-default{background:#FF8C00;}.k-wstheme-icon-green{background:green;}.k-wstheme-icon-blue{background:blue;}.k-wstheme-icon-grey{background:grey;}.k-wstheme-icon-purple{background:purple;}.k-wstheme-icon-red{background:red;}/* Tool selector items */.k-toolselectoritem{width:auto;margin-bottom:5px;cursor:pointer;}.k-toolselectoritem-sel{}.k-toolselectoritem-notsel-default{background:#FFE9A5;}.k-toolselectoritem-notsel-green{background:#D6F4D6;}.k-toolselectoritem-notsel-blue{background:#D7D7F4;}.k-toolselectoritem-notsel-grey{background:#E6E6E6;}.k-toolselectoritem-notsel-purple{background:#EED7F4;}.k-toolselectoritem-notsel-red{background:#FFD5D5;}.k-toolselectoritem-sel a{color:#FFF;padding:0 9px;text-decoration:none;}.k-toolselectoritem-sel a:hover{text-decoration:none;}.k-toolselectoritem-notsel{}.k-toolselectoritem-notsel a{color:#00F;padding:0 9px;text-decoration:none;}.k-toolselectoritem-notsel a:hover{text-decoration:underline;}/* others *//*
+ padding: 5px; */height:24px;vertical-align:middle;}.gwt-RichTextToolbar table{vertical-align:middle;}.gwt-RichTextToolbar .gwt-ToggleButton{float:left;margin-top:2px;}.gwt-RichTextToolbar .gwt-PushButton{float:left;margin-top:2px;}.gwt-RichTextToolbar .gwt-PushButton-up{margin-right:2px;border:1px solid #F2F2F2;}.gwt-RichTextToolbar .gwt-PushButton-up-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#E8F1FF #9daecd #9daecd #e8f1ff;}.gwt-RichTextToolbar .gwt-PushButton-down{margin-right:2px;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-PushButton-down-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-ToggleButton-up{margin-right:2px;border:1px solid #F2F2F2;}.gwt-RichTextToolbar .gwt-ToggleButton-up-hovering{margin-right:2px;border:1px solid #C3D9FF;border-color:#E8F1FF #9daecd #9daecd #e8f1ff;}.gwt-RichTextToolbar .gwt-ToggleButton-down{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .gwt-ToggleButton-down-hovering{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.gwt-RichTextToolbar .x-btn{float:left;}.gwt-RichTextToolbar .kune-Button-Large-lSpace{float:left;}.gwt-RichTextToolbar .kune-Button-Large-lrSpace{float:left;}.RichTextToolbar-menu{float:left;margin-top:2px;z-index:4;}.RichTextToolbar-menu table{border-collapse:collapse;border-spacing:0;margin:0;z-index:4;}.RichTextToolbar-menu .gwt-MenuItem{margin-right:2px;border:1px solid #F2F2F2;}.RichTextToolbar-menu .gwt-MenuItem-selected{margin-right:2px;background-color:#E8F1FF;border:1px solid #C3D9FF;border-color:#9DAECD #e8f1ff #e8f1ff #9daecd;}.RichTextToolbar-submenu{background-color:#FFFCD5;border:1px solid #D38D5F;cursor:default;z-index:4;}.RichTextToolbar-submenu .gwt-MenuItem{cursor:default;white-space:nowrap;border:1px solid #FFFCD5;padding:0 4px;}.RichTextToolbar-submenu .gwt-MenuItem-selected{background-color:#FFB958;border:1px solid #C83737;}.kune-WebSafePalette{background-color:#FFF;border:1px solid #AAA;margin:1px;}.kune-WebSafePalette td{width:12px;height:10px;}.k-site-traybar{background:#FFF none repeat scroll 0 50%;}.k-blank-toolbar{background:#FFF none repeat scroll 0 50%;}.k-sitebar .kune-IconHyperlink{white-space:nowrap;}.k-sitebar .kune-IconHyperlink a:link{cursor:pointer;text-decoration:underline;color:#B3B3B3;}.k-sitebar .kune-IconHyperlink a:hover{text-decoration:underline;}.k-sitebar .kune-IconHyperlink a:visited{color:#B3B3B3;}.k-sitebar-labellink{white-space:nowrap;color:#B3B3B3;cursor:pointer;text-decoration:underline;}.k-sitebar{margin-right:10px;height:16px;background:#FFF;}.k-sitebar .gwt-TextBox{border:1px solid #E4A374;margin:0 15px 0 3px;padding-left:3px;color:#B3B3B3;}.k-sitebar .gwt-Hyperlink a{white-space:nowrap;color:#B3B3B3;text-decoration:underline;cursor:pointer;}.k-sitebar .gwt-PushButton{cursor:pointer;}.k-sitebar-LabelLink{white-space:nowrap;color:#B3B3B3;cursor:pointer;text-decoration:underline;}.k-entity-summary{border-left-color:#FFF;border-left-width:5px;border-bottom-color:#FFF;border-bottom-width:5px;}.k-entitytextlogo-border{border:2px solid #F2F2F2;}.k-entitytextlogo-no-border{border:none;}.k-entitytextlogo{height:60px;margin:0 0 4px;overflow:hidden;width:468px;}.k-entitytextlogo table{vertical-align:middle;}.k-elogo-l-l{font-size:272%;}.k-elogo-l-m{font-size:167%;}.k-elogo-l-s{font-size:108%;}.k-entitytextlogo .gwt-Label{font-weight:700;margin:5px;height:27px;}.k-entitytextlogo-default .gwt-Label{color:#69312F;}.k-entitytextlogo-green .gwt-Label{color:#250;}.k-entitytextlogo-blue .gwt-Label{color:navy;}.k-entitytextlogo-grey .gwt-Label{color:#1A1A1A;}.k-entitytextlogo-purple .gwt-Label{color:#405;}.k-entitytextlogo-red .gwt-Label{color:maroon;}.k-elogo-plink{color:#CCC;font-size:85%;margin:5px;text-decoration:underline;white-space:nowrap;background-color:#FFF;}.k-elogop-expand{background-color:transparent;}.k-entity-default .x-layout-split,.k-entity-default .x-layout-collapsed{background:#DD8A3D none repeat scroll 0 50%;}.k-entity-green .x-layout-split,.k-entity-green .x-layout-collapsed{background:#5FD35F none repeat scroll 0 50%;}.k-entity-blue .x-layout-split,.k-entity-blue .x-layout-collapsed{background:#06F none repeat scroll 0 50%;}.k-entity-grey .x-layout-split,.k-entity-grey .x-layout-collapsed{background:#4D4D4D none repeat scroll 0 50%;}.k-entity-purple .x-layout-split,.k-entity-purple .x-layout-collapsed{background:#660080 none repeat scroll 0 50%;}.k-entity-red .x-layout-split,.k-entity-red .x-layout-collapsed{background:#D40000 none repeat scroll 0 50%;}.k-entityworkspace .x-layout-split,.k-entityworkspace .x-layout-collapsed{background:transparent none repeat scroll 0 50%;}.k-entityworkspace-default .x-layout-split,.k-entityworkspace-default .x-layout-collapsed{background:#DEAA87 none repeat scroll 0 50%;}.k-entityworkspace-green .x-layout-split,.k-entityworkspace-green .x-layout-collapsed{background:#DCE8AB none repeat scroll 0 50%;}.k-entityworkspace-blue .x-layout-split,.k-entityworkspace-blue .x-layout-collapsed{background:#D5D5FF none repeat scroll 0 50%;}.k-entityworkspace-grey .x-layout-split,.k-entityworkspace-grey .x-layout-collapsed{background:#999 none repeat scroll 0 50%;}.k-entityworkspace-purple .x-layout-split,.k-entityworkspace-purple .x-layout-collapsed{background:#A793AC none repeat scroll 0 50%;}.k-entityworkspace-red .x-layout-split,.k-entityworkspace-red .x-layout-collapsed{background:#F55 none repeat scroll 0 50%;}.k-entity-title{border-left-style:solid;border-left-width:2px;}.k-entity-title div{line-height:22px;white-space:nowrap;}.k-entity-subtitle{}.k-entity-subtitle div{line-height:22px;white-space:nowrap;}.k-entity-title-rd-default{background:#DD8A3D;}.k-entity-title-rd-green{background:#5FD35F;}.k-entity-title-rd-blue{background:#06F;}.k-entity-title-rd-grey{background:#4D4D4D;}.k-entity-title-rd-purple{background:#660080;}.k-entity-title-rd-red{background:#D40000;}.k-entity-title-default{background:#F1BB59 none repeat scroll 0 50%;border-left-color:#DD8A3D;}.k-entity-title-green{background:#AFA none repeat scroll 0 50%;border-left-color:#5FD35F;}.k-entity-title-blue{background:#AFDDE9 none repeat scroll 0 50%;border-left-color:#06F;}.k-entity-title-grey{background:#CCC none repeat scroll 0 50%;border-left-color:#4D4D4D;}.k-entity-title-purple{background:#DDAFE9 none repeat scroll 0 50%;border-left-color:#660080;}.k-entity-title-red{background:#FF8080 none repeat scroll 0 50%;border-left-color:#D40000;}.k-entity-title-default div{color:#69312F;}.k-entity-title-green div{color:#250;}.k-entity-title-blue div{color:navy;}.k-entity-title-grey div{color:#1A1A1A;}.k-entity-title-purple div{color:#405;}.k-entity-title-red div{color:maroon;}.k-entity-subtitle-default{background:#DD8A3D none repeat scroll 0 50%;}.k-entity-subtitle-green{background:#5FD35F none repeat scroll 0 50%;}.k-entity-subtitle-blue{background:#06F none repeat scroll 0 50%;}.k-entity-subtitle-grey{background:#4D4D4D none repeat scroll 0 50%;}.k-entity-subtitle-purple{background:#660080 none repeat scroll 0 50%;}.k-entity-subtitle-red{background:#D40000 none repeat scroll 0 50%;}.k-entity-subtitle-default div{color:#FFF;}.k-entity-subtitle-green div{color:#FFF;}.k-entity-subtitle-blue div{color:#FFF;}.k-entity-subtitle-grey div{color:#FFF;}.k-entity-subtitle-purple div{color:#FFF;}.k-entity-subtitle-red div{color:#FFF;}.k-entity-bottom-rd-default,.k-entity-bottom-default,.k-toolselectoritem-sel-default{background:#DD8A3D;}.k-entity-bottom-rd-green,.k-entity-bottom-green,.k-toolselectoritem-sel-green{background:#5FD35F;}.k-entity-bottom-rd-blue,.k-entity-bottom-blue,.k-toolselectoritem-sel-blue{background:#06F;}.k-entity-bottom-rd-grey,.k-entity-bottom-grey,.k-toolselectoritem-sel-grey{background:#4D4D4D;}.k-entity-bottom-rd-purple,.k-entity-bottom-purple,.k-toolselectoritem-sel-purple{background:#660080;}.k-entity-bottom-rd-red,.k-entity-bottom-red,.k-toolselectoritem-sel-red{background:#D40000;}.k-entitylicensepanel-licensetext{cursor:pointer;margin-left:5px;text-decoration:underline;}.k-entity-context-default div,.k-entity-context-default .x-tree .x-panel-body{background:#FFD09D none repeat scroll 0 50%;}.k-entity-context-green div,.k-entity-context-green .x-tree .x-panel-body{background:#CFA none repeat scroll 0 50%;}.k-entity-context-blue div,.k-entity-context-blue .x-tree .x-panel-body{background:#ACF none repeat scroll 0 50%;}.k-entity-context-grey div,.k-entity-context-grey .x-tree .x-panel-body{background:#B3B3B3 none repeat scroll 0 50%;}.k-entity-context-purple div,.k-entity-context-purple .x-tree .x-panel-body{background:#DDAFE9 none repeat scroll 0 50%;}.k-entity-context-red div,.k-entity-context-red .x-tree .x-panel-body{background:#FAA none repeat scroll 0 50%;}.k-entity-context-purple .x-tree .x-panel-body{background:#DDAFE9 none repeat scroll 0 50%;}.k-entity-bottom div{/* line-height: 24px; */color:#FFF;}.k-toolbar-top-line{border-top-color:#d0d0d0;border-top-style:solid;border-top-width:1px;}.k-toolbar-bottom-line{border-bottom-color:#d0d0d0;border-bottom-style:solid;border-bottom-width:1px;}.x-toolbar td,.x-toolbar span,.x-toolbar input,.x-toolbar div,.x-toolbar select,.x-toolbar label{white-space:nowrap;font:normal 100% arial, sans;line-height:19px;}.k-toolbar-sep{padding-top:4px;padding-left:5px;}/* Custom gwt-ext styles */.ytb-sep{background-image:url(../js/ext/resources/images/default/grid/grid-split.gif);background-position:center;background-repeat:no-repeat;display:block;font-size:1px;height:16px;width:4px;overflow:hidden;cursor:default;margin:0 2px;border:0;}.ytb-spacer{width:2px;}.x-grid-group-hd{border-bottom:2px solid grey;cursor:pointer;padding-top:3px;}/* Drop down */.k-dropdownouter{background-color:grey;}.k-dropdownouter-members{}.k-dropdownouter-members-default{background-color:#DF5244;}.k-dropdownouter-members-green{background-color:green;}.k-dropdownouter-members-blue{background-color:#5500D4;}.k-dropdownouter-members-grey{background-color:#4D4D4D;}.k-dropdownouter-members-purple{background-color:#672178;}.k-dropdownouter-members-red{background-color:#A02C2C;}.k-dropdownouter-part{}.k-dropdownouter-part-default{background-color:#CA5842;}.k-dropdownouter-part-green{background-color:#0A0;}.k-dropdownouter-part-blue{background-color:#60F;}.k-dropdownouter-part-grey{background-color:#666;}.k-dropdownouter-part-purple{background-color:#892CA0;}.k-dropdownouter-part-red{background-color:#C83737;}.k-dropdownouter-tags{}.k-dropdownouter-tags-default{background-color:#87501E;}.k-dropdownouter-tags-green{background-color:#00D400;}.k-dropdownouter-tags-blue{background-color:#95F;}.k-dropdownouter-tags-grey{background-color:gray;}.k-dropdownouter-tags-purple{background-color:#AB37C8;}.k-dropdownouter-tags-red{background-color:#D35F5F;}.k-dropdownouter-summary{}.k-dropdownouter-summary-default{background-color:#9F734B;}.k-dropdownouter-summary-green{background-color:#4CE14C;}.k-dropdownouter-summary-blue{background-color:#69A5FF;}.k-dropdownouter-summary-grey{background-color:#A6A6A6;}.k-dropdownouter-summary-purple{background-color:#C473D8;}.k-dropdownouter-summary-red{background-color:#E08F8F;}.k-dropdowninner{margin:0 3px 1px;background:green;background-color:#FFF;/* padding: 3px; */}.k-dropdownlabel{color:#FFF;cursor:pointer;}.k-dropdownlabel .gwt-Label{margin:0 5px 0 0;width:100%;}.k-dropdownlabel img{margin:0 3px 0 1px;}/* WsTheme */.k-wstheme-icon-default{background:#FF8C00;}.k-wstheme-icon-green{background:green;}.k-wstheme-icon-blue{background:blue;}.k-wstheme-icon-grey{background:grey;}.k-wstheme-icon-purple{background:purple;}.k-wstheme-icon-red{background:red;}/* Tool selector items */.k-toolselectoritem{width:auto;margin-bottom:5px;cursor:pointer;}.k-toolselectoritem-sel{}.k-toolselectoritem-notsel-default{background:#FFE9A5;}.k-toolselectoritem-notsel-green{background:#D6F4D6;}.k-toolselectoritem-notsel-blue{background:#D7D7F4;}.k-toolselectoritem-notsel-grey{background:#E6E6E6;}.k-toolselectoritem-notsel-purple{background:#EED7F4;}.k-toolselectoritem-notsel-red{background:#FFD5D5;}.k-toolselectoritem-sel a{color:#FFF;padding:0 9px;text-decoration:none;}.k-toolselectoritem-sel a:hover{text-decoration:none;}.k-toolselectoritem-notsel{}.k-toolselectoritem-notsel a{color:#00F;padding:0 9px;text-decoration:none;}.k-toolselectoritem-notsel a:hover{text-decoration:underline;}/* others *//*
.x-tree-node a span, .x-dd-drag-ghost a span {
color:#000000;
padding: 1px 0px 1px 1px;
text-decoration:none;
}
-*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}.k-text-gray{color:gray;}.k-elp-limg{margin-top:4px;margin-left:5px;}
\ No newline at end of file
+*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}.k-text-gray{color:gray;}.k-elp-limg{margin-top:4px;margin-left:5px;cursor:pointer;}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-25 16:52:11 UTC (rev 969)
@@ -377,12 +377,6 @@
background: #D40000;
}
-.k-entitylicensepanel-licensetext {
- cursor: pointer;
- margin-left: 5px;
- text-decoration: underline;
-}
-
.k-entity-context-default div,.k-entity-context-default .x-tree .x-panel-body
{
background: #FFD09D none repeat scroll 0% 50%;
@@ -417,7 +411,7 @@
}
.k-entity-bottom div {
- line-height: 24px;
+ /* line-height: 24px; */
color: #FFF;
}
@@ -802,4 +796,5 @@
.k-elp-limg {
margin-top: 4px;
margin-left: 5px;
+ cursor: pointer;
}
Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -46,6 +46,7 @@
import org.ourproject.kune.rack.filters.LogFilter;
import org.ourproject.kune.rack.filters.RedirectFilter;
import org.ourproject.kune.rack.filters.rest.RESTServicesModule;
+import org.ourproject.kune.wiki.server.WikiServerModule;
import org.ourproject.kune.workspace.client.site.rpc.UserService;
import com.google.inject.AbstractModule;
@@ -111,6 +112,7 @@
builder.use(new PlatformServerModule());
builder.use(new DocumentServerModule());
builder.use(new BlogServerModule());
+ builder.use(new WikiServerModule());
builder.use(new ChatServerModule());
builder.use(new RESTServicesModule());
builder.use(configModule);
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientTool.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientTool.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -58,5 +58,6 @@
protected void registerIcons() {
registerContentTypeIcon(TYPE_BLOG, "images/nav/blog.png");
registerContentTypeIcon(TYPE_POST, "images/nav/post.png");
+ registerUploadTypesAndMimes(TYPE_UPLOADEDFILE);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -29,6 +29,7 @@
import org.ourproject.kune.platf.client.dto.AccessRolDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.wiki.client.WikiClientTool;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import com.calclab.suco.client.ioc.Provider;
@@ -94,7 +95,7 @@
contentActionRegistry.addAction(chatAbout, DocumentClientTool.TYPE_DOCUMENT);
contentActionRegistry.addAction(chatAbout, DocumentClientTool.TYPE_GALLERY);
- contentActionRegistry.addAction(chatAbout, DocumentClientTool.TYPE_WIKIPAGE);
+ contentActionRegistry.addAction(chatAbout, WikiClientTool.TYPE_WIKIPAGE);
contentActionRegistry.addAction(chatAbout, BlogClientTool.TYPE_POST);
contentActionRegistry.addAction(chatAbout, DocumentClientTool.TYPE_UPLOADEDFILE);
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -23,8 +23,6 @@
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_GALLERY;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_ROOT;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_UPLOADEDFILE;
-import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_WIKI;
-import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_WIKIPAGE;
import org.ourproject.kune.docs.client.cnt.DocumentViewer;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
@@ -64,12 +62,11 @@
@Override
protected void createActions() {
- final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_WIKI, TYPE_WIKIPAGE,
- TYPE_UPLOADEDFILE };
- final String[] containers = { TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY, TYPE_WIKI };
+ final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_UPLOADEDFILE };
+ final String[] containers = { TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY };
final String[] contentsModerated = { TYPE_DOCUMENT, TYPE_UPLOADEDFILE };
- final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY, TYPE_WIKI };
- final String[] contents = { TYPE_DOCUMENT, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
+ final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY };
+ final String[] contents = { TYPE_DOCUMENT, TYPE_UPLOADEDFILE };
String parentMenuTitle = i18n.t("File");
String parentMenuTitleCtx = i18n.t("Folder");
@@ -78,13 +75,9 @@
i18n.t("New"), i18n.t("New folder"), Position.ctx, TYPE_ROOT, TYPE_FOLDER);
createNewContainerAction(TYPE_GALLERY, "images/nav/gallery_add.png", i18n.t("New gallery"), parentMenuTitleCtx,
i18n.t("New"), i18n.t("New gallery"), Position.ctx, TYPE_ROOT);
- createNewContainerAction(TYPE_WIKI, "images/nav/wiki_add.png", i18n.t("New wiki"), parentMenuTitleCtx,
- i18n.t("New"), i18n.t("wiki"), Position.ctx, TYPE_ROOT);
createNewContentAction(TYPE_DOCUMENT, "images/nav/page_add.png", i18n.t("New document"), parentMenuTitleCtx,
Position.ctx, TYPE_ROOT, TYPE_FOLDER);
- createNewContentAction(TYPE_WIKIPAGE, "images/nav/wikipage_add.png", parentMenuTitleCtx,
- i18n.t("New wikipage"), Position.ctx, TYPE_WIKI);
createContentModeratedActions(parentMenuTitle, contentsModerated);
@@ -105,10 +98,13 @@
createDownloadActions(TYPE_UPLOADEDFILE);
createGoAction(all);
+
createGoHomeAction(containers);
- createEditAction(TYPE_DOCUMENT, TYPE_WIKIPAGE);
- createTranslateAction(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE, TYPE_WIKI, TYPE_WIKIPAGE);
+ createEditAction(TYPE_DOCUMENT);
+
+ createTranslateAction(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE);
+
createDelContainerAction("Delete folder", parentMenuTitleCtx, containersNoRoot);
createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -19,7 +19,6 @@
*/
package org.ourproject.kune.docs.client;
-import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
import org.ourproject.kune.platf.client.registry.ContentCapabilitiesRegistry;
import org.ourproject.kune.platf.client.tool.FoldableAbstractClientTool;
import org.ourproject.kune.platf.client.tool.ToolSelector;
@@ -32,8 +31,6 @@
public static final String TYPE_FOLDER = "docs.folder";
public static final String TYPE_DOCUMENT = "docs.doc";
public static final String TYPE_GALLERY = "docs.gallery";
- public static final String TYPE_WIKI = "docs.wiki";
- public static final String TYPE_WIKIPAGE = "docs.wikipage";
public static final String TYPE_UPLOADEDFILE = "docs.uploaded";
public static final String NAME = "docs";
@@ -47,10 +44,10 @@
registerDragableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_UPLOADEDFILE);
registerDropableTypes(TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY);
registerPublishModerableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
- registerRateableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
- registerRenamableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE, TYPE_WIKI, TYPE_WIKIPAGE);
- registerTageableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
- registerTranslatableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
+ registerRateableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
+ registerRenamableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE);
+ registerTageableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
+ registerTranslatableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_UPLOADEDFILE);
registerIcons();
}
@@ -63,24 +60,7 @@
registerContentTypeIcon(TYPE_FOLDER, "images/nav/folder.png");
registerContentTypeIcon(TYPE_GALLERY, "images/nav/gallery.png");
registerContentTypeIcon(TYPE_DOCUMENT, "images/nav/page.png");
- registerContentTypeIcon(TYPE_WIKI, "images/nav/wiki.png");
- registerContentTypeIcon(TYPE_WIKIPAGE, "images/nav/wikipage.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("image"), "images/nav/picture.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("video"), "images/nav/film.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("application", "pdf"),
- "images/nav/page_pdf.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("application", "zip"),
- "images/nav/page_zip.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("application", "zip"),
- "images/nav/page_zip.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("text"), "images/nav/page_text.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("application", "msword"),
- "images/nav/page_word.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("application", "excel"),
- "images/nav/page_excel.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("application", "mspowerpoint"),
- "images/nav/page_pps.png");
- registerContentTypeIcon(TYPE_UPLOADEDFILE, "images/nav/page.png");
+ registerUploadTypesAndMimes(TYPE_UPLOADEDFILE);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/tool/FoldableAbstractClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/tool/FoldableAbstractClientTool.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/tool/FoldableAbstractClientTool.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -82,4 +82,20 @@
protected void registerXmppNotifyCapableTypes(String... typeIds) {
contentCapabilitiesRegistry.getXmppNotificyCapable().register(typeIds);
}
+
+ protected void registerUploadTypesAndMimes(String typeUploadedfile) {
+ registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("image"), "images/nav/picture.png");
+ registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("video"), "images/nav/film.png");
+ registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "pdf"), "images/nav/page_pdf.png");
+ registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "zip"), "images/nav/page_zip.png");
+ registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "zip"), "images/nav/page_zip.png");
+ registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("text"), "images/nav/page_text.png");
+ registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "msword"),
+ "images/nav/page_word.png");
+ registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "excel"),
+ "images/nav/page_excel.png");
+ registerContentTypeIcon(typeUploadedfile, new BasicMimeTypeDTO("application", "mspowerpoint"),
+ "images/nav/page_pps.png");
+ registerContentTypeIcon(typeUploadedfile, "images/nav/page.png");
+ }
}
Added: trunk/src/main/java/org/ourproject/kune/wiki/Kune-Wiki.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/Kune-Wiki.gwt.xml 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/Kune-Wiki.gwt.xml 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,5 @@
+<!DOCTYPE document SYSTEM "src/main/java/gwt-module.dtd">
+<module>
+ <inherits name='org.ourproject.kune.platf.Kune-Platform' />
+ <inherits name='org.ourproject.kune.workspace.Kune-Workspace' />
+</module>
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientActions.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,113 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */package org.ourproject.kune.wiki.client;
+
+import static org.ourproject.kune.wiki.client.WikiClientTool.TYPE_FOLDER;
+import static org.ourproject.kune.wiki.client.WikiClientTool.TYPE_ROOT;
+import static org.ourproject.kune.wiki.client.WikiClientTool.TYPE_UPLOADEDFILE;
+import static org.ourproject.kune.wiki.client.WikiClientTool.TYPE_WIKIPAGE;
+
+import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
+import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
+import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
+import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
+import org.ourproject.kune.platf.client.services.KuneErrorHandler;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
+import org.ourproject.kune.platf.client.ui.upload.FileUploader;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
+import org.ourproject.kune.wiki.client.cnt.WikiViewer;
+import org.ourproject.kune.workspace.client.AbstractFoldableContentActions;
+import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
+import org.ourproject.kune.workspace.client.editor.TextEditor;
+import org.ourproject.kune.workspace.client.entitylogo.EntityLogo;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+
+import com.calclab.suco.client.ioc.Provider;
+
+public class WikiClientActions extends AbstractFoldableContentActions {
+ public WikiClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
+ final Session session, final StateManager stateManager,
+ final DeferredCommandWrapper deferredCommandWrapper,
+ final Provider<ContentServiceAsync> contentServiceProvider,
+ final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
+ final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
+ final Provider<FileDownloadUtils> fileDownloadProvider, final EntityLogo entityLogo,
+ final Provider<TextEditor> textEditorProvider, final KuneErrorHandler errorHandler,
+ final WikiViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider) {
+ super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
+ contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
+ contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
+ documentViewer, entityLogo);
+ }
+
+ @Override
+ protected void createActions() {
+ final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
+ final String[] containers = { TYPE_ROOT, TYPE_FOLDER };
+ // final String[] contentsModerated = { };
+ final String[] containersNoRoot = { TYPE_FOLDER };
+ final String[] contents = { TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
+
+ String parentMenuTitle = i18n.t("Wikipage");
+ String parentMenuTitleCtx = i18n.t("Wiki");
+
+ createNewContainerAction(TYPE_FOLDER, "images/nav/folder_add.png", i18n.t("New folder"), parentMenuTitleCtx,
+ i18n.t("New"), i18n.t("New folder"), Position.ctx, TYPE_ROOT, TYPE_FOLDER);
+
+ createNewContentAction(TYPE_WIKIPAGE, "images/nav/wikipage_add.png", i18n.t("New wikipage"),
+ parentMenuTitleCtx, Position.ctx, TYPE_ROOT, TYPE_FOLDER);
+
+ // createContentModeratedActions(parentMenuTitle, contentsModerated);
+
+ createContentRenameAction(parentMenuTitle, i18n.t("Rename"), contents);
+ createRenameContentInCtxAction(parentMenuTitleCtx, i18n.t("Rename"), containersNoRoot);
+
+ // final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt =
+ // createSetAsDefContent(parentMenuTitleCtx);
+
+ createRefreshCntAction(parentMenuTitle, contents);
+ createRefreshCxtAction(parentMenuTitleCtx, containers);
+
+ createSetAsDefContent(parentMenuTitle, contents);
+
+ createUploadAction(i18n.t("Upload file"), "images/nav/upload.png",
+ i18n.t("Upload some files (images, PDFs, ...)"), null, containers);
+
+ createDownloadActions(TYPE_UPLOADEDFILE);
+
+ createGoAction(all);
+
+ createGoHomeAction(containers);
+
+ createEditAction(TYPE_WIKIPAGE);
+
+ createTranslateAction(TYPE_FOLDER, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
+
+ createDelContainerAction("Delete folder", parentMenuTitleCtx, containersNoRoot);
+ createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
+ }
+
+ @Override
+ protected void createPostSessionInitActions() {
+ // super.createUploadMediaAction();
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientModule.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,119 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */package org.ourproject.kune.wiki.client;
+
+import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
+import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
+import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
+import org.ourproject.kune.platf.client.app.ToolGroup;
+import org.ourproject.kune.platf.client.registry.ContentCapabilitiesRegistry;
+import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
+import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.services.KuneErrorHandler;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.tool.ToolSelector;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
+import org.ourproject.kune.platf.client.ui.upload.FileUploader;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
+import org.ourproject.kune.wiki.client.cnt.WikiFolderContent;
+import org.ourproject.kune.wiki.client.cnt.WikiFolderContentPanel;
+import org.ourproject.kune.wiki.client.cnt.WikiFolderContentPresenter;
+import org.ourproject.kune.wiki.client.cnt.WikiFolderContentView;
+import org.ourproject.kune.wiki.client.cnt.WikiViewer;
+import org.ourproject.kune.wiki.client.cnt.WikiViewerPanel;
+import org.ourproject.kune.wiki.client.cnt.WikiViewerPresenter;
+import org.ourproject.kune.wiki.client.cnt.WikiViewerView;
+import org.ourproject.kune.wiki.client.ctx.WikiContext;
+import org.ourproject.kune.wiki.client.ctx.WikiContextPresenter;
+import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
+import org.ourproject.kune.workspace.client.editor.TextEditor;
+import org.ourproject.kune.workspace.client.entitylogo.EntityLogo;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
+
+import com.calclab.suco.client.ioc.decorator.Singleton;
+import com.calclab.suco.client.ioc.module.AbstractModule;
+import com.calclab.suco.client.ioc.module.Factory;
+
+public class WikiClientModule extends AbstractModule {
+
+ @Override
+ public void onInstall() {
+
+ register(ToolGroup.class, new Factory<WikiClientTool>(WikiClientTool.class) {
+ @Override
+ public WikiClientTool create() {
+ $(WikiClientActions.class);
+ return new WikiClientTool($(I18nUITranslationService.class), $(ToolSelector.class),
+ $(WsThemePresenter.class), $(WorkspaceSkeleton.class), $(ContentCapabilitiesRegistry.class));
+ }
+ });
+
+ register(ToolGroup.class, new Factory<WikiClientActions>(WikiClientActions.class) {
+ @Override
+ public WikiClientActions create() {
+ return new WikiClientActions($(I18nUITranslationService.class), $(ContextNavigator.class),
+ $(Session.class), $(StateManager.class), $(DeferredCommandWrapper.class),
+ $$(ContentServiceAsync.class), $$(GroupServiceAsync.class), $$(FileUploader.class),
+ $(ContentActionRegistry.class), $(ContextActionRegistry.class), $$(FileDownloadUtils.class),
+ $(EntityLogo.class), $$(TextEditor.class), $(KuneErrorHandler.class), $(WikiViewer.class),
+ $$(ContextPropEditor.class));
+ }
+ });
+
+ register(ToolGroup.class, new Factory<WikiContext>(WikiContext.class) {
+ @Override
+ public WikiContext create() {
+ final WikiContextPresenter presenter = new WikiContextPresenter($(StateManager.class),
+ $$(ContextNavigator.class), $$(ContextPropEditor.class));
+ return presenter;
+ }
+ });
+
+ register(Singleton.class, new Factory<WikiViewer>(WikiViewer.class) {
+ @Override
+ public WikiViewer create() {
+ final WikiViewerPresenter presenter = new WikiViewerPresenter($(StateManager.class), $(Session.class),
+ $(I18nUITranslationService.class), $(ActionContentToolbar.class),
+ $(ContentActionRegistry.class), $$(FileDownloadUtils.class));
+ final WikiViewerView view = new WikiViewerPanel($(WorkspaceSkeleton.class),
+ $(I18nTranslationService.class));
+ presenter.init(view);
+ return presenter;
+ }
+ });
+
+ register(ToolGroup.class, new Factory<WikiFolderContent>(WikiFolderContent.class) {
+ @Override
+ public WikiFolderContent create() {
+ final WikiFolderContentPresenter presenter = new WikiFolderContentPresenter($(StateManager.class),
+ $(Session.class), $(ActionContentToolbar.class), $(ContentActionRegistry.class),
+ $(I18nTranslationService.class));
+ final WikiFolderContentView view = new WikiFolderContentPanel($(WorkspaceSkeleton.class),
+ $(I18nTranslationService.class));
+ presenter.init(view);
+ return presenter;
+ }
+ });
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/WikiClientTool.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,65 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client;
+
+import org.ourproject.kune.platf.client.registry.ContentCapabilitiesRegistry;
+import org.ourproject.kune.platf.client.tool.FoldableAbstractClientTool;
+import org.ourproject.kune.platf.client.tool.ToolSelector;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
+
+public class WikiClientTool extends FoldableAbstractClientTool {
+ public static final String TYPE_ROOT = "wiki.root";
+ public static final String TYPE_FOLDER = "wiki.folder";
+ public static final String TYPE_WIKIPAGE = "wiki.wikipage";
+ public static final String TYPE_UPLOADEDFILE = "wiki.uploaded";
+ public static final String NAME = "wiki";
+
+ public WikiClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector,
+ final WsThemePresenter wsThemePresenter, final WorkspaceSkeleton ws,
+ ContentCapabilitiesRegistry contentCapabilitiesRegistry) {
+ super(NAME, i18n.t("wiki"), toolSelector, wsThemePresenter, ws, contentCapabilitiesRegistry);
+
+ // registerAclEditableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
+ registerAuthorableTypes(TYPE_WIKIPAGE, TYPE_UPLOADEDFILE);
+ registerDragableTypes(TYPE_WIKIPAGE, TYPE_FOLDER, TYPE_UPLOADEDFILE);
+ registerDropableTypes(TYPE_ROOT, TYPE_FOLDER);
+ // registerPublishModerableTypes();
+ registerRateableTypes(TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
+ registerRenamableTypes(TYPE_FOLDER, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
+ registerTageableTypes(TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
+ registerTranslatableTypes(TYPE_FOLDER, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
+
+ registerIcons();
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ protected void registerIcons() {
+ registerContentTypeIcon(TYPE_FOLDER, "images/nav/folder.png");
+ // registerContentTypeIcon(TYPE_FOLDER, "images/nav/wiki.png");
+ registerContentTypeIcon(TYPE_WIKIPAGE, "images/nav/wikipage.png");
+ registerUploadTypesAndMimes(TYPE_UPLOADEDFILE);
+ }
+
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContent.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContent.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContent.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,23 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.cnt;
+
+public interface WikiFolderContent {
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPanel.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPanel.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,32 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.cnt;
+
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.workspace.client.cnt.FoldableContentPanel;
+import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+
+public class WikiFolderContentPanel extends FoldableContentPanel implements WikiFolderContentView {
+
+ public WikiFolderContentPanel(WorkspaceSkeleton ws, I18nTranslationService i18n) {
+ super(ws, i18n);
+ super.setLabel("");
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentPresenter.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,64 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.cnt;
+
+import org.ourproject.kune.chat.client.ChatClientTool;
+import org.ourproject.kune.platf.client.actions.ActionRegistry;
+import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
+import org.ourproject.kune.platf.client.dto.ContainerDTO;
+import org.ourproject.kune.platf.client.dto.StateContainerDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.wiki.client.WikiClientTool;
+import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
+
+public class WikiFolderContentPresenter extends FoldableContentPresenter implements WikiFolderContent {
+
+ private WikiFolderContentView view;
+ private final I18nTranslationService i18n;
+
+ public WikiFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
+ final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n) {
+ super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry);
+ this.i18n = i18n;
+ }
+
+ public void init(final WikiFolderContentView view) {
+ super.init(view);
+ this.view = view;
+ }
+
+ @Override
+ protected void setState(StateContainerDTO state) {
+ if (state.getTypeId().equals(ChatClientTool.TYPE_ROOT)) {
+ ContainerDTO rootContainer = state.getRootContainer();
+ if (rootContainer.getChilds().size() == 0 && rootContainer.getContents().size() == 0) {
+ view.setInfo(i18n.t("This wiki has no pages."));
+ } else {
+ view.setInfo("");
+ }
+ } else {
+ view.setInfo("");
+ }
+ super.setState(state);
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentView.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiFolderContentView.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,25 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.cnt;
+
+import org.ourproject.kune.workspace.client.cnt.AbstractContentView;
+
+public interface WikiFolderContentView extends AbstractContentView {
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewer.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewer.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewer.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,25 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.cnt;
+
+import org.ourproject.kune.workspace.client.cnt.FoldableContent;
+
+public interface WikiViewer extends FoldableContent {
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPanel.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPanel.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,30 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.cnt;
+
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.workspace.client.cnt.FoldableContentPanel;
+import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+
+public class WikiViewerPanel extends FoldableContentPanel implements WikiViewerView {
+ public WikiViewerPanel(final WorkspaceSkeleton ws, I18nTranslationService i18n) {
+ super(ws, i18n);
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerPresenter.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,83 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.cnt;
+
+import org.ourproject.kune.wiki.client.WikiClientTool;
+import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
+import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
+import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
+import org.ourproject.kune.platf.client.dto.StateContentDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
+import org.ourproject.kune.platf.client.ui.download.ImageSize;
+import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+
+import com.calclab.suco.client.ioc.Provider;
+
+public class WikiViewerPresenter extends FoldableContentPresenter implements WikiViewer {
+ private WikiViewerView view;
+ private final Provider<FileDownloadUtils> downloadProvider;
+
+ public WikiViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
+ ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
+ Provider<FileDownloadUtils> downloadProvider) {
+ super(WikiClientTool.NAME, stateManager, session, toolbar, actionRegistry);
+ this.downloadProvider = downloadProvider;
+ }
+
+ public void init(WikiViewerView view) {
+ super.init(view);
+ this.view = view;
+ }
+
+ @Override
+ protected void setState(StateContentDTO state) {
+ super.setState(state);
+ setContent(state, WikiClientTool.TYPE_UPLOADEDFILE);
+ }
+
+ private void setContent(StateContentDTO state, String uploadedfileType) {
+ String typeId = state.getTypeId();
+ String contentBody = state.getContent();
+ StateToken token = state.getStateToken();
+ BasicMimeTypeDTO mimeType = state.getMimeType();
+ if (typeId.equals(uploadedfileType)) {
+ if (mimeType != null) {
+ FileDownloadUtils fileDownloadUtils = downloadProvider.get();
+ if (mimeType.getType().equals("image")) {
+ view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token,
+ ImageSize.sized));
+ } else if (mimeType.toString().equals("text/plain") || mimeType.toString().equals("application/pdf")) {
+ view.setContent(contentBody);
+ } else {
+ view.setContent("");
+ }
+ } else {
+ view.setContent("");
+ }
+ } else {
+ view.setContent(contentBody);
+ }
+ view.attach();
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerView.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/cnt/WikiViewerView.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,30 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.cnt;
+
+import org.ourproject.kune.workspace.client.cnt.AbstractContentView;
+
+public interface WikiViewerView extends AbstractContentView {
+
+ void setContent(String content);
+
+ void showImage(String imageUrl, String imageResizedUrl);
+
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/ctx/WikiContext.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/ctx/WikiContext.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/ctx/WikiContext.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,24 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.ctx;
+
+public interface WikiContext {
+
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/client/ctx/WikiContextPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/client/ctx/WikiContextPresenter.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/client/ctx/WikiContextPresenter.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.client.ctx;
+
+import org.ourproject.kune.wiki.client.WikiClientTool;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
+import org.ourproject.kune.workspace.client.cxt.FoldableContextPresenter;
+
+import com.calclab.suco.client.ioc.Provider;
+
+public class WikiContextPresenter extends FoldableContextPresenter implements WikiContext {
+ public WikiContextPresenter(final StateManager stateManager,
+ final Provider<ContextNavigator> contextNavigatorProvider,
+ final Provider<ContextPropEditor> contextPropEditorProvider) {
+ super(WikiClientTool.NAME, stateManager, contextNavigatorProvider, contextPropEditorProvider);
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerModule.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerModule.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,29 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.server;
+
+import com.google.inject.Binder;
+import com.google.inject.Module;
+
+public class WikiServerModule implements Module {
+ public void configure(final Binder binder) {
+ binder.bind(WikiServerTool.class).asEagerSingleton();
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerTool.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/wiki/server/WikiServerTool.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -0,0 +1,148 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.wiki.server;
+
+import org.ourproject.kune.platf.client.errors.ContainerNotPermittedException;
+import org.ourproject.kune.platf.client.errors.ContentNotPermittedException;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.server.content.ContainerManager;
+import org.ourproject.kune.platf.server.content.ContentManager;
+import org.ourproject.kune.platf.server.domain.AccessLists;
+import org.ourproject.kune.platf.server.domain.Container;
+import org.ourproject.kune.platf.server.domain.Content;
+import org.ourproject.kune.platf.server.domain.ContentStatus;
+import org.ourproject.kune.platf.server.domain.Group;
+import org.ourproject.kune.platf.server.domain.GroupListMode;
+import org.ourproject.kune.platf.server.domain.ToolConfiguration;
+import org.ourproject.kune.platf.server.domain.User;
+import org.ourproject.kune.platf.server.manager.ToolConfigurationManager;
+import org.ourproject.kune.platf.server.tool.ServerTool;
+import org.ourproject.kune.platf.server.tool.ServerToolRegistry;
+import org.ourproject.kune.platf.server.tool.ServerToolTarget;
+
+import com.google.inject.Inject;
+
+public class WikiServerTool implements ServerTool {
+ public static final String TYPE_ROOT = "wiki.root";
+ public static final String TYPE_FOLDER = "wiki.folder";
+ public static final String TYPE_WIKIPAGE = "wiki.wikipage";
+ public static final String TYPE_UPLOADEDFILE = "wiki.uploaded";
+
+ public static final String NAME = "wiki";
+ public static final String ROOT_NAME = "wiki";
+
+ private final ContentManager contentManager;
+ private final ToolConfigurationManager configurationManager;
+ private final ContainerManager containerManager;
+ private final I18nTranslationService i18n;
+
+ @Inject
+ public WikiServerTool(final ContentManager contentManager, final ContainerManager containerManager,
+ final ToolConfigurationManager configurationManager, final I18nTranslationService translationService) {
+ this.contentManager = contentManager;
+ this.containerManager = containerManager;
+ this.configurationManager = configurationManager;
+ this.i18n = translationService;
+ }
+
+ public void checkTypesBeforeContainerCreation(String parentTypeId, String typeId) {
+ checkContainerTypeId(parentTypeId, typeId);
+ }
+
+ public void checkTypesBeforeContentCreation(String parentTypeId, String typeId) {
+ checkContentTypeId(parentTypeId, typeId);
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ public String getRootName() {
+ return ROOT_NAME;
+ }
+
+ public ServerToolTarget getTarget() {
+ return ServerToolTarget.forBoth;
+ }
+
+ public Group initGroup(final User user, final Group group) {
+ final ToolConfiguration config = new ToolConfiguration();
+ final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
+ config.setRoot(rootFolder);
+ group.setToolConfig(NAME, config);
+ configurationManager.persist(config);
+ final Content descriptor = contentManager.createContent(i18n.t("Wiki page sample"), "", user, rootFolder,
+ WikiServerTool.TYPE_WIKIPAGE);
+ descriptor.addAuthor(user);
+ descriptor.setLanguage(user.getLanguage());
+ descriptor.setTypeId(TYPE_WIKIPAGE);
+ descriptor.setStatus(ContentStatus.publishedOnline);
+ contentManager.save(user, descriptor,
+ i18n.t("This is only a wiki page sample. You can edit or rename it but also any other user."));
+ return group;
+ }
+
+ public void onCreateContainer(final Container container, final Container parent) {
+ if (container.getTypeId().equals(TYPE_FOLDER)) {
+ AccessLists wikiAcl = new AccessLists();
+ wikiAcl.getAdmins().setMode(GroupListMode.NORMAL);
+ wikiAcl.getAdmins().add(container.getOwner());
+ wikiAcl.getEditors().setMode(GroupListMode.EVERYONE);
+ wikiAcl.getViewers().setMode(GroupListMode.EVERYONE);
+ container.setAccessLists(wikiAcl);
+ }
+ }
+
+ public void onCreateContent(final Content content, final Container parent) {
+ }
+
+ @Inject
+ public void register(final ServerToolRegistry registry) {
+ registry.register(this);
+ }
+
+ void checkContainerTypeId(final String parentTypeId, final String typeId) {
+ if (typeId.equals(TYPE_FOLDER)) {
+ // ok valid container
+ if ((typeId.equals(TYPE_FOLDER) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))) {
+ // ok
+ } else {
+ throw new ContainerNotPermittedException();
+ }
+ } else {
+ throw new ContainerNotPermittedException();
+ }
+ }
+
+ void checkContentTypeId(final String parentTypeId, final String typeId) {
+ if (typeId.equals(TYPE_WIKIPAGE) || typeId.equals(TYPE_UPLOADEDFILE)) {
+ // ok valid content
+ boolean parentIsFolderOrRoot = parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER);
+ if ((typeId.equals(TYPE_UPLOADEDFILE) && parentIsFolderOrRoot)
+ || (typeId.equals(TYPE_WIKIPAGE) && parentIsFolderOrRoot)) {
+ // ok
+ } else {
+ throw new ContentNotPermittedException();
+ }
+ } else {
+ throw new ContentNotPermittedException();
+ }
+ }
+}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -327,8 +327,9 @@
register(addFolder, position, registerInTypes);
}
- protected void createNewContentAction(final String typeId, String iconUrl, final String description,
- final String parentMenuTitle, Position position, String... registerInTypes) {
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createNewContentAction(final String typeId,
+ String iconUrl, final String description, final String parentMenuTitle, Position position,
+ String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> addContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken token) {
@@ -348,6 +349,7 @@
addContent.setParentSubMenuTitle(i18n.t("New"));
addContent.setIconUrl(iconUrl);
register(addContent, position, registerInTypes);
+ return addContent;
}
protected void createPostSessionInitActions() {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/AbstractContentView.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -6,4 +6,6 @@
void detach();
+ void setInfo(String info);
+
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -29,13 +29,13 @@
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MouseListenerAdapter;
+import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import com.gwtext.client.core.Ext;
import com.gwtext.client.core.Function;
import com.gwtext.client.core.FxConfig;
public class EntityLicensePanel implements EntityLicenseView {
- private final Label copyright;
private final Image licenseImage;
private final Label licenseLabel;
private final I18nTranslationService i18n;
@@ -46,14 +46,12 @@
final WorkspaceSkeleton ws) {
this.i18n = i18n;
this.ws = ws;
- copyright = new Label();
licenseImage = new Image();
licenseLabel = new Label();
licenseBar = new SimpleToolbar();
licenseBar.addSpacer();
- licenseBar.add(licenseImage);
- licenseBar.add(copyright);
+ licenseBar.add(licenseImage, VerticalPanel.ALIGN_TOP);
licenseBar.add(licenseLabel);
final ClickListener clickListener = new ClickListener() {
@@ -64,7 +62,6 @@
licenseLabel.addClickListener(clickListener);
licenseImage.addClickListener(clickListener);
- copyright.setVisible(false);
licenseLabel.setVisible(false);
MouseListenerAdapter mouseListenerAdapter = new MouseListenerAdapter() {
@@ -75,16 +72,15 @@
@Override
public void onMouseLeave(Widget sender) {
- fade(false);
+ // fade(false);
}
};
licenseImage.addMouseListener(mouseListenerAdapter);
- copyright.addMouseListener(mouseListenerAdapter);
licenseLabel.addMouseListener(mouseListenerAdapter);
- copyright.addStyleName("kune-Margin-Large-l");
- licenseLabel.setStyleName("k-entitylicensepanel-licensetext");
+ licenseLabel.addStyleName("kune-Margin-Large-l");
+ licenseLabel.setStyleName("k-elp-limg");
licenseImage.setStyleName("k-elp-limg");
}
@@ -105,33 +101,24 @@
}
public void showLicense(final String groupName, final LicenseDTO licenseDTO) {
- copyright.setText(i18n.t("© [%s], under license: ", groupName));
- licenseLabel.setText(licenseDTO.getLongName());
+ licenseLabel.setText(i18n.t("© [%s], under license: [%s]", groupName, licenseDTO.getLongName()));
licenseImage.setUrl(licenseDTO.getImageUrl());
fade(false);
}
private void fade(final boolean in) {
- if (copyright.isVisible() != in) {
- FxConfig fxConfig = new FxConfig(2);
- FxConfig fxConfigVisible = new FxConfig(2);
+ if (licenseLabel.isVisible() != in) {
+ FxConfig fxConfigVisible = new FxConfig(1);
fxConfigVisible.setAfterStyle(new Function() {
public void execute() {
- setVisible(in);
+ licenseLabel.setVisible(in);
}
});
if (in) {
- Ext.get(copyright.getElement()).fadeIn(fxConfig);
Ext.get(licenseLabel.getElement()).fadeIn(fxConfigVisible);
} else {
- Ext.get(copyright.getElement()).fadeOut(fxConfig);
Ext.get(licenseLabel.getElement()).fadeOut(fxConfigVisible);
}
}
}
-
- private void setVisible(boolean visible) {
- copyright.setVisible(visible);
- licenseLabel.setVisible(visible);
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntitySummary.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntitySummary.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntitySummary.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -80,7 +80,7 @@
anchorLayoutPanel.add(entityTools, new AnchorLayoutData("100%"));
// height: is 25 * number of tools :-( finding a way to make this
// automatic
- anchorLayoutPanel.add(entitySummary, new AnchorLayoutData("100% -75"));
+ anchorLayoutPanel.add(entitySummary, new AnchorLayoutData("100% -" + 4 * 25));
mainFitPanel.add(anchorLayoutPanel);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java 2008-11-25 13:33:20 UTC (rev 968)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java 2008-11-25 16:52:11 UTC (rev 969)
@@ -23,6 +23,7 @@
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
+import com.google.gwt.user.client.ui.HasVerticalAlignment.VerticalAlignmentConstant;
public class SimpleToolbar extends Composite {
@@ -42,6 +43,11 @@
childPanel.setCellVerticalAlignment(widget, VerticalPanel.ALIGN_MIDDLE);
}
+ public void add(final Widget widget, VerticalAlignmentConstant valign) {
+ childPanel.add(widget);
+ childPanel.setCellVerticalAlignment(widget, valign);
+ }
+
public Widget addFill() {
final Label emptyLabel = new Label("");
this.add(emptyLabel);
1
0
r968 - in trunk/src/main/java/org/ourproject/kune: app/public/css blogs/client docs/client workspace/client workspace/client/licensefoot
by vjrj 25 Nov '08
by vjrj 25 Nov '08
25 Nov '08
Author: vjrj
Date: 2008-11-25 14:33:20 +0100 (Tue, 25 Nov 2008)
New Revision: 968
Modified:
trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java
Log:
Incomplete - task UI tools & workspace refactorization
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-25 00:51:20 UTC (rev 967)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-25 13:33:20 UTC (rev 968)
@@ -41,4 +41,4 @@
padding: 1px 0px 1px 1px;
text-decoration:none;
}
-*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}.k-text-gray{color:gray;}.k-elp-limg{margin-top:4px;}
\ No newline at end of file
+*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}.k-text-gray{color:gray;}.k-elp-limg{margin-top:4px;margin-left:5px;}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-25 00:51:20 UTC (rev 967)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-25 13:33:20 UTC (rev 968)
@@ -801,4 +801,5 @@
.k-elp-limg {
margin-top: 4px;
+ margin-left: 5px;
}
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2008-11-25 00:51:20 UTC (rev 967)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2008-11-25 13:33:20 UTC (rev 968)
@@ -24,12 +24,8 @@
import static org.ourproject.kune.blogs.client.BlogClientTool.TYPE_UPLOADEDFILE;
import org.ourproject.kune.blogs.client.cnt.BlogViewer;
-import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
-import org.ourproject.kune.platf.client.actions.ActionToolbarMenuAndItemDescriptor;
-import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
-import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
import org.ourproject.kune.platf.client.services.KuneErrorHandler;
@@ -65,6 +61,12 @@
@Override
protected void createActions() {
+ final String[] all = { TYPE_ROOT, TYPE_BLOG, TYPE_POST, TYPE_UPLOADEDFILE };
+ final String[] contentsModerated = { TYPE_POST, TYPE_UPLOADEDFILE };
+ final String[] containers = { TYPE_ROOT, TYPE_BLOG };
+ final String[] containersNoRoot = { TYPE_BLOG };
+ final String[] contents = { TYPE_POST, TYPE_UPLOADEDFILE };
+
String parentMenuTitle = i18n.t("Post");
String parentMenuTitleCtx = i18n.t("Blog");
@@ -73,56 +75,30 @@
createNewContentAction(TYPE_POST, "images/nav/post_add.png", i18n.t("New post"), parentMenuTitleCtx,
Position.ctx, TYPE_BLOG);
- final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = createDelContainerAction("Delete blog",
- parentMenuTitleCtx);
+ createContentModeratedActions(parentMenuTitle, contentsModerated);
- final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = createDelContentAction(parentMenuTitle,
- i18n.t("Delete"));
+ createContentRenameAction(parentMenuTitle, i18n.t("Rename"), contents);
+ createRenameContentInCtxAction(parentMenuTitleCtx, i18n.t("Rename"), containersNoRoot);
- final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = createContentRenameAction(parentMenuTitle,
- i18n.t("Rename"));
-
- final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = createRenameContentInCtxAction(
- parentMenuTitleCtx, i18n.t("Rename"));
-
- final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCnt = createSetAsDefContent(parentMenuTitle);
-
// final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt =
// createSetAsDefContent(parentMenuTitleCtx);
- final ActionToolbarMenuDescriptor<StateToken> refreshCnt = createRefreshCntAction(parentMenuTitle);
+ createRefreshCntAction(parentMenuTitle, contents);
+ createRefreshCxtAction(parentMenuTitleCtx, containers);
- final ActionToolbarMenuDescriptor<StateToken> refreshCtx = createRefreshCxtAction(parentMenuTitleCtx);
- final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile = createUploadAction(i18n.t("Upload file"),
- "images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null);
+ createUploadAction(i18n.t("Upload file"), "images/nav/upload.png",
+ i18n.t("Upload some files (images, PDFs, ...)"), null, containersNoRoot);
- final String[] all = { TYPE_ROOT, TYPE_BLOG, TYPE_POST, TYPE_UPLOADEDFILE };
- final String[] contentsModerated = { TYPE_POST, TYPE_UPLOADEDFILE };
- final String[] containersNoRoot = { TYPE_BLOG };
- final String[] containers = { TYPE_ROOT, TYPE_BLOG };
- final String[] contents = { TYPE_POST, TYPE_UPLOADEDFILE };
+ createSetAsDefContent(parentMenuTitle, contents);
- createContentModeratedActions(parentMenuTitle, contentsModerated);
+ createGoAction(all);
+ createGoHomeAction(containers);
+ createEditAction(TYPE_POST);
- contextActionRegistry.addAction(go, all);
- contentActionRegistry.addAction(renameCtn, contents);
- contextActionRegistry.addAction(renameCtx, containersNoRoot);
- contextActionRegistry.addAction(refreshCtx, containers);
- contentActionRegistry.addAction(refreshCnt, contents);
- contextActionRegistry.addAction(uploadFile, TYPE_BLOG);
- contentActionRegistry.addAction(delContent, contents);
- contextActionRegistry.addAction(delContainer, containersNoRoot);
- contentActionRegistry.addAction(setAsDefGroupCnt, TYPE_POST, TYPE_UPLOADEDFILE);
// ContentRPC Authorized must permit folders
// contentActionRegistry.addAction(setAsDefGroupCxt, TYPE_BLOG);
- contextActionRegistry.addAction(goGroupHome, containers);
- contentActionRegistry.addAction(editContent, TYPE_POST);
- // contentActionRegistry.addAction(translateContent, );
+ createDelContainerAction("Delete blog", parentMenuTitleCtx, containersNoRoot);
+ createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
}
-
- @Override
- protected void createPostSessionInitActions() {
- // contextActionRegistry.addAction(uploadMedia, TYPE_GALLERY);
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-25 00:51:20 UTC (rev 967)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-25 13:33:20 UTC (rev 968)
@@ -27,12 +27,8 @@
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_WIKIPAGE;
import org.ourproject.kune.docs.client.cnt.DocumentViewer;
-import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
-import org.ourproject.kune.platf.client.actions.ActionToolbarMenuAndItemDescriptor;
-import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
-import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
import org.ourproject.kune.platf.client.services.KuneErrorHandler;
@@ -68,11 +64,18 @@
@Override
protected void createActions() {
+ final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_WIKI, TYPE_WIKIPAGE,
+ TYPE_UPLOADEDFILE };
+ final String[] containers = { TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY, TYPE_WIKI };
+ final String[] contentsModerated = { TYPE_DOCUMENT, TYPE_UPLOADEDFILE };
+ final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY, TYPE_WIKI };
+ final String[] contents = { TYPE_DOCUMENT, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
+
String parentMenuTitle = i18n.t("File");
String parentMenuTitleCtx = i18n.t("Folder");
createNewContainerAction(TYPE_FOLDER, "images/nav/folder_add.png", i18n.t("New folder"), parentMenuTitleCtx,
- i18n.t("New"), i18n.t("New folder"), Position.ctx, TYPE_FOLDER);
+ i18n.t("New"), i18n.t("New folder"), Position.ctx, TYPE_ROOT, TYPE_FOLDER);
createNewContainerAction(TYPE_GALLERY, "images/nav/gallery_add.png", i18n.t("New gallery"), parentMenuTitleCtx,
i18n.t("New"), i18n.t("New gallery"), Position.ctx, TYPE_ROOT);
createNewContainerAction(TYPE_WIKI, "images/nav/wiki_add.png", i18n.t("New wiki"), parentMenuTitleCtx,
@@ -83,58 +86,35 @@
createNewContentAction(TYPE_WIKIPAGE, "images/nav/wikipage_add.png", parentMenuTitleCtx,
i18n.t("New wikipage"), Position.ctx, TYPE_WIKI);
- final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = createDelContainerAction("Delete folder",
- parentMenuTitleCtx);
+ createContentModeratedActions(parentMenuTitle, contentsModerated);
- final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = createDelContentAction(parentMenuTitle,
- i18n.t("Delete"));
+ createContentRenameAction(parentMenuTitle, i18n.t("Rename"), contents);
+ createRenameContentInCtxAction(parentMenuTitleCtx, i18n.t("Rename"), containersNoRoot);
- final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = createContentRenameAction(parentMenuTitle,
- i18n.t("Rename"));
-
- final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = createRenameContentInCtxAction(
- parentMenuTitleCtx, i18n.t("Rename"));
-
- final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCnt = createSetAsDefContent(parentMenuTitle);
-
// final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt =
// createSetAsDefContent(parentMenuTitleCtx);
- final ActionToolbarMenuDescriptor<StateToken> refreshCnt = createRefreshCntAction(parentMenuTitle);
+ createRefreshCntAction(parentMenuTitle, contents);
+ createRefreshCxtAction(parentMenuTitleCtx, containers);
- final ActionToolbarMenuDescriptor<StateToken> refreshCtx = createRefreshCxtAction(parentMenuTitleCtx);
+ createSetAsDefContent(parentMenuTitle, contents);
- final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile = createUploadAction(i18n.t("Upload file"),
- "images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null);
+ createUploadAction(i18n.t("Upload file"), "images/nav/upload.png",
+ i18n.t("Upload some files (images, PDFs, ...)"), null, containers);
- final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_WIKI, TYPE_WIKIPAGE,
- TYPE_UPLOADEDFILE };
- final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY, TYPE_WIKI };
- final String[] containers = { TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY, TYPE_WIKI };
- final String[] contents = { TYPE_DOCUMENT, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
- final String[] contentsModerated = { TYPE_DOCUMENT, TYPE_UPLOADEDFILE };
-
- createContentModeratedActions(parentMenuTitle, contentsModerated);
createDownloadActions(TYPE_UPLOADEDFILE);
- contextActionRegistry.addAction(go, all);
- contentActionRegistry.addAction(renameCtn, contents);
- contextActionRegistry.addAction(renameCtx, containersNoRoot);
- contextActionRegistry.addAction(refreshCtx, containers);
- contentActionRegistry.addAction(refreshCnt, contents);
- contextActionRegistry.addAction(uploadFile, TYPE_ROOT, TYPE_FOLDER);
- contentActionRegistry.addAction(delContent, contents);
- contextActionRegistry.addAction(delContainer, containersNoRoot);
- contentActionRegistry.addAction(setAsDefGroupCnt, TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
- // contentActionRegistry.addAction(setAsDefGroupCxt,);
- contextActionRegistry.addAction(goGroupHome, containers);
- contentActionRegistry.addAction(editContent, TYPE_DOCUMENT, TYPE_WIKIPAGE);
- contentActionRegistry.addAction(translateContent, TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE,
- TYPE_WIKI, TYPE_WIKIPAGE);
+ createGoAction(all);
+ createGoHomeAction(containers);
+ createEditAction(TYPE_DOCUMENT, TYPE_WIKIPAGE);
+ createTranslateAction(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE, TYPE_WIKI, TYPE_WIKIPAGE);
+
+ createDelContainerAction("Delete folder", parentMenuTitleCtx, containersNoRoot);
+ createDelContentAction(parentMenuTitle, i18n.t("Delete"), contents);
}
@Override
protected void createPostSessionInitActions() {
- contextActionRegistry.addAction(uploadMedia, TYPE_GALLERY);
+ super.createUploadMediaAction(TYPE_GALLERY);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-25 00:51:20 UTC (rev 967)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-25 13:33:20 UTC (rev 968)
@@ -66,11 +66,6 @@
protected final FoldableContent foldableContent;
protected final DeferredCommandWrapper deferredCommandWrapper;
protected final EntityLogo entityLogo;
- protected ActionMenuItemDescriptor<StateToken> go;
- protected ActionToolbarButtonDescriptor<StateToken> goGroupHome;
- protected ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia;
- protected ActionToolbarButtonDescriptor<StateToken> translateContent;
- protected ActionToolbarButtonDescriptor<StateToken> editContent;
public AbstractFoldableContentActions(Session session, StateManager stateManager, I18nUITranslationService i18n,
KuneErrorHandler errorHandler, DeferredCommandWrapper deferredCommandWrapper,
@@ -96,11 +91,9 @@
this.contextPropEditorProvider = contextPropEditorProvider;
this.foldableContent = foldableContent;
this.entityLogo = entityLogo;
- createCommonActions();
createActions();
session.onInitDataReceived(new Listener<InitDataDTO>() {
public void onEvent(InitDataDTO parameter) {
- createCommonPostSessionInitActions();
createPostSessionInitActions();
}
});
@@ -130,8 +123,7 @@
contentActionRegistry.addAction(setInTheDustBinStatus, contentsModerated);
}
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createContentRenameAction(String parentMenuTitle,
- String textDescription) {
+ protected void createContentRenameAction(String parentMenuTitle, String textDescription, String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken stateToken) {
@@ -140,11 +132,10 @@
});
renameCtn.setTextDescription(textDescription);
renameCtn.setParentMenuTitle(parentMenuTitle);
- return renameCtn;
+ contentActionRegistry.addAction(renameCtn, registerInTypes);
}
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createDelContainerAction(String text,
- String parentMenuTitle) {
+ protected void createDelContainerAction(String text, String parentMenuTitle, String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken token) {
@@ -156,11 +147,10 @@
delContainer.setMustBeConfirmed(true);
delContainer.setConfirmationTitle(i18n.t("Please confirm"));
delContainer.setConfirmationText(i18n.t("You will delete it and also all its contents. Are you sure?"));
- return delContainer;
+ contextActionRegistry.addAction(delContainer, registerInTypes);
}
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createDelContentAction(String parentMenuTitle,
- String textDescription) {
+ protected void createDelContentAction(String parentMenuTitle, String textDescription, String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken token) {
@@ -184,7 +174,7 @@
return !itemToken.equals(defContentToken);
}
});
- return delContent;
+ contentActionRegistry.addAction(delContent, registerInTypes);
}
protected void createDownloadActions(String typeUploadedfile) {
@@ -213,6 +203,106 @@
contextActionRegistry.addAction(downloadCtx, TYPE_UPLOADEDFILE);
}
+ protected ActionToolbarButtonDescriptor<StateToken> createEditAction(String... registerInTypes) {
+ ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>(
+ AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ session.check(new AsyncCallbackSimple<Object>() {
+ public void onSuccess(final Object result) {
+ final TextEditor editor = textEditorProvider.get();
+ foldableContent.detach();
+ contextNavigator.detach();
+ contextPropEditorProvider.get().attach();
+ editor.editContent(session.getContentState().getContent(), new Listener<String>() {
+ public void onEvent(final String html) {
+ Site.showProgressSaving();
+ contentServiceProvider.get().save(session.getUserHash(), stateToken, html,
+ new AsyncCallback<Object>() {
+ public void onFailure(final Throwable caught) {
+ Site.hideProgress();
+ try {
+ throw caught;
+ } catch (final SessionExpiredException e) {
+ errorHandler.doSessionExpired();
+ } catch (final Throwable e) {
+ Site.error(i18n.t("Error saving document. Retrying..."));
+ errorHandler.process(caught);
+ editor.onSaveFailed();
+ }
+ }
+
+ public void onSuccess(Object param) {
+ Site.hideProgress();
+ session.getContentState().setContent(html);
+ editor.onSaved();
+ }
+ });
+ }
+ }, new Listener0() {
+ public void onEvent() {
+ // onClose
+ deferredCommandWrapper.addCommand(new Listener0() {
+ public void onEvent() {
+ foldableContent.attach();
+ contextPropEditorProvider.get().detach();
+ contextNavigator.attach();
+ if (session.getCurrentStateToken().equals(stateToken)) {
+ foldableContent.refreshState();
+ }
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+ });
+ editContent.setTextDescription(i18n.tWithNT("Edit", "used in button"));
+ editContent.setIconUrl("images/content_edit.png");
+ editContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
+ contentActionRegistry.addAction(editContent, registerInTypes);
+ return editContent;
+ }
+
+ protected ActionMenuItemDescriptor<StateToken> createGoAction(String... registerInTypes) {
+ ActionMenuItemDescriptor<StateToken> go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer,
+ new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ stateManager.gotoToken(token);
+ }
+ });
+ go.setMustBeAuthenticated(false);
+ go.setTextDescription(i18n.t("Open"));
+ go.setIconUrl("images/nav/go.png");
+ go.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ public boolean mustBeEnabled(final StateToken itemToken) {
+ return !contextNavigator.isSelected(itemToken);
+ }
+ });
+ contextActionRegistry.addAction(go, registerInTypes);
+ return go;
+ }
+
+ protected ActionToolbarButtonDescriptor<StateToken> createGoHomeAction(String... registerInTypes) {
+ ActionToolbarButtonDescriptor<StateToken> goGroupHome = new ActionToolbarButtonDescriptor<StateToken>(
+ AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ stateManager.gotoToken(token.getGroup());
+ }
+ });
+ goGroupHome.setMustBeAuthenticated(false);
+ goGroupHome.setIconUrl("images/group-home.png");
+ goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ public boolean mustBeEnabled(final StateToken itemToken) {
+ final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
+ return !itemToken.equals(defContentToken);
+ }
+ });
+ goGroupHome.setLeftSeparator(ActionToolbarButtonSeparator.fill);
+ contextActionRegistry.addAction(goGroupHome, registerInTypes);
+ return goGroupHome;
+ }
+
protected void createNewContainerAction(final String contentTypeId, final String iconUrl,
final String textDescription, final String parentMenuTitle, final String parentMenuSubtitle,
final String defaultName, Position position, String... registerInTypes) {
@@ -263,7 +353,8 @@
protected void createPostSessionInitActions() {
}
- protected ActionToolbarMenuDescriptor<StateToken> createRefreshCntAction(String parentMenuTitle) {
+ protected ActionToolbarMenuDescriptor<StateToken> createRefreshCntAction(String parentMenuTitle,
+ String... registerInTypes) {
final ActionToolbarMenuDescriptor<StateToken> refreshCnt = new ActionToolbarMenuDescriptor<StateToken>(
AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken stateToken) {
@@ -275,10 +366,12 @@
refreshCnt.setParentMenuTitle(parentMenuTitle);
refreshCnt.setTextDescription(i18n.t("Refresh"));
refreshCnt.setIconUrl("images/nav/refresh.png");
+ contentActionRegistry.addAction(refreshCnt, registerInTypes);
return refreshCnt;
}
- protected ActionToolbarMenuDescriptor<StateToken> createRefreshCxtAction(String parentMenuTitleCtx) {
+ protected ActionToolbarMenuDescriptor<StateToken> createRefreshCxtAction(String parentMenuTitleCtx,
+ String... registerInTypes) {
final ActionToolbarMenuDescriptor<StateToken> refreshCtx = new ActionToolbarMenuDescriptor<StateToken>(
AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken stateToken) {
@@ -290,11 +383,12 @@
refreshCtx.setParentMenuTitle(parentMenuTitleCtx);
refreshCtx.setTextDescription(i18n.t("Refresh"));
refreshCtx.setIconUrl("images/nav/refresh.png");
+ contextActionRegistry.addAction(refreshCtx, registerInTypes);
return refreshCtx;
}
protected ActionToolbarMenuAndItemDescriptor<StateToken> createRenameContentInCtxAction(String parentMenuTitleCtx,
- String textDescription) {
+ String textDescription, String... registerInTypes) {
final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = new ActionToolbarMenuAndItemDescriptor<StateToken>(
AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken stateToken) {
@@ -303,10 +397,12 @@
});
renameCtx.setTextDescription(textDescription);
renameCtx.setParentMenuTitle(parentMenuTitleCtx);
+ contextActionRegistry.addAction(renameCtx, registerInTypes);
return renameCtx;
}
- protected ActionToolbarMenuDescriptor<StateToken> createSetAsDefContent(String parentMenuTitle) {
+ protected ActionToolbarMenuDescriptor<StateToken> createSetAsDefContent(String parentMenuTitle,
+ String... registerInTypes) {
final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupContent;
setAsDefGroupContent = new ActionToolbarMenuDescriptor<StateToken>(AccessRolDTO.Administrator,
ActionToolbarPosition.topbar, new Listener<StateToken>() {
@@ -331,6 +427,7 @@
}
});
setAsDefGroupContent.setParentMenuTitle(parentMenuTitle);
+ contentActionRegistry.addAction(setAsDefGroupContent, registerInTypes);
return setAsDefGroupContent;
}
@@ -359,8 +456,23 @@
return action;
}
+ protected ActionToolbarButtonDescriptor<StateToken> createTranslateAction(String... registerInTypes) {
+ ActionToolbarButtonDescriptor<StateToken> translateContent = new ActionToolbarButtonDescriptor<StateToken>(
+ AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ Site.important(i18n.t("Sorry, this functionality is currently in development"));
+ }
+ });
+ translateContent.setTextDescription(i18n.tWithNT("Translate", "used in button"));
+ translateContent.setToolTip(i18n.t("Translate this document to other languages"));
+ translateContent.setIconUrl("images/language.gif");
+ translateContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
+ contentActionRegistry.addAction(translateContent, registerInTypes);
+ return translateContent;
+ }
+
protected ActionToolbarButtonAndItemDescriptor<StateToken> createUploadAction(final String textDescription,
- final String iconUrl, final String toolTip, final String permitedExtensions) {
+ final String iconUrl, final String toolTip, final String permitedExtensions, String... registerInTypes) {
final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile;
uploadFile = new ActionToolbarButtonAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
ActionToolbarPosition.bottombar, new Listener<StateToken>() {
@@ -378,119 +490,22 @@
uploadFile.setTextDescription(textDescription);
uploadFile.setIconUrl(iconUrl);
uploadFile.setToolTip(toolTip);
+ contextActionRegistry.addAction(uploadFile, registerInTypes);
return uploadFile;
}
+ protected ActionToolbarButtonAndItemDescriptor<StateToken> createUploadMediaAction(String... registerInTypes) {
+ ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia = createUploadAction(i18n.t("Upload media"),
+ "images/nav/upload.png", i18n.t("Upload some media (images, videos)"),
+ session.getGalleryPermittedExtensions());
+ contextActionRegistry.addAction(uploadMedia, registerInTypes);
+ return uploadMedia;
+ }
+
protected void downloadContent(final StateToken token) {
fileDownloadProvider.get().downloadFile(token);
}
- private void createCommonActions() {
- go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- stateManager.gotoToken(token);
- }
- });
- go.setMustBeAuthenticated(false);
- go.setTextDescription(i18n.t("Open"));
- go.setIconUrl("images/nav/go.png");
- go.setEnableCondition(new ActionEnableCondition<StateToken>() {
- public boolean mustBeEnabled(final StateToken itemToken) {
- return !contextNavigator.isSelected(itemToken);
- }
- });
-
- goGroupHome = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Viewer, ActionToolbarPosition.topbar,
- new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- stateManager.gotoToken(token.getGroup());
- }
- });
- goGroupHome.setMustBeAuthenticated(false);
- goGroupHome.setIconUrl("images/group-home.png");
- goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() {
- public boolean mustBeEnabled(final StateToken itemToken) {
- final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
- return !itemToken.equals(defContentToken);
- }
- });
- goGroupHome.setLeftSeparator(ActionToolbarButtonSeparator.fill);
-
- translateContent = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Editor,
- ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- Site.important(i18n.t("Sorry, this functionality is currently in development"));
- }
- });
- translateContent.setTextDescription(i18n.tWithNT("Translate", "used in button"));
- translateContent.setToolTip(i18n.t("Translate this document to other languages"));
- translateContent.setIconUrl("images/language.gif");
- translateContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
-
- editContent = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Editor, ActionToolbarPosition.topbar,
- new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- session.check(new AsyncCallbackSimple<Object>() {
- public void onSuccess(final Object result) {
- final TextEditor editor = textEditorProvider.get();
- foldableContent.detach();
- contextNavigator.detach();
- contextPropEditorProvider.get().attach();
- editor.editContent(session.getContentState().getContent(), new Listener<String>() {
- public void onEvent(final String html) {
- Site.showProgressSaving();
- contentServiceProvider.get().save(session.getUserHash(), stateToken, html,
- new AsyncCallback<Object>() {
- public void onFailure(final Throwable caught) {
- Site.hideProgress();
- try {
- throw caught;
- } catch (final SessionExpiredException e) {
- errorHandler.doSessionExpired();
- } catch (final Throwable e) {
- Site.error(i18n.t("Error saving document. Retrying..."));
- errorHandler.process(caught);
- editor.onSaveFailed();
- }
- }
-
- public void onSuccess(Object param) {
- Site.hideProgress();
- session.getContentState().setContent(html);
- editor.onSaved();
- }
- });
- }
- }, new Listener0() {
- public void onEvent() {
- // onClose
- deferredCommandWrapper.addCommand(new Listener0() {
- public void onEvent() {
- foldableContent.attach();
- contextPropEditorProvider.get().detach();
- contextNavigator.attach();
- if (session.getCurrentStateToken().equals(stateToken)) {
- foldableContent.refreshState();
- }
- }
- });
- }
- });
- }
- });
- }
- });
- editContent.setTextDescription(i18n.tWithNT("Edit", "used in button"));
- editContent.setIconUrl("images/content_edit.png");
- editContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
-
- }
-
- private void createCommonPostSessionInitActions() {
- uploadMedia = createUploadAction(i18n.t("Upload media"), "images/nav/upload.png",
- i18n.t("Upload some media (images, videos)"), session.getGalleryPermittedExtensions());
- }
-
/**
* For future use contentActionRegistry.addAction(setGroupLogo,
* TYPE_UPLOADEDFILE);
@@ -529,11 +544,12 @@
String... registerInTypes) {
switch (position) {
case ctx:
- contentActionRegistry.addAction(action, registerInTypes);
+ contextActionRegistry.addAction(action, registerInTypes);
break;
case cnt:
- contextActionRegistry.addAction(action, registerInTypes);
+ contentActionRegistry.addAction(action, registerInTypes);
break;
}
}
+
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java 2008-11-25 00:51:20 UTC (rev 967)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java 2008-11-25 13:33:20 UTC (rev 968)
@@ -30,6 +30,9 @@
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.MouseListenerAdapter;
import com.google.gwt.user.client.ui.Widget;
+import com.gwtext.client.core.Ext;
+import com.gwtext.client.core.Function;
+import com.gwtext.client.core.FxConfig;
public class EntityLicensePanel implements EntityLicenseView {
private final Label copyright;
@@ -48,11 +51,10 @@
licenseLabel = new Label();
licenseBar = new SimpleToolbar();
+ licenseBar.addSpacer();
+ licenseBar.add(licenseImage);
licenseBar.add(copyright);
licenseBar.add(licenseLabel);
- licenseBar.addSpacer();
- licenseBar.addSpacer();
- licenseBar.add(licenseImage);
final ClickListener clickListener = new ClickListener() {
public void onClick(Widget arg0) {
@@ -68,15 +70,18 @@
MouseListenerAdapter mouseListenerAdapter = new MouseListenerAdapter() {
@Override
public void onMouseEnter(Widget sender) {
- copyright.setVisible(true);
- licenseLabel.setVisible(true);
+ fade(true);
}
@Override
public void onMouseLeave(Widget sender) {
+ fade(false);
}
};
+
licenseImage.addMouseListener(mouseListenerAdapter);
+ copyright.addMouseListener(mouseListenerAdapter);
+ licenseLabel.addMouseListener(mouseListenerAdapter);
copyright.addStyleName("kune-Margin-Large-l");
licenseLabel.setStyleName("k-entitylicensepanel-licensetext");
@@ -102,8 +107,31 @@
public void showLicense(final String groupName, final LicenseDTO licenseDTO) {
copyright.setText(i18n.t("© [%s], under license: ", groupName));
licenseLabel.setText(licenseDTO.getLongName());
- copyright.setVisible(false);
- licenseLabel.setVisible(false);
licenseImage.setUrl(licenseDTO.getImageUrl());
+ fade(false);
}
+
+ private void fade(final boolean in) {
+ if (copyright.isVisible() != in) {
+ FxConfig fxConfig = new FxConfig(2);
+ FxConfig fxConfigVisible = new FxConfig(2);
+ fxConfigVisible.setAfterStyle(new Function() {
+ public void execute() {
+ setVisible(in);
+ }
+ });
+ if (in) {
+ Ext.get(copyright.getElement()).fadeIn(fxConfig);
+ Ext.get(licenseLabel.getElement()).fadeIn(fxConfigVisible);
+ } else {
+ Ext.get(copyright.getElement()).fadeOut(fxConfig);
+ Ext.get(licenseLabel.getElement()).fadeOut(fxConfigVisible);
+ }
+ }
+ }
+
+ private void setVisible(boolean visible) {
+ copyright.setVisible(visible);
+ licenseLabel.setVisible(visible);
+ }
}
1
0
r967 - in trunk/src/main/java/org/ourproject/kune: app/public/css blogs/client docs/client workspace/client workspace/client/licensefoot
by vjrj 25 Nov '08
by vjrj 25 Nov '08
25 Nov '08
Author: vjrj
Date: 2008-11-25 01:51:20 +0100 (Tue, 25 Nov 2008)
New Revision: 967
Modified:
trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java
Log:
Complete - task License onOver show details
Incomplete - task UI tools & workspace refactorization
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-24 20:24:03 UTC (rev 966)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-25 00:51:20 UTC (rev 967)
@@ -41,4 +41,4 @@
padding: 1px 0px 1px 1px;
text-decoration:none;
}
-*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}.k-text-gray{color:gray;}
\ No newline at end of file
+*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}.k-text-gray{color:gray;}.k-elp-limg{margin-top:4px;}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-24 20:24:03 UTC (rev 966)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-25 00:51:20 UTC (rev 967)
@@ -797,4 +797,8 @@
.k-text-gray {
color: gray;
-}
\ No newline at end of file
+}
+
+.k-elp-limg {
+ margin-top: 4px;
+}
Modified: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2008-11-24 20:24:03 UTC (rev 966)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2008-11-25 00:51:20 UTC (rev 967)
@@ -29,8 +29,6 @@
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
-import org.ourproject.kune.platf.client.dto.AccessRolDTO;
-import org.ourproject.kune.platf.client.dto.ContentStatusDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
@@ -70,10 +68,10 @@
String parentMenuTitle = i18n.t("Post");
String parentMenuTitleCtx = i18n.t("Blog");
- final ActionToolbarMenuAndItemDescriptor<StateToken> addBlog = createContainerAction(TYPE_BLOG,
- "images/nav/blog_add.png", i18n.t("New blog"), parentMenuTitleCtx, i18n.t("New"), i18n.t("New blog"));
- final ActionToolbarMenuAndItemDescriptor<StateToken> addPost = createContentAction("images/nav/post_add.png",
- i18n.t("New post"), parentMenuTitleCtx, TYPE_POST);
+ createNewContainerAction(TYPE_BLOG, "images/nav/blog_add.png", i18n.t("New blog"), parentMenuTitleCtx,
+ i18n.t("New"), i18n.t("New blog"), Position.ctx, TYPE_ROOT);
+ createNewContentAction(TYPE_POST, "images/nav/post_add.png", i18n.t("New post"), parentMenuTitleCtx,
+ Position.ctx, TYPE_BLOG);
final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = createDelContainerAction("Delete blog",
parentMenuTitleCtx);
@@ -95,51 +93,30 @@
final ActionToolbarMenuDescriptor<StateToken> refreshCnt = createRefreshCntAction(parentMenuTitle);
final ActionToolbarMenuDescriptor<StateToken> refreshCtx = createRefreshCxtAction(parentMenuTitleCtx);
-
final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile = createUploadAction(i18n.t("Upload file"),
"images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null);
- final ActionToolbarMenuDescriptor<StateToken> setPublishStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Published online"), parentMenuTitle,
- ContentStatusDTO.publishedOnline);
- final ActionToolbarMenuDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Editing in progress"), parentMenuTitle,
- ContentStatusDTO.editingInProgress);
- final ActionToolbarMenuDescriptor<StateToken> setRejectStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Rejected"), parentMenuTitle, ContentStatusDTO.rejected);
- final ActionToolbarMenuDescriptor<StateToken> setSubmittedForPublishStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Submitted for publish"), parentMenuTitle,
- ContentStatusDTO.publishedOnline);
- final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("In the dustbin"), parentMenuTitle, ContentStatusDTO.inTheDustbin);
-
final String[] all = { TYPE_ROOT, TYPE_BLOG, TYPE_POST, TYPE_UPLOADEDFILE };
+ final String[] contentsModerated = { TYPE_POST, TYPE_UPLOADEDFILE };
final String[] containersNoRoot = { TYPE_BLOG };
final String[] containers = { TYPE_ROOT, TYPE_BLOG };
final String[] contents = { TYPE_POST, TYPE_UPLOADEDFILE };
- final String[] contentsModerated = { TYPE_POST, TYPE_UPLOADEDFILE };
- contentActionRegistry.addAction(setPublishStatus, contentsModerated);
- contentActionRegistry.addAction(setEditionInProgressStatus, contentsModerated);
- contentActionRegistry.addAction(setRejectStatus, contentsModerated);
- contentActionRegistry.addAction(setSubmittedForPublishStatus, contentsModerated);
- contentActionRegistry.addAction(setInTheDustBinStatus, contentsModerated);
- contextActionRegistry.addAction(addBlog, TYPE_ROOT);
- contextActionRegistry.addAction(addPost, TYPE_BLOG);
+ createContentModeratedActions(parentMenuTitle, contentsModerated);
+
contextActionRegistry.addAction(go, all);
contentActionRegistry.addAction(renameCtn, contents);
contextActionRegistry.addAction(renameCtx, containersNoRoot);
contextActionRegistry.addAction(refreshCtx, containers);
contentActionRegistry.addAction(refreshCnt, contents);
contextActionRegistry.addAction(uploadFile, TYPE_BLOG);
- contentActionRegistry.addAction(download, TYPE_UPLOADEDFILE);
contentActionRegistry.addAction(delContent, contents);
contextActionRegistry.addAction(delContainer, containersNoRoot);
contentActionRegistry.addAction(setAsDefGroupCnt, TYPE_POST, TYPE_UPLOADEDFILE);
// ContentRPC Authorized must permit folders
// contentActionRegistry.addAction(setAsDefGroupCxt, TYPE_BLOG);
+
contextActionRegistry.addAction(goGroupHome, containers);
- contextActionRegistry.addAction(downloadCtx, TYPE_UPLOADEDFILE);
contentActionRegistry.addAction(editContent, TYPE_POST);
// contentActionRegistry.addAction(translateContent, );
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-24 20:24:03 UTC (rev 966)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-25 00:51:20 UTC (rev 967)
@@ -32,8 +32,6 @@
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
-import org.ourproject.kune.platf.client.dto.AccessRolDTO;
-import org.ourproject.kune.platf.client.dto.ContentStatusDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
@@ -73,19 +71,17 @@
String parentMenuTitle = i18n.t("File");
String parentMenuTitleCtx = i18n.t("Folder");
- final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder = createContainerAction(TYPE_FOLDER,
- "images/nav/folder_add.png", i18n.t("New folder"), parentMenuTitleCtx, i18n.t("New"),
- i18n.t("New folder"));
- final ActionToolbarMenuAndItemDescriptor<StateToken> addGallery = createContainerAction(TYPE_GALLERY,
- "images/nav/gallery_add.png", i18n.t("New gallery"), parentMenuTitleCtx, i18n.t("New"),
- i18n.t("New gallery"));
- final ActionToolbarMenuAndItemDescriptor<StateToken> addWiki = createContainerAction(TYPE_WIKI,
- "images/nav/wiki_add.png", i18n.t("New wiki"), parentMenuTitleCtx, i18n.t("New"), i18n.t("wiki"));
+ createNewContainerAction(TYPE_FOLDER, "images/nav/folder_add.png", i18n.t("New folder"), parentMenuTitleCtx,
+ i18n.t("New"), i18n.t("New folder"), Position.ctx, TYPE_FOLDER);
+ createNewContainerAction(TYPE_GALLERY, "images/nav/gallery_add.png", i18n.t("New gallery"), parentMenuTitleCtx,
+ i18n.t("New"), i18n.t("New gallery"), Position.ctx, TYPE_ROOT);
+ createNewContainerAction(TYPE_WIKI, "images/nav/wiki_add.png", i18n.t("New wiki"), parentMenuTitleCtx,
+ i18n.t("New"), i18n.t("wiki"), Position.ctx, TYPE_ROOT);
- final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = createContentAction("images/nav/page_add.png",
- i18n.t("New document"), parentMenuTitleCtx, TYPE_DOCUMENT);
- final ActionToolbarMenuAndItemDescriptor<StateToken> addWikiPage = createContentAction(
- "images/nav/wikipage_add.png", parentMenuTitleCtx, i18n.t("New wikipage"), TYPE_WIKIPAGE);
+ createNewContentAction(TYPE_DOCUMENT, "images/nav/page_add.png", i18n.t("New document"), parentMenuTitleCtx,
+ Position.ctx, TYPE_ROOT, TYPE_FOLDER);
+ createNewContentAction(TYPE_WIKIPAGE, "images/nav/wikipage_add.png", parentMenuTitleCtx,
+ i18n.t("New wikipage"), Position.ctx, TYPE_WIKI);
final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = createDelContainerAction("Delete folder",
parentMenuTitleCtx);
@@ -111,20 +107,6 @@
final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile = createUploadAction(i18n.t("Upload file"),
"images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null);
- final ActionToolbarMenuDescriptor<StateToken> setPublishStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Published online"), parentMenuTitle,
- ContentStatusDTO.publishedOnline);
- final ActionToolbarMenuDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Editing in progress"), parentMenuTitle,
- ContentStatusDTO.editingInProgress);
- final ActionToolbarMenuDescriptor<StateToken> setRejectStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Rejected"), parentMenuTitle, ContentStatusDTO.rejected);
- final ActionToolbarMenuDescriptor<StateToken> setSubmittedForPublishStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Submitted for publish"), parentMenuTitle,
- ContentStatusDTO.publishedOnline);
- final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("In the dustbin"), parentMenuTitle, ContentStatusDTO.inTheDustbin);
-
final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_WIKI, TYPE_WIKIPAGE,
TYPE_UPLOADEDFILE };
final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY, TYPE_WIKI };
@@ -132,29 +114,20 @@
final String[] contents = { TYPE_DOCUMENT, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
final String[] contentsModerated = { TYPE_DOCUMENT, TYPE_UPLOADEDFILE };
- contentActionRegistry.addAction(setPublishStatus, contentsModerated);
- contentActionRegistry.addAction(setEditionInProgressStatus, contentsModerated);
- contentActionRegistry.addAction(setRejectStatus, contentsModerated);
- contentActionRegistry.addAction(setSubmittedForPublishStatus, contentsModerated);
- contentActionRegistry.addAction(setInTheDustBinStatus, contentsModerated);
- contextActionRegistry.addAction(addDoc, TYPE_ROOT, TYPE_FOLDER);
- contextActionRegistry.addAction(addWikiPage, TYPE_WIKI);
- contextActionRegistry.addAction(addFolder, TYPE_ROOT, TYPE_FOLDER);
- contextActionRegistry.addAction(addWiki, TYPE_ROOT);
- contextActionRegistry.addAction(addGallery, TYPE_ROOT);
+ createContentModeratedActions(parentMenuTitle, contentsModerated);
+ createDownloadActions(TYPE_UPLOADEDFILE);
+
contextActionRegistry.addAction(go, all);
contentActionRegistry.addAction(renameCtn, contents);
contextActionRegistry.addAction(renameCtx, containersNoRoot);
contextActionRegistry.addAction(refreshCtx, containers);
contentActionRegistry.addAction(refreshCnt, contents);
contextActionRegistry.addAction(uploadFile, TYPE_ROOT, TYPE_FOLDER);
- contentActionRegistry.addAction(download, TYPE_UPLOADEDFILE);
contentActionRegistry.addAction(delContent, contents);
contextActionRegistry.addAction(delContainer, containersNoRoot);
contentActionRegistry.addAction(setAsDefGroupCnt, TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
// contentActionRegistry.addAction(setAsDefGroupCxt,);
contextActionRegistry.addAction(goGroupHome, containers);
- contextActionRegistry.addAction(downloadCtx, TYPE_UPLOADEDFILE);
contentActionRegistry.addAction(editContent, TYPE_DOCUMENT, TYPE_WIKIPAGE);
contentActionRegistry.addAction(translateContent, TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE,
TYPE_WIKI, TYPE_WIKIPAGE);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-24 20:24:03 UTC (rev 966)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-25 00:51:20 UTC (rev 967)
@@ -1,5 +1,7 @@
package org.ourproject.kune.workspace.client;
+import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_UPLOADEDFILE;
+
import org.ourproject.kune.platf.client.actions.ActionEnableCondition;
import org.ourproject.kune.platf.client.actions.ActionMenuItemDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
@@ -44,6 +46,10 @@
public abstract class AbstractFoldableContentActions {
+ protected enum Position {
+ cnt, ctx
+ }
+
protected final Session session;
protected final StateManager stateManager;
protected final I18nUITranslationService i18n;
@@ -63,8 +69,6 @@
protected ActionMenuItemDescriptor<StateToken> go;
protected ActionToolbarButtonDescriptor<StateToken> goGroupHome;
protected ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia;
- protected ActionToolbarButtonDescriptor<StateToken> download;
- protected ActionMenuItemDescriptor<StateToken> downloadCtx;
protected ActionToolbarButtonDescriptor<StateToken> translateContent;
protected ActionToolbarButtonDescriptor<StateToken> editContent;
@@ -105,53 +109,27 @@
protected void createActions() {
}
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createContainerAction(final String contentTypeId,
- final String iconUrl, final String textDescription, final String parentMenuTitle,
- final String parentMenuSubtitle, final String defaultName) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder;
- addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
- ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- Site.showProgressProcessing();
- contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName,
- contentTypeId, new AsyncCallbackSimple<StateContainerDTO>() {
- public void onSuccess(final StateContainerDTO state) {
- contextNavigator.setEditOnNextStateChange(true);
- stateManager.setRetrievedState(state);
- }
- });
- }
- });
- addFolder.setTextDescription(textDescription);
- addFolder.setParentMenuTitle(parentMenuTitle);
- addFolder.setParentSubMenuTitle(parentMenuSubtitle);
- addFolder.setIconUrl(iconUrl);
- return addFolder;
+ protected void createContentModeratedActions(String parentMenuTitle, final String... contentsModerated) {
+ final ActionToolbarMenuDescriptor<StateToken> setPublishStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("Published online"), parentMenuTitle,
+ ContentStatusDTO.publishedOnline);
+ final ActionToolbarMenuDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("Editing in progress"), parentMenuTitle,
+ ContentStatusDTO.editingInProgress);
+ final ActionToolbarMenuDescriptor<StateToken> setRejectStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("Rejected"), parentMenuTitle, ContentStatusDTO.rejected);
+ final ActionToolbarMenuDescriptor<StateToken> setSubmittedForPublishStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("Submitted for publish"), parentMenuTitle,
+ ContentStatusDTO.publishedOnline);
+ final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("In the dustbin"), parentMenuTitle, ContentStatusDTO.inTheDustbin);
+ contentActionRegistry.addAction(setPublishStatus, contentsModerated);
+ contentActionRegistry.addAction(setEditionInProgressStatus, contentsModerated);
+ contentActionRegistry.addAction(setRejectStatus, contentsModerated);
+ contentActionRegistry.addAction(setSubmittedForPublishStatus, contentsModerated);
+ contentActionRegistry.addAction(setInTheDustBinStatus, contentsModerated);
}
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createContentAction(String iconUrl,
- final String description, final String parentMenuTitle, final String typeId) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- Site.showProgressProcessing();
- contentServiceProvider.get().addContent(session.getUserHash(),
- session.getCurrentState().getStateToken(), description, typeId,
- new AsyncCallbackSimple<StateContentDTO>() {
- public void onSuccess(final StateContentDTO state) {
- contextNavigator.setEditOnNextStateChange(true);
- stateManager.setRetrievedState(state);
- }
- });
- }
- });
- addDoc.setTextDescription(description);
- addDoc.setParentMenuTitle(parentMenuTitle);
- addDoc.setParentSubMenuTitle(i18n.t("New"));
- addDoc.setIconUrl(iconUrl);
- return addDoc;
- }
-
protected ActionToolbarMenuAndItemDescriptor<StateToken> createContentRenameAction(String parentMenuTitle,
String textDescription) {
final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>(
@@ -209,6 +187,79 @@
return delContent;
}
+ protected void createDownloadActions(String typeUploadedfile) {
+ ActionToolbarButtonDescriptor<StateToken> download = new ActionToolbarButtonDescriptor<StateToken>(
+ AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ downloadContent(token);
+ }
+ });
+ download.setMustBeAuthenticated(false);
+ download.setTextDescription(i18n.t("Download"));
+ download.setToolTip(i18n.t("Download this file"));
+ download.setIconUrl("images/nav/download.png");
+
+ ActionMenuItemDescriptor<StateToken> downloadCtx = new ActionMenuItemDescriptor<StateToken>(
+ AccessRolDTO.Viewer, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ downloadContent(token);
+ }
+ });
+ downloadCtx.setMustBeAuthenticated(false);
+ downloadCtx.setTextDescription(i18n.t("Download"));
+ downloadCtx.setIconUrl("images/nav/download.png");
+
+ contentActionRegistry.addAction(download, TYPE_UPLOADEDFILE);
+ contextActionRegistry.addAction(downloadCtx, TYPE_UPLOADEDFILE);
+ }
+
+ protected void createNewContainerAction(final String contentTypeId, final String iconUrl,
+ final String textDescription, final String parentMenuTitle, final String parentMenuSubtitle,
+ final String defaultName, Position position, String... registerInTypes) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder;
+ addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
+ ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ Site.showProgressProcessing();
+ contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName,
+ contentTypeId, new AsyncCallbackSimple<StateContainerDTO>() {
+ public void onSuccess(final StateContainerDTO state) {
+ contextNavigator.setEditOnNextStateChange(true);
+ stateManager.setRetrievedState(state);
+ }
+ });
+ }
+ });
+ addFolder.setTextDescription(textDescription);
+ addFolder.setParentMenuTitle(parentMenuTitle);
+ addFolder.setParentSubMenuTitle(parentMenuSubtitle);
+ addFolder.setIconUrl(iconUrl);
+ register(addFolder, position, registerInTypes);
+ }
+
+ protected void createNewContentAction(final String typeId, String iconUrl, final String description,
+ final String parentMenuTitle, Position position, String... registerInTypes) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ Site.showProgressProcessing();
+ contentServiceProvider.get().addContent(session.getUserHash(),
+ session.getCurrentState().getStateToken(), description, typeId,
+ new AsyncCallbackSimple<StateContentDTO>() {
+ public void onSuccess(final StateContentDTO state) {
+ contextNavigator.setEditOnNextStateChange(true);
+ stateManager.setRetrievedState(state);
+ }
+ });
+ }
+ });
+ addContent.setTextDescription(description);
+ addContent.setParentMenuTitle(parentMenuTitle);
+ addContent.setParentSubMenuTitle(i18n.t("New"));
+ addContent.setIconUrl(iconUrl);
+ register(addContent, position, registerInTypes);
+ }
+
protected void createPostSessionInitActions() {
}
@@ -365,26 +416,6 @@
});
goGroupHome.setLeftSeparator(ActionToolbarButtonSeparator.fill);
- download = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Viewer, ActionToolbarPosition.topbar,
- new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- downloadContent(token);
- }
- });
- download.setMustBeAuthenticated(false);
- download.setTextDescription(i18n.t("Download"));
- download.setToolTip(i18n.t("Download this file"));
- download.setIconUrl("images/nav/download.png");
-
- downloadCtx = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- downloadContent(token);
- }
- });
- downloadCtx.setMustBeAuthenticated(false);
- downloadCtx.setTextDescription(i18n.t("Download"));
- downloadCtx.setIconUrl("images/nav/download.png");
-
translateContent = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Editor,
ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken stateToken) {
@@ -493,4 +524,16 @@
});
return setGroupLogo;
}
+
+ private void register(ActionToolbarMenuAndItemDescriptor<StateToken> action, Position position,
+ String... registerInTypes) {
+ switch (position) {
+ case ctx:
+ contentActionRegistry.addAction(action, registerInTypes);
+ break;
+ case cnt:
+ contextActionRegistry.addAction(action, registerInTypes);
+ break;
+ }
+ }
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java 2008-11-24 20:24:03 UTC (rev 966)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/licensefoot/EntityLicensePanel.java 2008-11-25 00:51:20 UTC (rev 967)
@@ -28,6 +28,7 @@
import com.google.gwt.user.client.ui.ClickListener;
import com.google.gwt.user.client.ui.Image;
import com.google.gwt.user.client.ui.Label;
+import com.google.gwt.user.client.ui.MouseListenerAdapter;
import com.google.gwt.user.client.ui.Widget;
public class EntityLicensePanel implements EntityLicenseView {
@@ -63,10 +64,23 @@
licenseImage.addClickListener(clickListener);
copyright.setVisible(false);
licenseLabel.setVisible(false);
- licenseImage.setVisible(false);
+ MouseListenerAdapter mouseListenerAdapter = new MouseListenerAdapter() {
+ @Override
+ public void onMouseEnter(Widget sender) {
+ copyright.setVisible(true);
+ licenseLabel.setVisible(true);
+ }
+
+ @Override
+ public void onMouseLeave(Widget sender) {
+ }
+ };
+ licenseImage.addMouseListener(mouseListenerAdapter);
+
copyright.addStyleName("kune-Margin-Large-l");
licenseLabel.setStyleName("k-entitylicensepanel-licensetext");
+ licenseImage.setStyleName("k-elp-limg");
}
public void attach() {
@@ -88,9 +102,8 @@
public void showLicense(final String groupName, final LicenseDTO licenseDTO) {
copyright.setText(i18n.t("© [%s], under license: ", groupName));
licenseLabel.setText(licenseDTO.getLongName());
- copyright.setVisible(true);
- licenseLabel.setVisible(true);
- licenseImage.setVisible(true);
+ copyright.setVisible(false);
+ licenseLabel.setVisible(false);
licenseImage.setUrl(licenseDTO.getImageUrl());
}
}
1
0
Author: vjrj
Date: 2008-11-24 21:24:03 +0100 (Mon, 24 Nov 2008)
New Revision: 966
Added:
trunk/src/main/java/org/ourproject/kune/blogs/
trunk/src/main/java/org/ourproject/kune/blogs/Kune-Blogs.gwt.xml
trunk/src/main/java/org/ourproject/kune/blogs/client/
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java
trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientTool.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContent.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPanel.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentView.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewer.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPanel.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerView.java
trunk/src/main/java/org/ourproject/kune/blogs/client/ctx/
trunk/src/main/java/org/ourproject/kune/blogs/client/ctx/BlogContext.java
trunk/src/main/java/org/ourproject/kune/blogs/client/ctx/BlogContextPresenter.java
trunk/src/main/java/org/ourproject/kune/blogs/public/
trunk/src/main/java/org/ourproject/kune/blogs/server/
trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerModule.java
trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerTool.java
Modified:
trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java
trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPanel.java
trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java
trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java
trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/GroupManager.java
trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntitySummary.java
Log:
New blog tool.
Incomplete - task UI tools & workspace refactorization
Modified: trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/app/Kune.gwt.xml 2008-11-24 20:24:03 UTC (rev 966)
@@ -13,6 +13,7 @@
<inherits name='org.ourproject.kune.platf.Kune-Platform' />
<inherits name='org.ourproject.kune.docs.Kune-Docs' />
+ <inherits name='org.ourproject.kune.blogs.Kune-Blogs' />
<inherits name='org.ourproject.kune.chat.Kune-Chat' />
<!-- gwt-ext -->
Modified: trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/app/client/KuneEntryPoint.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -19,6 +19,7 @@
*/
package org.ourproject.kune.app.client;
+import org.ourproject.kune.blogs.client.BlogClientModule;
import org.ourproject.kune.chat.client.ChatClientModule;
import org.ourproject.kune.docs.client.DocumentClientModule;
import org.ourproject.kune.platf.client.services.KuneCoreModule;
@@ -54,7 +55,7 @@
public void onModuleLoadCont() {
Suco.install(new KuneCoreModule(), new KuneRegistryModule(), new KunePlatformModule(),
- new KuneWorkspaceModule(), new EmiteUIModule(), new DocumentClientModule(), new ChatClientModule(),
- new KuneModule());
+ new KuneWorkspaceModule(), new EmiteUIModule(), new DocumentClientModule(), new BlogClientModule(),
+ new ChatClientModule(), new KuneModule());
}
}
Modified: trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/app/server/KuneRackModule.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -19,6 +19,7 @@
*/
package org.ourproject.kune.app.server;
+import org.ourproject.kune.blogs.server.BlogServerModule;
import org.ourproject.kune.chat.server.ChatServerModule;
import org.ourproject.kune.docs.server.DocumentServerModule;
import org.ourproject.kune.platf.client.rpc.ContentService;
@@ -109,6 +110,7 @@
builder.use(new ServletModule());
builder.use(new PlatformServerModule());
builder.use(new DocumentServerModule());
+ builder.use(new BlogServerModule());
builder.use(new ChatServerModule());
builder.use(new RESTServicesModule());
builder.use(configModule);
Added: trunk/src/main/java/org/ourproject/kune/blogs/Kune-Blogs.gwt.xml
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/Kune-Blogs.gwt.xml 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/Kune-Blogs.gwt.xml 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,5 @@
+<!DOCTYPE document SYSTEM "src/main/java/gwt-module.dtd">
+<module>
+ <inherits name='org.ourproject.kune.platf.Kune-Platform' />
+ <inherits name='org.ourproject.kune.workspace.Kune-Workspace' />
+</module>
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientActions.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,151 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */package org.ourproject.kune.blogs.client;
+
+import static org.ourproject.kune.blogs.client.BlogClientTool.TYPE_BLOG;
+import static org.ourproject.kune.blogs.client.BlogClientTool.TYPE_POST;
+import static org.ourproject.kune.blogs.client.BlogClientTool.TYPE_ROOT;
+import static org.ourproject.kune.blogs.client.BlogClientTool.TYPE_UPLOADEDFILE;
+
+import org.ourproject.kune.blogs.client.cnt.BlogViewer;
+import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarMenuAndItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
+import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
+import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
+import org.ourproject.kune.platf.client.dto.AccessRolDTO;
+import org.ourproject.kune.platf.client.dto.ContentStatusDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
+import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
+import org.ourproject.kune.platf.client.services.KuneErrorHandler;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
+import org.ourproject.kune.platf.client.ui.upload.FileUploader;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
+import org.ourproject.kune.workspace.client.AbstractFoldableContentActions;
+import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
+import org.ourproject.kune.workspace.client.editor.TextEditor;
+import org.ourproject.kune.workspace.client.entitylogo.EntityLogo;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+
+import com.calclab.suco.client.ioc.Provider;
+
+public class BlogClientActions extends AbstractFoldableContentActions {
+ public BlogClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
+ final Session session, final StateManager stateManager,
+ final DeferredCommandWrapper deferredCommandWrapper,
+ final Provider<ContentServiceAsync> contentServiceProvider,
+ final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
+ final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
+ final Provider<FileDownloadUtils> fileDownloadProvider, final EntityLogo entityLogo,
+ final Provider<TextEditor> textEditorProvider, final KuneErrorHandler errorHandler,
+ final BlogViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider) {
+ super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
+ contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
+ contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
+ documentViewer, entityLogo);
+ }
+
+ @Override
+ protected void createActions() {
+ String parentMenuTitle = i18n.t("Post");
+ String parentMenuTitleCtx = i18n.t("Blog");
+
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addBlog = createContainerAction(TYPE_BLOG,
+ "images/nav/blog_add.png", i18n.t("New blog"), parentMenuTitleCtx, i18n.t("New"), i18n.t("New blog"));
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addPost = createContentAction("images/nav/post_add.png",
+ i18n.t("New post"), parentMenuTitleCtx, TYPE_POST);
+
+ final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = createDelContainerAction("Delete blog",
+ parentMenuTitleCtx);
+
+ final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = createDelContentAction(parentMenuTitle,
+ i18n.t("Delete"));
+
+ final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = createContentRenameAction(parentMenuTitle,
+ i18n.t("Rename"));
+
+ final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = createRenameContentInCtxAction(
+ parentMenuTitleCtx, i18n.t("Rename"));
+
+ final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCnt = createSetAsDefContent(parentMenuTitle);
+
+ // final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt =
+ // createSetAsDefContent(parentMenuTitleCtx);
+
+ final ActionToolbarMenuDescriptor<StateToken> refreshCnt = createRefreshCntAction(parentMenuTitle);
+
+ final ActionToolbarMenuDescriptor<StateToken> refreshCtx = createRefreshCxtAction(parentMenuTitleCtx);
+
+ final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile = createUploadAction(i18n.t("Upload file"),
+ "images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null);
+
+ final ActionToolbarMenuDescriptor<StateToken> setPublishStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("Published online"), parentMenuTitle,
+ ContentStatusDTO.publishedOnline);
+ final ActionToolbarMenuDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("Editing in progress"), parentMenuTitle,
+ ContentStatusDTO.editingInProgress);
+ final ActionToolbarMenuDescriptor<StateToken> setRejectStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("Rejected"), parentMenuTitle, ContentStatusDTO.rejected);
+ final ActionToolbarMenuDescriptor<StateToken> setSubmittedForPublishStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("Submitted for publish"), parentMenuTitle,
+ ContentStatusDTO.publishedOnline);
+ final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction(
+ AccessRolDTO.Administrator, i18n.t("In the dustbin"), parentMenuTitle, ContentStatusDTO.inTheDustbin);
+
+ final String[] all = { TYPE_ROOT, TYPE_BLOG, TYPE_POST, TYPE_UPLOADEDFILE };
+ final String[] containersNoRoot = { TYPE_BLOG };
+ final String[] containers = { TYPE_ROOT, TYPE_BLOG };
+ final String[] contents = { TYPE_POST, TYPE_UPLOADEDFILE };
+ final String[] contentsModerated = { TYPE_POST, TYPE_UPLOADEDFILE };
+
+ contentActionRegistry.addAction(setPublishStatus, contentsModerated);
+ contentActionRegistry.addAction(setEditionInProgressStatus, contentsModerated);
+ contentActionRegistry.addAction(setRejectStatus, contentsModerated);
+ contentActionRegistry.addAction(setSubmittedForPublishStatus, contentsModerated);
+ contentActionRegistry.addAction(setInTheDustBinStatus, contentsModerated);
+ contextActionRegistry.addAction(addBlog, TYPE_ROOT);
+ contextActionRegistry.addAction(addPost, TYPE_BLOG);
+ contextActionRegistry.addAction(go, all);
+ contentActionRegistry.addAction(renameCtn, contents);
+ contextActionRegistry.addAction(renameCtx, containersNoRoot);
+ contextActionRegistry.addAction(refreshCtx, containers);
+ contentActionRegistry.addAction(refreshCnt, contents);
+ contextActionRegistry.addAction(uploadFile, TYPE_BLOG);
+ contentActionRegistry.addAction(download, TYPE_UPLOADEDFILE);
+ contentActionRegistry.addAction(delContent, contents);
+ contextActionRegistry.addAction(delContainer, containersNoRoot);
+ contentActionRegistry.addAction(setAsDefGroupCnt, TYPE_POST, TYPE_UPLOADEDFILE);
+ // ContentRPC Authorized must permit folders
+ // contentActionRegistry.addAction(setAsDefGroupCxt, TYPE_BLOG);
+ contextActionRegistry.addAction(goGroupHome, containers);
+ contextActionRegistry.addAction(downloadCtx, TYPE_UPLOADEDFILE);
+ contentActionRegistry.addAction(editContent, TYPE_POST);
+ // contentActionRegistry.addAction(translateContent, );
+ }
+
+ @Override
+ protected void createPostSessionInitActions() {
+ // contextActionRegistry.addAction(uploadMedia, TYPE_GALLERY);
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientModule.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,119 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */package org.ourproject.kune.blogs.client;
+
+import org.ourproject.kune.blogs.client.cnt.BlogFolderContent;
+import org.ourproject.kune.blogs.client.cnt.BlogFolderContentPanel;
+import org.ourproject.kune.blogs.client.cnt.BlogFolderContentPresenter;
+import org.ourproject.kune.blogs.client.cnt.BlogFolderContentView;
+import org.ourproject.kune.blogs.client.cnt.BlogViewer;
+import org.ourproject.kune.blogs.client.cnt.BlogViewerPanel;
+import org.ourproject.kune.blogs.client.cnt.BlogViewerPresenter;
+import org.ourproject.kune.blogs.client.cnt.BlogViewerView;
+import org.ourproject.kune.blogs.client.ctx.BlogContext;
+import org.ourproject.kune.blogs.client.ctx.BlogContextPresenter;
+import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
+import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
+import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
+import org.ourproject.kune.platf.client.app.ToolGroup;
+import org.ourproject.kune.platf.client.registry.ContentCapabilitiesRegistry;
+import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
+import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.services.KuneErrorHandler;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.tool.ToolSelector;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
+import org.ourproject.kune.platf.client.ui.upload.FileUploader;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
+import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
+import org.ourproject.kune.workspace.client.editor.TextEditor;
+import org.ourproject.kune.workspace.client.entitylogo.EntityLogo;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
+
+import com.calclab.suco.client.ioc.decorator.Singleton;
+import com.calclab.suco.client.ioc.module.AbstractModule;
+import com.calclab.suco.client.ioc.module.Factory;
+
+public class BlogClientModule extends AbstractModule {
+
+ @Override
+ public void onInstall() {
+
+ register(ToolGroup.class, new Factory<BlogClientTool>(BlogClientTool.class) {
+ @Override
+ public BlogClientTool create() {
+ $(BlogClientActions.class);
+ return new BlogClientTool($(I18nUITranslationService.class), $(ToolSelector.class),
+ $(WsThemePresenter.class), $(WorkspaceSkeleton.class), $(ContentCapabilitiesRegistry.class));
+ }
+ });
+
+ register(ToolGroup.class, new Factory<BlogClientActions>(BlogClientActions.class) {
+ @Override
+ public BlogClientActions create() {
+ return new BlogClientActions($(I18nUITranslationService.class), $(ContextNavigator.class),
+ $(Session.class), $(StateManager.class), $(DeferredCommandWrapper.class),
+ $$(ContentServiceAsync.class), $$(GroupServiceAsync.class), $$(FileUploader.class),
+ $(ContentActionRegistry.class), $(ContextActionRegistry.class), $$(FileDownloadUtils.class),
+ $(EntityLogo.class), $$(TextEditor.class), $(KuneErrorHandler.class), $(BlogViewer.class),
+ $$(ContextPropEditor.class));
+ }
+ });
+
+ register(ToolGroup.class, new Factory<BlogContext>(BlogContext.class) {
+ @Override
+ public BlogContext create() {
+ final BlogContextPresenter presenter = new BlogContextPresenter($(StateManager.class),
+ $$(ContextNavigator.class), $$(ContextPropEditor.class));
+ return presenter;
+ }
+ });
+
+ register(Singleton.class, new Factory<BlogViewer>(BlogViewer.class) {
+ @Override
+ public BlogViewer create() {
+ final BlogViewerPresenter presenter = new BlogViewerPresenter($(StateManager.class), $(Session.class),
+ $(I18nUITranslationService.class), $(ActionContentToolbar.class),
+ $(ContentActionRegistry.class), $$(FileDownloadUtils.class));
+ final BlogViewerView view = new BlogViewerPanel($(WorkspaceSkeleton.class),
+ $(I18nTranslationService.class));
+ presenter.init(view);
+ return presenter;
+ }
+ });
+
+ register(ToolGroup.class, new Factory<BlogFolderContent>(BlogFolderContent.class) {
+ @Override
+ public BlogFolderContent create() {
+ final BlogFolderContentPresenter presenter = new BlogFolderContentPresenter($(StateManager.class),
+ $(Session.class), $(ActionContentToolbar.class), $(ContentActionRegistry.class),
+ $(I18nTranslationService.class));
+ final BlogFolderContentView view = new BlogFolderContentPanel($(WorkspaceSkeleton.class),
+ $(I18nTranslationService.class));
+ presenter.init(view);
+ return presenter;
+ }
+ });
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientTool.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/BlogClientTool.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,62 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client;
+
+import org.ourproject.kune.platf.client.registry.ContentCapabilitiesRegistry;
+import org.ourproject.kune.platf.client.tool.FoldableAbstractClientTool;
+import org.ourproject.kune.platf.client.tool.ToolSelector;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
+
+public class BlogClientTool extends FoldableAbstractClientTool {
+ public static final String TYPE_ROOT = "blogs.root";
+ public static final String TYPE_BLOG = "blogs.blog";
+ public static final String TYPE_POST = "blogs.post";
+ public static final String TYPE_UPLOADEDFILE = "blogs.uploaded";
+ public static final String NAME = "blogs";
+
+ public BlogClientTool(final I18nUITranslationService i18n, final ToolSelector toolSelector,
+ final WsThemePresenter wsThemePresenter, final WorkspaceSkeleton ws,
+ ContentCapabilitiesRegistry contentCapabilitiesRegistry) {
+ super(NAME, i18n.t("blogs"), toolSelector, wsThemePresenter, ws, contentCapabilitiesRegistry);
+
+ // registerAclEditableTypes();
+ registerAuthorableTypes(TYPE_POST, TYPE_UPLOADEDFILE);
+ registerDragableTypes(TYPE_UPLOADEDFILE);
+ registerDropableTypes(TYPE_ROOT);
+ registerPublishModerableTypes(TYPE_POST, TYPE_UPLOADEDFILE);
+ registerRateableTypes(TYPE_POST, TYPE_UPLOADEDFILE);
+ registerRenamableTypes(TYPE_BLOG, TYPE_POST, TYPE_UPLOADEDFILE);
+ registerTageableTypes(TYPE_BLOG, TYPE_UPLOADEDFILE, TYPE_POST);
+ // registerTranslatableTypes();
+
+ registerIcons();
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ protected void registerIcons() {
+ registerContentTypeIcon(TYPE_BLOG, "images/nav/blog.png");
+ registerContentTypeIcon(TYPE_POST, "images/nav/post.png");
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContent.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContent.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContent.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,23 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.cnt;
+
+public interface BlogFolderContent {
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPanel.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPanel.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,31 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.cnt;
+
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.workspace.client.cnt.FoldableContentPanel;
+import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+
+public class BlogFolderContentPanel extends FoldableContentPanel implements BlogFolderContentView {
+
+ public BlogFolderContentPanel(WorkspaceSkeleton ws, I18nTranslationService i18n) {
+ super(ws, i18n);
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentPresenter.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,62 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.cnt;
+
+import org.ourproject.kune.blogs.client.BlogClientTool;
+import org.ourproject.kune.chat.client.ChatClientTool;
+import org.ourproject.kune.platf.client.actions.ActionRegistry;
+import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
+import org.ourproject.kune.platf.client.dto.StateContainerDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
+
+public class BlogFolderContentPresenter extends FoldableContentPresenter implements BlogFolderContent {
+
+ private BlogFolderContentView view;
+ private final I18nTranslationService i18n;
+
+ public BlogFolderContentPresenter(StateManager stateManager, Session session, ActionContentToolbar toolbar,
+ final ActionRegistry<StateToken> actionRegistry, I18nTranslationService i18n) {
+ super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry);
+ this.i18n = i18n;
+ }
+
+ public void init(final BlogFolderContentView view) {
+ super.init(view);
+ this.view = view;
+ }
+
+ @Override
+ protected void setState(StateContainerDTO state) {
+ if (state.getTypeId().equals(ChatClientTool.TYPE_ROOT)) {
+ if (state.getRootContainer().getChilds().size() == 0) {
+ view.setInfo(i18n.t("This group has no blogs."));
+ } else {
+ view.setInfo("");
+ }
+ } else {
+ view.setInfo("");
+ }
+ super.setState(state);
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentView.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogFolderContentView.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,27 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.cnt;
+
+import org.ourproject.kune.workspace.client.cnt.AbstractContentView;
+
+public interface BlogFolderContentView extends AbstractContentView {
+
+ void setInfo(String info);
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewer.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewer.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewer.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,25 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.cnt;
+
+import org.ourproject.kune.workspace.client.cnt.FoldableContent;
+
+public interface BlogViewer extends FoldableContent {
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPanel.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPanel.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,30 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.cnt;
+
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.workspace.client.cnt.FoldableContentPanel;
+import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+
+public class BlogViewerPanel extends FoldableContentPanel implements BlogViewerView {
+ public BlogViewerPanel(final WorkspaceSkeleton ws, I18nTranslationService i18n) {
+ super(ws, i18n);
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerPresenter.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,83 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.cnt;
+
+import org.ourproject.kune.blogs.client.BlogClientTool;
+import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
+import org.ourproject.kune.platf.client.actions.toolbar.ActionContentToolbar;
+import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
+import org.ourproject.kune.platf.client.dto.StateContentDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
+import org.ourproject.kune.platf.client.ui.download.ImageSize;
+import org.ourproject.kune.workspace.client.cnt.FoldableContentPresenter;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+
+import com.calclab.suco.client.ioc.Provider;
+
+public class BlogViewerPresenter extends FoldableContentPresenter implements BlogViewer {
+ private BlogViewerView view;
+ private final Provider<FileDownloadUtils> downloadProvider;
+
+ public BlogViewerPresenter(StateManager stateManager, Session session, I18nUITranslationService i18n,
+ ActionContentToolbar toolbar, ContentActionRegistry actionRegistry,
+ Provider<FileDownloadUtils> downloadProvider) {
+ super(BlogClientTool.NAME, stateManager, session, toolbar, actionRegistry);
+ this.downloadProvider = downloadProvider;
+ }
+
+ public void init(BlogViewerView view) {
+ super.init(view);
+ this.view = view;
+ }
+
+ @Override
+ protected void setState(StateContentDTO state) {
+ super.setState(state);
+ setContent(state, BlogClientTool.TYPE_UPLOADEDFILE);
+ }
+
+ private void setContent(StateContentDTO state, String uploadedfileType) {
+ String typeId = state.getTypeId();
+ String contentBody = state.getContent();
+ StateToken token = state.getStateToken();
+ BasicMimeTypeDTO mimeType = state.getMimeType();
+ if (typeId.equals(uploadedfileType)) {
+ if (mimeType != null) {
+ FileDownloadUtils fileDownloadUtils = downloadProvider.get();
+ if (mimeType.getType().equals("image")) {
+ view.showImage(fileDownloadUtils.getImageUrl(token), fileDownloadUtils.getImageResizedUrl(token,
+ ImageSize.sized));
+ } else if (mimeType.toString().equals("text/plain") || mimeType.toString().equals("application/pdf")) {
+ view.setContent(contentBody);
+ } else {
+ view.setContent("");
+ }
+ } else {
+ view.setContent("");
+ }
+ } else {
+ view.setContent(contentBody);
+ }
+ view.attach();
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerView.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/cnt/BlogViewerView.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,30 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.cnt;
+
+import org.ourproject.kune.workspace.client.cnt.AbstractContentView;
+
+public interface BlogViewerView extends AbstractContentView {
+
+ void setContent(String content);
+
+ void showImage(String imageUrl, String imageResizedUrl);
+
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/ctx/BlogContext.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/ctx/BlogContext.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/ctx/BlogContext.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,24 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.ctx;
+
+public interface BlogContext {
+
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/client/ctx/BlogContextPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/client/ctx/BlogContextPresenter.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/client/ctx/BlogContextPresenter.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,36 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.client.ctx;
+
+import org.ourproject.kune.blogs.client.BlogClientTool;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
+import org.ourproject.kune.workspace.client.cxt.FoldableContextPresenter;
+
+import com.calclab.suco.client.ioc.Provider;
+
+public class BlogContextPresenter extends FoldableContextPresenter implements BlogContext {
+ public BlogContextPresenter(final StateManager stateManager,
+ final Provider<ContextNavigator> contextNavigatorProvider,
+ final Provider<ContextPropEditor> contextPropEditorProvider) {
+ super(BlogClientTool.NAME, stateManager, contextNavigatorProvider, contextPropEditorProvider);
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerModule.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerModule.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,29 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.server;
+
+import com.google.inject.Binder;
+import com.google.inject.Module;
+
+public class BlogServerModule implements Module {
+ public void configure(final Binder binder) {
+ binder.bind(BlogServerTool.class).asEagerSingleton();
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerTool.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/blogs/server/BlogServerTool.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -0,0 +1,145 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.blogs.server;
+
+import org.ourproject.kune.platf.client.errors.ContainerNotPermittedException;
+import org.ourproject.kune.platf.client.errors.ContentNotPermittedException;
+import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.server.content.ContainerManager;
+import org.ourproject.kune.platf.server.content.ContentManager;
+import org.ourproject.kune.platf.server.domain.Container;
+import org.ourproject.kune.platf.server.domain.Content;
+import org.ourproject.kune.platf.server.domain.ContentStatus;
+import org.ourproject.kune.platf.server.domain.Group;
+import org.ourproject.kune.platf.server.domain.I18nLanguage;
+import org.ourproject.kune.platf.server.domain.ToolConfiguration;
+import org.ourproject.kune.platf.server.domain.User;
+import org.ourproject.kune.platf.server.manager.ToolConfigurationManager;
+import org.ourproject.kune.platf.server.tool.ServerTool;
+import org.ourproject.kune.platf.server.tool.ServerToolRegistry;
+import org.ourproject.kune.platf.server.tool.ServerToolTarget;
+
+import com.google.inject.Inject;
+
+public class BlogServerTool implements ServerTool {
+ public static final String TYPE_ROOT = "blogs.root";
+ public static final String TYPE_BLOG = "blogs.blog";
+ public static final String TYPE_POST = "blogs.post";
+ public static final String TYPE_UPLOADEDFILE = "blogs.uploaded";
+
+ public static final String NAME = "blogs";
+ public static final String ROOT_NAME = "blogs";
+
+ private final ContentManager contentManager;
+ private final ToolConfigurationManager configurationManager;
+ private final ContainerManager containerManager;
+ private final I18nTranslationService i18n;
+
+ @Inject
+ public BlogServerTool(final ContentManager contentManager, final ContainerManager containerManager,
+ final ToolConfigurationManager configurationManager, final I18nTranslationService translationService) {
+ this.contentManager = contentManager;
+ this.containerManager = containerManager;
+ this.configurationManager = configurationManager;
+ this.i18n = translationService;
+ }
+
+ public void checkTypesBeforeContainerCreation(String parentTypeId, String typeId) {
+ checkContainerTypeId(parentTypeId, typeId);
+ }
+
+ public void checkTypesBeforeContentCreation(String parentTypeId, String typeId) {
+ checkContentTypeId(parentTypeId, typeId);
+ }
+
+ public String getName() {
+ return NAME;
+ }
+
+ public String getRootName() {
+ return ROOT_NAME;
+ }
+
+ public ServerToolTarget getTarget() {
+ return ServerToolTarget.forBoth;
+ }
+
+ public Group initGroup(final User user, final Group group) {
+ final ToolConfiguration config = new ToolConfiguration();
+ final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
+ config.setRoot(rootFolder);
+ group.setToolConfig(NAME, config);
+ configurationManager.persist(config);
+
+ I18nLanguage language = user.getLanguage();
+ final Container blog = containerManager.createFolder(group, rootFolder, i18n.t("Blog sample"), language,
+ TYPE_BLOG);
+
+ final Content descriptor = contentManager.createContent(i18n.t("A post sample"), "", user, blog,
+ BlogServerTool.TYPE_POST);
+ descriptor.addAuthor(user);
+ descriptor.setLanguage(language);
+ descriptor.setTypeId(TYPE_POST);
+ descriptor.setStatus(ContentStatus.publishedOnline);
+
+ contentManager.save(user, descriptor,
+ i18n.t("This is only a post sample. You can edit it, and rename this post and this blog"));
+ return group;
+ }
+
+ public void onCreateContainer(final Container container, final Container parent) {
+ }
+
+ public void onCreateContent(final Content content, final Container parent) {
+ }
+
+ @Inject
+ public void register(final ServerToolRegistry registry) {
+ registry.register(this);
+ }
+
+ void checkContainerTypeId(final String parentTypeId, final String typeId) {
+ if (typeId.equals(TYPE_BLOG)) {
+ // ok valid container
+ if ((typeId.equals(TYPE_BLOG) && parentTypeId.equals(TYPE_ROOT))) {
+ // ok
+ } else {
+ throw new ContainerNotPermittedException();
+ }
+ } else {
+ throw new ContainerNotPermittedException();
+ }
+ }
+
+ void checkContentTypeId(final String parentTypeId, final String typeId) {
+ if (typeId.equals(TYPE_UPLOADEDFILE) || typeId.equals(TYPE_POST)) {
+ // ok valid content
+ if ((typeId.equals(TYPE_UPLOADEDFILE) && parentTypeId.equals(TYPE_BLOG))
+ || (typeId.equals(TYPE_POST) && parentTypeId.equals(TYPE_BLOG))) {
+ // ok
+ } else {
+ throw new ContentNotPermittedException();
+ }
+
+ } else {
+ throw new ContentNotPermittedException();
+ }
+ }
+}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/ChatClientActions.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -18,6 +18,7 @@
*
*/package org.ourproject.kune.chat.client;
+import org.ourproject.kune.blogs.client.BlogClientTool;
import org.ourproject.kune.chat.client.ctx.room.AddRoom;
import org.ourproject.kune.docs.client.DocumentClientTool;
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonDescriptor;
@@ -94,7 +95,7 @@
contentActionRegistry.addAction(chatAbout, DocumentClientTool.TYPE_DOCUMENT);
contentActionRegistry.addAction(chatAbout, DocumentClientTool.TYPE_GALLERY);
contentActionRegistry.addAction(chatAbout, DocumentClientTool.TYPE_WIKIPAGE);
- contentActionRegistry.addAction(chatAbout, DocumentClientTool.TYPE_POST);
+ contentActionRegistry.addAction(chatAbout, BlogClientTool.TYPE_POST);
contentActionRegistry.addAction(chatAbout, DocumentClientTool.TYPE_UPLOADEDFILE);
contextActionRegistry.addAction(addRoom, ChatClientTool.TYPE_ROOT, ChatClientTool.TYPE_ROOM);
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPanel.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPanel.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -28,8 +28,4 @@
public ChatRoomPanel(final WorkspaceSkeleton ws, I18nTranslationService i18n) {
super(ws, i18n);
}
-
- public void setInfo(String info) {
- setLabel(info);
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/chat/client/cnt/ChatRoomPresenter.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -52,7 +52,7 @@
if (state.getRootContainer().getChilds().size() == 0) {
view.setInfo(i18n.t("This group has no chat rooms."));
} else {
- view.setInfo("");
+ view.setInfo(i18n.t("Select a chat room"));
}
} else {
view.setInfo("History of room conversations ..." + Site.IN_DEVELOPMENT);
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -18,11 +18,9 @@
*
*/package org.ourproject.kune.docs.client;
-import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_BLOG;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_DOCUMENT;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_FOLDER;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_GALLERY;
-import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_POST;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_ROOT;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_UPLOADEDFILE;
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_WIKI;
@@ -75,23 +73,19 @@
String parentMenuTitle = i18n.t("File");
String parentMenuTitleCtx = i18n.t("Folder");
- final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder = createFolderAction(TYPE_FOLDER,
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder = createContainerAction(TYPE_FOLDER,
"images/nav/folder_add.png", i18n.t("New folder"), parentMenuTitleCtx, i18n.t("New"),
i18n.t("New folder"));
- final ActionToolbarMenuAndItemDescriptor<StateToken> addGallery = createFolderAction(TYPE_GALLERY,
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addGallery = createContainerAction(TYPE_GALLERY,
"images/nav/gallery_add.png", i18n.t("New gallery"), parentMenuTitleCtx, i18n.t("New"),
i18n.t("New gallery"));
- final ActionToolbarMenuAndItemDescriptor<StateToken> addWiki = createFolderAction(TYPE_WIKI,
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addWiki = createContainerAction(TYPE_WIKI,
"images/nav/wiki_add.png", i18n.t("New wiki"), parentMenuTitleCtx, i18n.t("New"), i18n.t("wiki"));
- final ActionToolbarMenuAndItemDescriptor<StateToken> addBlog = createFolderAction(TYPE_BLOG,
- "images/nav/blog_add.png", i18n.t("New blog"), parentMenuTitleCtx, i18n.t("New"), i18n.t("New blog"));
- final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = createDocAction("images/nav/page_add.png",
- i18n.t("New document"), TYPE_DOCUMENT);
- final ActionToolbarMenuAndItemDescriptor<StateToken> addWikiPage = createDocAction(
- "images/nav/wikipage_add.png", i18n.t("New wikipage"), TYPE_WIKIPAGE);
- final ActionToolbarMenuAndItemDescriptor<StateToken> addPost = createDocAction("images/nav/post_add.png",
- i18n.t("New post"), TYPE_POST);
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = createContentAction("images/nav/page_add.png",
+ i18n.t("New document"), parentMenuTitleCtx, TYPE_DOCUMENT);
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addWikiPage = createContentAction(
+ "images/nav/wikipage_add.png", parentMenuTitleCtx, i18n.t("New wikipage"), TYPE_WIKIPAGE);
final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = createDelContainerAction("Delete folder",
parentMenuTitleCtx);
@@ -107,7 +101,8 @@
final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCnt = createSetAsDefContent(parentMenuTitle);
- final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt = createSetAsDefContent(parentMenuTitleCtx);
+ // final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt =
+ // createSetAsDefContent(parentMenuTitleCtx);
final ActionToolbarMenuDescriptor<StateToken> refreshCnt = createRefreshCntAction(parentMenuTitle);
@@ -117,22 +112,25 @@
"images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null);
final ActionToolbarMenuDescriptor<StateToken> setPublishStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Published online"), ContentStatusDTO.publishedOnline);
+ AccessRolDTO.Administrator, i18n.t("Published online"), parentMenuTitle,
+ ContentStatusDTO.publishedOnline);
final ActionToolbarMenuDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Editing in progress"), ContentStatusDTO.editingInProgress);
+ AccessRolDTO.Administrator, i18n.t("Editing in progress"), parentMenuTitle,
+ ContentStatusDTO.editingInProgress);
final ActionToolbarMenuDescriptor<StateToken> setRejectStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Rejected"), ContentStatusDTO.rejected);
+ AccessRolDTO.Administrator, i18n.t("Rejected"), parentMenuTitle, ContentStatusDTO.rejected);
final ActionToolbarMenuDescriptor<StateToken> setSubmittedForPublishStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("Submitted for publish"), ContentStatusDTO.publishedOnline);
+ AccessRolDTO.Administrator, i18n.t("Submitted for publish"), parentMenuTitle,
+ ContentStatusDTO.publishedOnline);
final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction(
- AccessRolDTO.Administrator, i18n.t("In the dustbin"), ContentStatusDTO.inTheDustbin);
+ AccessRolDTO.Administrator, i18n.t("In the dustbin"), parentMenuTitle, ContentStatusDTO.inTheDustbin);
- final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_BLOG, TYPE_POST, TYPE_WIKI,
- TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
- final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY, TYPE_BLOG, TYPE_WIKI };
- final String[] containers = { TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY, TYPE_BLOG, TYPE_WIKI };
- final String[] contents = { TYPE_DOCUMENT, TYPE_POST, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
- final String[] contentsModerated = { TYPE_DOCUMENT, TYPE_POST, TYPE_UPLOADEDFILE };
+ final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_WIKI, TYPE_WIKIPAGE,
+ TYPE_UPLOADEDFILE };
+ final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY, TYPE_WIKI };
+ final String[] containers = { TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY, TYPE_WIKI };
+ final String[] contents = { TYPE_DOCUMENT, TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
+ final String[] contentsModerated = { TYPE_DOCUMENT, TYPE_UPLOADEDFILE };
contentActionRegistry.addAction(setPublishStatus, contentsModerated);
contentActionRegistry.addAction(setEditionInProgressStatus, contentsModerated);
@@ -140,10 +138,8 @@
contentActionRegistry.addAction(setSubmittedForPublishStatus, contentsModerated);
contentActionRegistry.addAction(setInTheDustBinStatus, contentsModerated);
contextActionRegistry.addAction(addDoc, TYPE_ROOT, TYPE_FOLDER);
- contextActionRegistry.addAction(addPost, TYPE_BLOG);
contextActionRegistry.addAction(addWikiPage, TYPE_WIKI);
contextActionRegistry.addAction(addFolder, TYPE_ROOT, TYPE_FOLDER);
- contextActionRegistry.addAction(addBlog, TYPE_ROOT);
contextActionRegistry.addAction(addWiki, TYPE_ROOT);
contextActionRegistry.addAction(addGallery, TYPE_ROOT);
contextActionRegistry.addAction(go, all);
@@ -151,15 +147,15 @@
contextActionRegistry.addAction(renameCtx, containersNoRoot);
contextActionRegistry.addAction(refreshCtx, containers);
contentActionRegistry.addAction(refreshCnt, contents);
- contextActionRegistry.addAction(uploadFile, TYPE_ROOT, TYPE_FOLDER, TYPE_BLOG);
+ contextActionRegistry.addAction(uploadFile, TYPE_ROOT, TYPE_FOLDER);
contentActionRegistry.addAction(download, TYPE_UPLOADEDFILE);
contentActionRegistry.addAction(delContent, contents);
contextActionRegistry.addAction(delContainer, containersNoRoot);
contentActionRegistry.addAction(setAsDefGroupCnt, TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
- contentActionRegistry.addAction(setAsDefGroupCxt, TYPE_BLOG);
+ // contentActionRegistry.addAction(setAsDefGroupCxt,);
contextActionRegistry.addAction(goGroupHome, containers);
contextActionRegistry.addAction(downloadCtx, TYPE_UPLOADEDFILE);
- contentActionRegistry.addAction(editContent, TYPE_DOCUMENT, TYPE_POST, TYPE_WIKIPAGE);
+ contentActionRegistry.addAction(editContent, TYPE_DOCUMENT, TYPE_WIKIPAGE);
contentActionRegistry.addAction(translateContent, TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE,
TYPE_WIKI, TYPE_WIKIPAGE);
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientTool.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -32,8 +32,6 @@
public static final String TYPE_FOLDER = "docs.folder";
public static final String TYPE_DOCUMENT = "docs.doc";
public static final String TYPE_GALLERY = "docs.gallery";
- public static final String TYPE_BLOG = "docs.blog";
- public static final String TYPE_POST = "docs.post";
public static final String TYPE_WIKI = "docs.wiki";
public static final String TYPE_WIKIPAGE = "docs.wikipage";
public static final String TYPE_UPLOADEDFILE = "docs.uploaded";
@@ -49,10 +47,9 @@
registerDragableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_UPLOADEDFILE);
registerDropableTypes(TYPE_ROOT, TYPE_FOLDER, TYPE_GALLERY);
registerPublishModerableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
- registerRateableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE, TYPE_POST);
- registerRenamableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_BLOG, TYPE_GALLERY, TYPE_POST, TYPE_UPLOADEDFILE,
- TYPE_WIKI, TYPE_WIKIPAGE);
- registerTageableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE, TYPE_POST);
+ registerRateableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
+ registerRenamableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE, TYPE_WIKI, TYPE_WIKIPAGE);
+ registerTageableTypes(TYPE_DOCUMENT, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
registerTranslatableTypes(TYPE_DOCUMENT, TYPE_FOLDER, TYPE_UPLOADEDFILE, TYPE_WIKIPAGE);
registerIcons();
@@ -64,10 +61,8 @@
protected void registerIcons() {
registerContentTypeIcon(TYPE_FOLDER, "images/nav/folder.png");
- registerContentTypeIcon(TYPE_BLOG, "images/nav/blog.png");
registerContentTypeIcon(TYPE_GALLERY, "images/nav/gallery.png");
registerContentTypeIcon(TYPE_DOCUMENT, "images/nav/page.png");
- registerContentTypeIcon(TYPE_POST, "images/nav/post.png");
registerContentTypeIcon(TYPE_WIKI, "images/nav/wiki.png");
registerContentTypeIcon(TYPE_WIKIPAGE, "images/nav/wikipage.png");
registerContentTypeIcon(TYPE_UPLOADEDFILE, new BasicMimeTypeDTO("image"), "images/nav/picture.png");
Modified: trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/docs/server/DocumentServerTool.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -89,12 +89,12 @@
public Group initGroup(final User user, final Group group) {
final ToolConfiguration config = new ToolConfiguration();
- final Container container = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
- config.setRoot(container);
+ final Container rootFolder = containerManager.createRootFolder(group, NAME, ROOT_NAME, TYPE_ROOT);
+ config.setRoot(rootFolder);
group.setToolConfig(NAME, config);
configurationManager.persist(config);
final String longName = group.getLongName();
- final Content descriptor = contentManager.createContent(i18n.t("About [%s]", longName), "", user, container,
+ final Content descriptor = contentManager.createContent(i18n.t("About [%s]", longName), "", user, rootFolder,
DocumentServerTool.TYPE_DOCUMENT);
descriptor.addAuthor(user);
descriptor.setLanguage(user.getLanguage());
@@ -105,9 +105,7 @@
}
public void onCreateContainer(final Container container, final Container parent) {
- String typeId = container.getTypeId();
- container.setTypeId(typeId);
- if (typeId.equals(TYPE_WIKI)) {
+ if (container.getTypeId().equals(TYPE_WIKI)) {
AccessLists wikiAcl = new AccessLists();
wikiAcl.getAdmins().setMode(GroupListMode.NORMAL);
wikiAcl.getAdmins().add(container.getOwner());
@@ -145,7 +143,7 @@
void checkContentTypeId(final String parentTypeId, final String typeId) {
if (typeId.equals(TYPE_DOCUMENT) || typeId.equals(TYPE_WIKIPAGE) || typeId.equals(TYPE_UPLOADEDFILE)
|| typeId.equals(TYPE_POST)) {
- // ok valid container
+ // ok valid content
if ((typeId.equals(TYPE_DOCUMENT) && (parentTypeId.equals(TYPE_ROOT) || parentTypeId.equals(TYPE_FOLDER)))
|| (typeId.equals(TYPE_UPLOADEDFILE) && (parentTypeId.equals(TYPE_ROOT)
|| parentTypeId.equals(TYPE_FOLDER) || parentTypeId.equals(TYPE_GALLERY)))
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorPresenter.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/tool/ToolSelectorPresenter.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -25,6 +25,7 @@
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
+import com.allen_sauer.gwt.log.client.Log;
import com.calclab.suco.client.listener.Listener;
import com.calclab.suco.client.listener.Listener2;
@@ -77,6 +78,7 @@
}
void onToolChanged(final String oldTool, final String newTool) {
+ Log.debug("Registered tools: " + tools.keySet().toString());
if (!oldTool.equals("")) {
tools.get(oldTool).setSelected(false);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/GroupManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/GroupManager.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/GroupManager.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -49,8 +49,6 @@
List<String> findEnabledTools(Long id);
- Group getSiteDefaultGroup();
-
/**
* IMPORTANT: returns null if userId is null
*
@@ -59,6 +57,8 @@
*/
Group getGroupOfUserWithId(Long userId);
+ Group getSiteDefaultGroup();
+
void reIndex();
SearchResult<Group> search(String search);
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/ContentRPC.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -344,6 +344,18 @@
return mapper.map(content, ContentSimpleDTO.class);
}
+ // @Authenticated
+ // @Authorizated(accessRolRequired = AccessRol.Administrator,
+ // actionLevel=ActionLevel.container)
+ // @Transactional(type = TransactionType.READ_WRITE)
+ // public ContentSimpleDTO setFolderAsDefaultContent(final String userHash,
+ // final StateToken token) {
+ // Container container =
+ // containerManager.find(ContentUtils.parseId(token.getFolder()));
+ // groupManager.setDefaultContent(token.getGroup(), container);
+ // return mapper.map(content, ContentSimpleDTO.class);
+ // }
+
@Authenticated
@Authorizated(accessRolRequired = AccessRol.Editor)
@Transactional(type = TransactionType.READ_WRITE)
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -105,6 +105,53 @@
protected void createActions() {
}
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createContainerAction(final String contentTypeId,
+ final String iconUrl, final String textDescription, final String parentMenuTitle,
+ final String parentMenuSubtitle, final String defaultName) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder;
+ addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
+ ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ Site.showProgressProcessing();
+ contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName,
+ contentTypeId, new AsyncCallbackSimple<StateContainerDTO>() {
+ public void onSuccess(final StateContainerDTO state) {
+ contextNavigator.setEditOnNextStateChange(true);
+ stateManager.setRetrievedState(state);
+ }
+ });
+ }
+ });
+ addFolder.setTextDescription(textDescription);
+ addFolder.setParentMenuTitle(parentMenuTitle);
+ addFolder.setParentSubMenuTitle(parentMenuSubtitle);
+ addFolder.setIconUrl(iconUrl);
+ return addFolder;
+ }
+
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createContentAction(String iconUrl,
+ final String description, final String parentMenuTitle, final String typeId) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ Site.showProgressProcessing();
+ contentServiceProvider.get().addContent(session.getUserHash(),
+ session.getCurrentState().getStateToken(), description, typeId,
+ new AsyncCallbackSimple<StateContentDTO>() {
+ public void onSuccess(final StateContentDTO state) {
+ contextNavigator.setEditOnNextStateChange(true);
+ stateManager.setRetrievedState(state);
+ }
+ });
+ }
+ });
+ addDoc.setTextDescription(description);
+ addDoc.setParentMenuTitle(parentMenuTitle);
+ addDoc.setParentSubMenuTitle(i18n.t("New"));
+ addDoc.setIconUrl(iconUrl);
+ return addDoc;
+ }
+
protected ActionToolbarMenuAndItemDescriptor<StateToken> createContentRenameAction(String parentMenuTitle,
String textDescription) {
final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>(
@@ -162,53 +209,6 @@
return delContent;
}
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createDocAction(String iconUrl, final String description,
- final String typeId) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- Site.showProgressProcessing();
- contentServiceProvider.get().addContent(session.getUserHash(),
- session.getCurrentState().getStateToken(), description, typeId,
- new AsyncCallbackSimple<StateContentDTO>() {
- public void onSuccess(final StateContentDTO state) {
- contextNavigator.setEditOnNextStateChange(true);
- stateManager.setRetrievedState(state);
- }
- });
- }
- });
- addDoc.setTextDescription(description);
- addDoc.setParentMenuTitle(i18n.t("Folder"));
- addDoc.setParentSubMenuTitle(i18n.t("New"));
- addDoc.setIconUrl(iconUrl);
- return addDoc;
- }
-
- protected ActionToolbarMenuAndItemDescriptor<StateToken> createFolderAction(final String contentTypeId,
- final String iconUrl, final String textDescription, final String parentMenuTitle,
- final String parentMenuSubtitle, final String defaultName) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder;
- addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
- ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- Site.showProgressProcessing();
- contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName,
- contentTypeId, new AsyncCallbackSimple<StateContainerDTO>() {
- public void onSuccess(final StateContainerDTO state) {
- contextNavigator.setEditOnNextStateChange(true);
- stateManager.setRetrievedState(state);
- }
- });
- }
- });
- addFolder.setTextDescription(textDescription);
- addFolder.setParentMenuTitle(parentMenuTitle);
- addFolder.setParentSubMenuTitle(parentMenuSubtitle);
- addFolder.setIconUrl(iconUrl);
- return addFolder;
- }
-
protected void createPostSessionInitActions() {
}
@@ -266,7 +266,7 @@
public void onSuccess(final ContentSimpleDTO defContent) {
session.getCurrentState().getGroup().setDefaultContent(defContent);
Site.hideProgress();
- Site.info(i18n.t("Document selected as the group homepage"));
+ Site.info(i18n.t("Content selected as the group homepage"));
}
});
}
@@ -284,7 +284,7 @@
}
protected ActionToolbarMenuAndItemDescriptor<StateToken> createSetStatusAction(final AccessRolDTO rol,
- final String textDescription, final ContentStatusDTO status) {
+ final String textDescription, String parentMenuTitle, final ContentStatusDTO status) {
final ActionToolbarMenuAndItemDescriptor<StateToken> action = new ActionToolbarMenuAndItemDescriptor<StateToken>(
rol, ActionToolbarPosition.topbar, new Listener<StateToken>() {
public void onEvent(final StateToken stateToken) {
@@ -303,7 +303,7 @@
}
});
action.setTextDescription(textDescription);
- action.setParentMenuTitle(i18n.t("File"));
+ action.setParentMenuTitle(parentMenuTitle);
action.setParentSubMenuTitle(i18n.t("Change the status"));
return action;
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPanel.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -26,6 +26,10 @@
attach();
}
+ public void setInfo(String info) {
+ setLabel(info);
+ }
+
public void setLabel(String text) {
Label label = new Label(text);
setDefStyle(label);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntitySummary.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntitySummary.java 2008-11-24 18:14:39 UTC (rev 965)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/EntitySummary.java 2008-11-24 20:24:03 UTC (rev 966)
@@ -78,7 +78,9 @@
mainFitPanel.setBottomToolbar(trayBar);
anchorLayoutPanel.add(entityTools, new AnchorLayoutData("100%"));
- anchorLayoutPanel.add(entitySummary, new AnchorLayoutData("100% -50"));
+ // height: is 25 * number of tools :-( finding a way to make this
+ // automatic
+ anchorLayoutPanel.add(entitySummary, new AnchorLayoutData("100% -75"));
mainFitPanel.add(anchorLayoutPanel);
}
1
0
24 Nov '08
Author: vjrj
Date: 2008-11-24 19:14:39 +0100 (Mon, 24 Nov 2008)
New Revision: 965
Added:
trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContent.java
Modified:
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewer.java
trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPanel.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/Toolbar.java
Log:
Incomplete - task UI tools & workspace refactorization
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientActions.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -29,27 +29,14 @@
import static org.ourproject.kune.docs.client.DocumentClientTool.TYPE_WIKIPAGE;
import org.ourproject.kune.docs.client.cnt.DocumentViewer;
-import org.ourproject.kune.platf.client.actions.ActionEnableCondition;
-import org.ourproject.kune.platf.client.actions.ActionMenuItemDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
-import org.ourproject.kune.platf.client.actions.ActionToolbarButtonDescriptor;
-import org.ourproject.kune.platf.client.actions.ActionToolbarButtonSeparator;
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuAndItemDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
-import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
import org.ourproject.kune.platf.client.dto.AccessRolDTO;
-import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
-import org.ourproject.kune.platf.client.dto.ContentSimpleDTO;
import org.ourproject.kune.platf.client.dto.ContentStatusDTO;
-import org.ourproject.kune.platf.client.dto.GroupDTO;
-import org.ourproject.kune.platf.client.dto.InitDataDTO;
-import org.ourproject.kune.platf.client.dto.StateContainerDTO;
-import org.ourproject.kune.platf.client.dto.StateContentDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
-import org.ourproject.kune.platf.client.errors.SessionExpiredException;
-import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
import org.ourproject.kune.platf.client.services.KuneErrorHandler;
@@ -57,75 +44,47 @@
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.upload.FileUploader;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
+import org.ourproject.kune.workspace.client.AbstractFoldableContentActions;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
import org.ourproject.kune.workspace.client.editor.TextEditor;
import org.ourproject.kune.workspace.client.entitylogo.EntityLogo;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
-import org.ourproject.kune.workspace.client.site.Site;
import com.calclab.suco.client.ioc.Provider;
-import com.calclab.suco.client.listener.Listener;
-import com.calclab.suco.client.listener.Listener0;
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
-import com.google.gwt.user.client.rpc.AsyncCallback;
-public class DocumentClientActions {
-
- private final I18nUITranslationService i18n;
- private final ContextNavigator contextNavigator;
- private final Session session;
- private final StateManager stateManager;
- private final Provider<FileUploader> fileUploaderProvider;
- private final ContentActionRegistry contentActionRegistry;
- private final ContextActionRegistry contextActionRegistry;
- private final Provider<ContentServiceAsync> contentServiceProvider;
- private final Provider<GroupServiceAsync> groupServiceProvider;
- private final Provider<FileDownloadUtils> fileDownloadProvider;
- private final EntityLogo entityLogo;
- private final Provider<TextEditor> textEditorProvider;
- private final KuneErrorHandler errorHandler;
- private final DocumentViewer documentViewer;
- private final Provider<ContextPropEditor> contextPropEditorProvider;
-
+public class DocumentClientActions extends AbstractFoldableContentActions {
public DocumentClientActions(final I18nUITranslationService i18n, final ContextNavigator contextNavigator,
final Session session, final StateManager stateManager,
+ final DeferredCommandWrapper deferredCommandWrapper,
final Provider<ContentServiceAsync> contentServiceProvider,
final Provider<GroupServiceAsync> groupServiceProvider, final Provider<FileUploader> fileUploaderProvider,
final ContentActionRegistry contentActionRegistry, final ContextActionRegistry contextActionRegistry,
final Provider<FileDownloadUtils> fileDownloadProvider, final EntityLogo entityLogo,
final Provider<TextEditor> textEditorProvider, final KuneErrorHandler errorHandler,
final DocumentViewer documentViewer, final Provider<ContextPropEditor> contextProvEditorProvider) {
- this.i18n = i18n;
- this.contextNavigator = contextNavigator;
- this.session = session;
- this.stateManager = stateManager;
- this.contentServiceProvider = contentServiceProvider;
- this.groupServiceProvider = groupServiceProvider;
- this.fileUploaderProvider = fileUploaderProvider;
- this.contextActionRegistry = contextActionRegistry;
- this.contentActionRegistry = contentActionRegistry;
- this.fileDownloadProvider = fileDownloadProvider;
- this.entityLogo = entityLogo;
- this.textEditorProvider = textEditorProvider;
- this.errorHandler = errorHandler;
- this.documentViewer = documentViewer;
- this.contextPropEditorProvider = contextProvEditorProvider;
- createActions();
+ super(session, stateManager, i18n, errorHandler, deferredCommandWrapper, groupServiceProvider,
+ contentServiceProvider, fileUploaderProvider, contextNavigator, contentActionRegistry,
+ contextActionRegistry, fileDownloadProvider, textEditorProvider, contextProvEditorProvider,
+ documentViewer, entityLogo);
}
- private void createActions() {
+ @Override
+ protected void createActions() {
+ String parentMenuTitle = i18n.t("File");
+ String parentMenuTitleCtx = i18n.t("Folder");
+
final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder = createFolderAction(TYPE_FOLDER,
- "images/nav/folder_add.png", i18n.t("New folder"), i18n.t("Folder"), i18n.t("New"),
+ "images/nav/folder_add.png", i18n.t("New folder"), parentMenuTitleCtx, i18n.t("New"),
i18n.t("New folder"));
final ActionToolbarMenuAndItemDescriptor<StateToken> addGallery = createFolderAction(TYPE_GALLERY,
- "images/nav/gallery_add.png", i18n.t("New gallery"), i18n.t("Folder"), i18n.t("New"),
+ "images/nav/gallery_add.png", i18n.t("New gallery"), parentMenuTitleCtx, i18n.t("New"),
i18n.t("New gallery"));
final ActionToolbarMenuAndItemDescriptor<StateToken> addWiki = createFolderAction(TYPE_WIKI,
- "images/nav/wiki_add.png", i18n.t("New wiki"), i18n.t("Folder"), i18n.t("New"), i18n.t("wiki"));
+ "images/nav/wiki_add.png", i18n.t("New wiki"), parentMenuTitleCtx, i18n.t("New"), i18n.t("wiki"));
final ActionToolbarMenuAndItemDescriptor<StateToken> addBlog = createFolderAction(TYPE_BLOG,
- "images/nav/blog_add.png", i18n.t("New blog"), i18n.t("Folder"), i18n.t("New"), i18n.t("New blog"));
+ "images/nav/blog_add.png", i18n.t("New blog"), parentMenuTitleCtx, i18n.t("New"), i18n.t("New blog"));
final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = createDocAction("images/nav/page_add.png",
i18n.t("New document"), TYPE_DOCUMENT);
@@ -134,181 +93,29 @@
final ActionToolbarMenuAndItemDescriptor<StateToken> addPost = createDocAction("images/nav/post_add.png",
i18n.t("New post"), TYPE_POST);
- final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- Site.info("Sorry, in development");
- }
- });
- delContainer.setParentMenuTitle(i18n.t("Folder"));
- delContainer.setTextDescription(i18n.t("Delete folder"));
- delContainer.setMustBeConfirmed(true);
- delContainer.setConfirmationTitle(i18n.t("Please confirm"));
- delContainer.setConfirmationText(i18n.t("You will delete it and also all its contents. Are you sure?"));
+ final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = createDelContainerAction("Delete folder",
+ parentMenuTitleCtx);
- final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- contentServiceProvider.get().delContent(session.getUserHash(), token,
- new AsyncCallbackSimple<String>() {
- public void onSuccess(final String result) {
- final StateToken parent = token.clone().clearDocument();
- stateManager.gotoToken(parent);
- }
- });
- }
- });
- delContent.setParentMenuTitle(i18n.t("File"));
- delContent.setTextDescription(i18n.t("Delete"));
- delContent.setMustBeConfirmed(true);
- delContent.setConfirmationTitle(i18n.t("Please confirm"));
- delContent.setConfirmationText(i18n.t("Are you sure?"));
- delContent.setEnableCondition(new ActionEnableCondition<StateToken>() {
- public boolean mustBeEnabled(final StateToken itemToken) {
- final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
- return !itemToken.equals(defContentToken);
- }
- });
+ final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = createDelContentAction(parentMenuTitle,
+ i18n.t("Delete"));
- final ActionMenuItemDescriptor<StateToken> go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer,
- new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- stateManager.gotoToken(token);
- }
- });
- go.setMustBeAuthenticated(false);
- go.setTextDescription(i18n.t("Open"));
- go.setIconUrl("images/nav/go.png");
- go.setEnableCondition(new ActionEnableCondition<StateToken>() {
- public boolean mustBeEnabled(final StateToken itemToken) {
- return !contextNavigator.isSelected(itemToken);
- }
- });
+ final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = createContentRenameAction(parentMenuTitle,
+ i18n.t("Rename"));
- final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- contextNavigator.editItem(stateToken);
- }
- });
- renameCtn.setTextDescription(i18n.t("Rename"));
- renameCtn.setParentMenuTitle(i18n.t("File"));
+ final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = createRenameContentInCtxAction(
+ parentMenuTitleCtx, i18n.t("Rename"));
- final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- contextNavigator.editItem(stateToken);
- }
- });
- renameCtx.setTextDescription(i18n.t("Rename"));
- renameCtx.setParentMenuTitle(i18n.t("Folder"));
+ final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCnt = createSetAsDefContent(parentMenuTitle);
- final ActionToolbarButtonDescriptor<StateToken> goGroupHome = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- stateManager.gotoToken(token.getGroup());
- }
- });
- goGroupHome.setMustBeAuthenticated(false);
- goGroupHome.setIconUrl("images/group-home.png");
- goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() {
- public boolean mustBeEnabled(final StateToken itemToken) {
- final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
- return !itemToken.equals(defContentToken);
- }
- });
+ final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt = createSetAsDefContent(parentMenuTitleCtx);
- final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCnt;
- setAsDefGroupCnt = createSetAsDefContent();
- setAsDefGroupCnt.setParentMenuTitle(i18n.t("File"));
+ final ActionToolbarMenuDescriptor<StateToken> refreshCnt = createRefreshCntAction(parentMenuTitle);
- final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupCxt;
- setAsDefGroupCxt = createSetAsDefContent();
- setAsDefGroupCxt.setParentMenuTitle(i18n.t("Folder"));
+ final ActionToolbarMenuDescriptor<StateToken> refreshCtx = createRefreshCxtAction(parentMenuTitleCtx);
- final ActionToolbarMenuDescriptor<StateToken> refreshCtx = new ActionToolbarMenuDescriptor<StateToken>(
- AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- stateManager.reload();
- contextNavigator.selectItem(stateToken);
- }
- });
- refreshCtx.setMustBeAuthenticated(false);
- refreshCtx.setParentMenuTitle(i18n.t("Folder"));
- refreshCtx.setTextDescription(i18n.t("Refresh"));
- refreshCtx.setIconUrl("images/nav/refresh.png");
-
- final ActionToolbarMenuDescriptor<StateToken> refreshCnt = new ActionToolbarMenuDescriptor<StateToken>(
- AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- stateManager.reload();
- contextNavigator.selectItem(stateToken);
- }
- });
- refreshCnt.setMustBeAuthenticated(false);
- refreshCnt.setParentMenuTitle(i18n.t("File"));
- refreshCnt.setTextDescription(i18n.t("Refresh"));
- refreshCnt.setIconUrl("images/nav/refresh.png");
-
final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile = createUploadAction(i18n.t("Upload file"),
"images/nav/upload.png", i18n.t("Upload some files (images, PDFs, ...)"), null);
- session.onInitDataReceived(new Listener<InitDataDTO>() {
- public void onEvent(final InitDataDTO parameter) {
- final ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia = createUploadAction(
- i18n.t("Upload media"), "images/nav/upload.png", i18n.t("Upload some media (images, videos)"),
- session.getGalleryPermittedExtensions());
- contextActionRegistry.addAction(uploadMedia, TYPE_GALLERY);
- }
- });
-
- final ActionToolbarButtonDescriptor<StateToken> download = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- downloadContent(token);
- }
- });
- download.setMustBeAuthenticated(false);
- download.setTextDescription(i18n.t("Download"));
- download.setToolTip(i18n.t("Download this file"));
- download.setIconUrl("images/nav/download.png");
-
- final ActionMenuItemDescriptor<StateToken> downloadCtx = new ActionMenuItemDescriptor<StateToken>(
- AccessRolDTO.Viewer, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- downloadContent(token);
- }
- });
- downloadCtx.setMustBeAuthenticated(false);
- downloadCtx.setTextDescription(i18n.t("Download"));
- downloadCtx.setIconUrl("images/nav/download.png");
-
- final ActionToolbarMenuAndItemDescriptor<StateToken> setGroupLogo = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- groupServiceProvider.get().setGroupFullLogo(session.getUserHash(), token,
- new AsyncCallbackSimple<GroupDTO>() {
- public void onSuccess(GroupDTO newGroup) {
- Site.info("Logo selected");
- if (session.getCurrentState().getGroup().getShortName().equals(
- newGroup.getShortName())) {
- session.getCurrentState().setGroup(newGroup);
- }
- entityLogo.refreshGroupLogo();
- }
- });
- }
- });
- setGroupLogo.setParentMenuTitle(i18n.t("File"));
- setGroupLogo.setTextDescription(i18n.t("Set this as the group logo"));
- setGroupLogo.setIconUrl("images/nav/picture.png");
- setGroupLogo.setEnableCondition(new ActionEnableCondition<StateToken>() {
- public boolean mustBeEnabled(final StateToken itemToken) {
- final BasicMimeTypeDTO mime = session.getContentState().getMimeType();
- return mime != null && mime.getType().equals("image");
- }
- });
-
final ActionToolbarMenuDescriptor<StateToken> setPublishStatus = createSetStatusAction(
AccessRolDTO.Administrator, i18n.t("Published online"), ContentStatusDTO.publishedOnline);
final ActionToolbarMenuDescriptor<StateToken> setEditionInProgressStatus = createSetStatusAction(
@@ -320,74 +127,6 @@
final ActionToolbarMenuDescriptor<StateToken> setInTheDustBinStatus = createSetStatusAction(
AccessRolDTO.Administrator, i18n.t("In the dustbin"), ContentStatusDTO.inTheDustbin);
- final ActionToolbarButtonDescriptor<StateToken> translateContent = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- Site.important(i18n.t("Sorry, this functionality is currently in development"));
- }
- });
- translateContent.setTextDescription(i18n.tWithNT("Translate", "used in button"));
- translateContent.setToolTip(i18n.t("Translate this document to other languages"));
- translateContent.setIconUrl("images/language.gif");
- translateContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
-
- final ActionToolbarButtonDescriptor<StateToken> editContent = new ActionToolbarButtonDescriptor<StateToken>(
- AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- session.check(new AsyncCallbackSimple<Object>() {
- public void onSuccess(final Object result) {
- final TextEditor editor = textEditorProvider.get();
- documentViewer.detach();
- contextNavigator.detach();
- contextPropEditorProvider.get().attach();
- editor.editContent(session.getContentState().getContent(), new Listener<String>() {
- public void onEvent(final String html) {
- Site.showProgressSaving();
- contentServiceProvider.get().save(session.getUserHash(), stateToken, html,
- new AsyncCallback<Object>() {
- public void onFailure(final Throwable caught) {
- Site.hideProgress();
- try {
- throw caught;
- } catch (final SessionExpiredException e) {
- errorHandler.doSessionExpired();
- } catch (final Throwable e) {
- Site.error(i18n.t("Error saving document. Retrying..."));
- errorHandler.process(caught);
- editor.onSaveFailed();
- }
- }
-
- public void onSuccess(Object param) {
- Site.hideProgress();
- session.getContentState().setContent(html);
- editor.onSaved();
- }
- });
- }
- }, new Listener0() {
- public void onEvent() {
- // onClose
- DeferredCommand.addCommand(new Command() {
- public void execute() {
- documentViewer.attach();
- contextPropEditorProvider.get().detach();
- contextNavigator.attach();
- if (session.getCurrentStateToken().equals(stateToken)) {
- documentViewer.refreshState();
- }
- }
- });
- }
- });
- }
- });
- }
- });
- editContent.setTextDescription(i18n.tWithNT("Edit", "used in button"));
- editContent.setIconUrl("images/content_edit.png");
- editContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
-
final String[] all = { TYPE_ROOT, TYPE_FOLDER, TYPE_DOCUMENT, TYPE_GALLERY, TYPE_BLOG, TYPE_POST, TYPE_WIKI,
TYPE_WIKIPAGE, TYPE_UPLOADEDFILE };
final String[] containersNoRoot = { TYPE_FOLDER, TYPE_GALLERY, TYPE_BLOG, TYPE_WIKI };
@@ -419,135 +158,14 @@
contentActionRegistry.addAction(setAsDefGroupCnt, TYPE_DOCUMENT, TYPE_UPLOADEDFILE);
contentActionRegistry.addAction(setAsDefGroupCxt, TYPE_BLOG);
contextActionRegistry.addAction(goGroupHome, containers);
- // contentActionRegistry.addAction(setGroupLogo, TYPE_UPLOADEDFILE);
contextActionRegistry.addAction(downloadCtx, TYPE_UPLOADEDFILE);
contentActionRegistry.addAction(editContent, TYPE_DOCUMENT, TYPE_POST, TYPE_WIKIPAGE);
contentActionRegistry.addAction(translateContent, TYPE_DOCUMENT, TYPE_FOLDER, TYPE_GALLERY, TYPE_UPLOADEDFILE,
TYPE_WIKI, TYPE_WIKIPAGE);
}
- private ActionToolbarMenuAndItemDescriptor<StateToken> createDocAction(String iconUrl, final String description,
- final String typeId) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- Site.showProgressProcessing();
- contentServiceProvider.get().addContent(session.getUserHash(),
- session.getCurrentState().getStateToken(), description, typeId,
- new AsyncCallbackSimple<StateContentDTO>() {
- public void onSuccess(final StateContentDTO state) {
- contextNavigator.setEditOnNextStateChange(true);
- stateManager.setRetrievedState(state);
- }
- });
- }
- });
- addDoc.setTextDescription(description);
- addDoc.setParentMenuTitle(i18n.t("Folder"));
- addDoc.setParentSubMenuTitle(i18n.t("New"));
- addDoc.setIconUrl(iconUrl);
- return addDoc;
+ @Override
+ protected void createPostSessionInitActions() {
+ contextActionRegistry.addAction(uploadMedia, TYPE_GALLERY);
}
-
- private ActionToolbarMenuAndItemDescriptor<StateToken> createFolderAction(final String contentTypeId,
- final String iconUrl, final String textDescription, final String parentMenuTitle,
- final String parentMenuSubtitle, final String defaultName) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder;
- addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
- ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- Site.showProgressProcessing();
- contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName,
- contentTypeId, new AsyncCallbackSimple<StateContainerDTO>() {
- public void onSuccess(final StateContainerDTO state) {
- contextNavigator.setEditOnNextStateChange(true);
- stateManager.setRetrievedState(state);
- }
- });
- }
- });
- addFolder.setTextDescription(textDescription);
- addFolder.setParentMenuTitle(parentMenuTitle);
- addFolder.setParentSubMenuTitle(parentMenuSubtitle);
- addFolder.setIconUrl(iconUrl);
- return addFolder;
- }
-
- private ActionToolbarMenuDescriptor<StateToken> createSetAsDefContent() {
- final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupContent;
- setAsDefGroupContent = new ActionToolbarMenuDescriptor<StateToken>(AccessRolDTO.Administrator,
- ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- Site.showProgressProcessing();
- contentServiceProvider.get().setAsDefaultContent(session.getUserHash(), token,
- new AsyncCallbackSimple<ContentSimpleDTO>() {
- public void onSuccess(final ContentSimpleDTO defContent) {
- session.getCurrentState().getGroup().setDefaultContent(defContent);
- Site.hideProgress();
- Site.info(i18n.t("Document selected as the group homepage"));
- }
- });
- }
- });
- setAsDefGroupContent.setTextDescription(i18n.t("Set this as the group default page"));
- setAsDefGroupContent.setIconUrl("images/group-home.png");
- setAsDefGroupContent.setEnableCondition(new ActionEnableCondition<StateToken>() {
- public boolean mustBeEnabled(final StateToken itemToken) {
- final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
- return !itemToken.equals(defContentToken);
- }
- });
- return setAsDefGroupContent;
- }
-
- private ActionToolbarMenuAndItemDescriptor<StateToken> createSetStatusAction(final AccessRolDTO rol,
- final String textDescription, final ContentStatusDTO status) {
- final ActionToolbarMenuAndItemDescriptor<StateToken> action = new ActionToolbarMenuAndItemDescriptor<StateToken>(
- rol, ActionToolbarPosition.topbar, new Listener<StateToken>() {
- public void onEvent(final StateToken stateToken) {
- final AsyncCallbackSimple<Object> callback = new AsyncCallbackSimple<Object>() {
- public void onSuccess(final Object result) {
- session.getContentState().setStatus(status);
- contextNavigator.setItemStatus(stateToken, status);
- }
- };
- if (status.equals(ContentStatusDTO.publishedOnline) || status.equals(ContentStatusDTO.rejected)) {
- contentServiceProvider.get().setStatusAsAdmin(session.getUserHash(), stateToken, status,
- callback);
- } else {
- contentServiceProvider.get().setStatus(session.getUserHash(), stateToken, status, callback);
- }
- }
- });
- action.setTextDescription(textDescription);
- action.setParentMenuTitle(i18n.t("File"));
- action.setParentSubMenuTitle(i18n.t("Change the status"));
- return action;
- }
-
- private ActionToolbarButtonAndItemDescriptor<StateToken> createUploadAction(final String textDescription,
- final String iconUrl, final String toolTip, final String permitedExtensions) {
- final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile;
- uploadFile = new ActionToolbarButtonAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
- ActionToolbarPosition.bottombar, new Listener<StateToken>() {
- public void onEvent(final StateToken token) {
- if (permitedExtensions != null) {
- // FIXME: can't be reset ...
- // fileUploaderProvider.get().setPermittedExtensions(permitedExtensions);
- } else {
- // FIXME: can't be reset ...
- // fileUploaderProvider.get().resetPermittedExtensions();
- }
- fileUploaderProvider.get().show();
- }
- });
- uploadFile.setTextDescription(textDescription);
- uploadFile.setIconUrl(iconUrl);
- uploadFile.setToolTip(toolTip);
- return uploadFile;
- }
-
- private void downloadContent(final StateToken token) {
- fileDownloadProvider.get().downloadFile(token);
- }
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/DocumentClientModule.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -36,27 +36,20 @@
import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.platf.client.services.KuneErrorHandler;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
import org.ourproject.kune.platf.client.tool.ToolSelector;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.upload.FileUploader;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
-import org.ourproject.kune.workspace.client.cxt.ContextPropEditorPanel;
-import org.ourproject.kune.workspace.client.cxt.ContextPropEditorPresenter;
-import org.ourproject.kune.workspace.client.cxt.ContextPropEditorView;
import org.ourproject.kune.workspace.client.editor.TextEditor;
import org.ourproject.kune.workspace.client.entitylogo.EntityLogo;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
-import org.ourproject.kune.workspace.client.i18n.LanguageSelector;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
-import org.ourproject.kune.workspace.client.tags.TagsSummary;
import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
-import org.ourproject.kune.workspace.client.title.EntitySubTitle;
-import org.ourproject.kune.workspace.client.title.EntityTitle;
import com.calclab.suco.client.ioc.decorator.Singleton;
import com.calclab.suco.client.ioc.module.AbstractModule;
@@ -80,28 +73,14 @@
@Override
public DocumentClientActions create() {
return new DocumentClientActions($(I18nUITranslationService.class), $(ContextNavigator.class),
- $(Session.class), $(StateManager.class), $$(ContentServiceAsync.class),
- $$(GroupServiceAsync.class), $$(FileUploader.class), $(ContentActionRegistry.class),
- $(ContextActionRegistry.class), $$(FileDownloadUtils.class), $(EntityLogo.class),
- $$(TextEditor.class), $(KuneErrorHandler.class), $(DocumentViewer.class),
+ $(Session.class), $(StateManager.class), $(DeferredCommandWrapper.class),
+ $$(ContentServiceAsync.class), $$(GroupServiceAsync.class), $$(FileUploader.class),
+ $(ContentActionRegistry.class), $(ContextActionRegistry.class), $$(FileDownloadUtils.class),
+ $(EntityLogo.class), $$(TextEditor.class), $(KuneErrorHandler.class), $(DocumentViewer.class),
$$(ContextPropEditor.class));
}
});
- register(Singleton.class, new Factory<ContextPropEditor>(ContextPropEditor.class) {
- @Override
- public ContextPropEditor create() {
- final ContextPropEditorPresenter presenter = new ContextPropEditorPresenter($(Session.class),
- $(StateManager.class), $(ContentCapabilitiesRegistry.class), $$(TagsSummary.class),
- $$(ContentServiceAsync.class), $(EntityTitle.class), $(EntitySubTitle.class));
- final ContextPropEditorView view = new ContextPropEditorPanel(presenter,
- $(I18nUITranslationService.class), $(WorkspaceSkeleton.class), $$(LanguageSelector.class),
- $(Images.class));
- presenter.init(view);
- return presenter;
- }
- });
-
register(ToolGroup.class, new Factory<DocumentContext>(DocumentContext.class) {
@Override
public DocumentContext create() {
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewer.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewer.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewer.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -19,12 +19,7 @@
*/
package org.ourproject.kune.docs.client.cnt;
-public interface DocumentViewer {
+import org.ourproject.kune.workspace.client.cnt.FoldableContent;
- void attach();
-
- void detach();
-
- void refreshState();
-
+public interface DocumentViewer extends FoldableContent {
}
Modified: trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/docs/client/cnt/DocumentViewerPresenter.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -50,10 +50,6 @@
this.view = view;
}
- public void refreshState() {
- setState(session.getContentState());
- }
-
@Override
protected void setState(StateContentDTO state) {
super.setState(state);
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/ActionRegistry.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -22,6 +22,8 @@
import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
+import com.allen_sauer.gwt.log.client.Log;
+
public class ActionRegistry<T> {
private static final String GENERIC = "kgenacts";
@@ -36,8 +38,10 @@
}
public void addAction(final ActionDescriptor<T> action, String... typeIds) {
- for (final String contentTypeId : typeIds) {
- final ActionCollection<T> actionColl = getActions(contentTypeId);
+ assert (action != null);
+ for (final String typeId : typeIds) {
+ Log.debug("Registering action '" + action.getText() + "' for " + typeId);
+ final ActionCollection<T> actionColl = getActions(typeId);
actionColl.add(action);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPanel.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionToolbarPanel.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -40,6 +40,8 @@
this.ws = ws;
topbar = new SimpleToolbar();
bottombar = new SimpleToolbar();
+ topbar.setWidth("100%");
+ bottombar.setWidth("100%");
this.actionManagerProvider = actionManagerProvider;
toolbarMenus = new HashMap<String, Menu>();
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -71,6 +71,10 @@
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigatorPanel;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigatorPresenter;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditorPanel;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditorPresenter;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditorView;
import org.ourproject.kune.workspace.client.editor.TextEditor;
import org.ourproject.kune.workspace.client.editor.TextEditorPanel;
import org.ourproject.kune.workspace.client.editor.TextEditorPresenter;
@@ -118,7 +122,9 @@
import org.ourproject.kune.workspace.client.site.rpc.UserServiceAsync;
import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignOutLink;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
+import org.ourproject.kune.workspace.client.tags.TagsSummary;
import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
+import org.ourproject.kune.workspace.client.title.EntitySubTitle;
import org.ourproject.kune.workspace.client.title.EntityTitle;
import com.calclab.suco.client.ioc.decorator.NoDecoration;
@@ -495,6 +501,20 @@
}
});
+ register(Singleton.class, new Factory<ContextPropEditor>(ContextPropEditor.class) {
+ @Override
+ public ContextPropEditor create() {
+ final ContextPropEditorPresenter presenter = new ContextPropEditorPresenter($(Session.class),
+ $(StateManager.class), $(ContentCapabilitiesRegistry.class), $$(TagsSummary.class),
+ $$(ContentServiceAsync.class), $(EntityTitle.class), $(EntitySubTitle.class));
+ final ContextPropEditorView view = new ContextPropEditorPanel(presenter,
+ $(I18nUITranslationService.class), $(WorkspaceSkeleton.class), $$(LanguageSelector.class),
+ $(Images.class));
+ presenter.init(view);
+ return presenter;
+ }
+ });
+
register(Singleton.class, new Factory<FileDownloadUtils>(FileDownloadUtils.class) {
@Override
public FileDownloadUtils create() {
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -182,6 +182,7 @@
}
private Object[][] mapCountries() {
+ assert (initData != null);
final Object[][] objs = new Object[initData.getCountries().size()][1];
int i = 0;
for (I18nCountryDTO country : initData.getCountries()) {
@@ -192,6 +193,7 @@
}
private Object[][] mapLangs() {
+ assert (initData != null);
final Object[][] objs = new Object[initData.getLanguages().size()][1];
int i = 0;
for (I18nLanguageSimpleDTO language : initData.getLanguages()) {
@@ -202,6 +204,7 @@
}
private void mapTimezones() {
+ assert (initData != null);
timezonesArray = new Object[initData.getTimezones().length][1];
for (int i = 0; i < getTimezones().length; i++) {
final Object[] obj = new Object[] { initData.getTimezones()[i] };
Added: trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/AbstractFoldableContentActions.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -0,0 +1,496 @@
+package org.ourproject.kune.workspace.client;
+
+import org.ourproject.kune.platf.client.actions.ActionEnableCondition;
+import org.ourproject.kune.platf.client.actions.ActionMenuItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarButtonDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarButtonSeparator;
+import org.ourproject.kune.platf.client.actions.ActionToolbarMenuAndItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
+import org.ourproject.kune.platf.client.actions.ContentActionRegistry;
+import org.ourproject.kune.platf.client.actions.ContextActionRegistry;
+import org.ourproject.kune.platf.client.dto.AccessRolDTO;
+import org.ourproject.kune.platf.client.dto.BasicMimeTypeDTO;
+import org.ourproject.kune.platf.client.dto.ContentSimpleDTO;
+import org.ourproject.kune.platf.client.dto.ContentStatusDTO;
+import org.ourproject.kune.platf.client.dto.GroupDTO;
+import org.ourproject.kune.platf.client.dto.InitDataDTO;
+import org.ourproject.kune.platf.client.dto.StateContainerDTO;
+import org.ourproject.kune.platf.client.dto.StateContentDTO;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.errors.SessionExpiredException;
+import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
+import org.ourproject.kune.platf.client.rpc.ContentServiceAsync;
+import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
+import org.ourproject.kune.platf.client.services.KuneErrorHandler;
+import org.ourproject.kune.platf.client.state.Session;
+import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
+import org.ourproject.kune.platf.client.ui.upload.FileUploader;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
+import org.ourproject.kune.workspace.client.cnt.FoldableContent;
+import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
+import org.ourproject.kune.workspace.client.cxt.ContextPropEditor;
+import org.ourproject.kune.workspace.client.editor.TextEditor;
+import org.ourproject.kune.workspace.client.entitylogo.EntityLogo;
+import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
+import org.ourproject.kune.workspace.client.site.Site;
+
+import com.calclab.suco.client.ioc.Provider;
+import com.calclab.suco.client.listener.Listener;
+import com.calclab.suco.client.listener.Listener0;
+import com.google.gwt.user.client.rpc.AsyncCallback;
+
+public abstract class AbstractFoldableContentActions {
+
+ protected final Session session;
+ protected final StateManager stateManager;
+ protected final I18nUITranslationService i18n;
+ protected final Provider<ContentServiceAsync> contentServiceProvider;
+ protected final Provider<FileUploader> fileUploaderProvider;
+ protected final ContextNavigator contextNavigator;
+ protected final KuneErrorHandler errorHandler;
+ protected final Provider<GroupServiceAsync> groupServiceProvider;
+ protected final ContentActionRegistry contentActionRegistry;
+ protected final ContextActionRegistry contextActionRegistry;
+ protected final Provider<FileDownloadUtils> fileDownloadProvider;
+ protected final Provider<TextEditor> textEditorProvider;
+ protected final Provider<ContextPropEditor> contextPropEditorProvider;
+ protected final FoldableContent foldableContent;
+ protected final DeferredCommandWrapper deferredCommandWrapper;
+ protected final EntityLogo entityLogo;
+ protected ActionMenuItemDescriptor<StateToken> go;
+ protected ActionToolbarButtonDescriptor<StateToken> goGroupHome;
+ protected ActionToolbarButtonAndItemDescriptor<StateToken> uploadMedia;
+ protected ActionToolbarButtonDescriptor<StateToken> download;
+ protected ActionMenuItemDescriptor<StateToken> downloadCtx;
+ protected ActionToolbarButtonDescriptor<StateToken> translateContent;
+ protected ActionToolbarButtonDescriptor<StateToken> editContent;
+
+ public AbstractFoldableContentActions(Session session, StateManager stateManager, I18nUITranslationService i18n,
+ KuneErrorHandler errorHandler, DeferredCommandWrapper deferredCommandWrapper,
+ Provider<GroupServiceAsync> groupServiceProvider, Provider<ContentServiceAsync> contentServiceProvider,
+ Provider<FileUploader> fileUploaderProvider, ContextNavigator contextNavigator,
+ ContentActionRegistry contentActionRegistry, ContextActionRegistry contextActionRegistry,
+ Provider<FileDownloadUtils> fileDownloadProvider, Provider<TextEditor> textEditorProvider,
+ Provider<ContextPropEditor> contextPropEditorProvider, FoldableContent foldableContent,
+ EntityLogo entityLogo) {
+ this.session = session;
+ this.stateManager = stateManager;
+ this.i18n = i18n;
+ this.errorHandler = errorHandler;
+ this.deferredCommandWrapper = deferredCommandWrapper;
+ this.groupServiceProvider = groupServiceProvider;
+ this.contentServiceProvider = contentServiceProvider;
+ this.fileUploaderProvider = fileUploaderProvider;
+ this.contextNavigator = contextNavigator;
+ this.contentActionRegistry = contentActionRegistry;
+ this.contextActionRegistry = contextActionRegistry;
+ this.fileDownloadProvider = fileDownloadProvider;
+ this.textEditorProvider = textEditorProvider;
+ this.contextPropEditorProvider = contextPropEditorProvider;
+ this.foldableContent = foldableContent;
+ this.entityLogo = entityLogo;
+ createCommonActions();
+ createActions();
+ session.onInitDataReceived(new Listener<InitDataDTO>() {
+ public void onEvent(InitDataDTO parameter) {
+ createCommonPostSessionInitActions();
+ createPostSessionInitActions();
+ }
+ });
+ }
+
+ protected void createActions() {
+ }
+
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createContentRenameAction(String parentMenuTitle,
+ String textDescription) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtn = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ contextNavigator.editItem(stateToken);
+ }
+ });
+ renameCtn.setTextDescription(textDescription);
+ renameCtn.setParentMenuTitle(parentMenuTitle);
+ return renameCtn;
+ }
+
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createDelContainerAction(String text,
+ String parentMenuTitle) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> delContainer = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ Site.info("Sorry, in development");
+ }
+ });
+ delContainer.setParentMenuTitle(parentMenuTitle);
+ delContainer.setTextDescription(i18n.t(text));
+ delContainer.setMustBeConfirmed(true);
+ delContainer.setConfirmationTitle(i18n.t("Please confirm"));
+ delContainer.setConfirmationText(i18n.t("You will delete it and also all its contents. Are you sure?"));
+ return delContainer;
+ }
+
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createDelContentAction(String parentMenuTitle,
+ String textDescription) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> delContent = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ contentServiceProvider.get().delContent(session.getUserHash(), token,
+ new AsyncCallbackSimple<String>() {
+ public void onSuccess(final String result) {
+ final StateToken parent = token.clone().clearDocument();
+ stateManager.gotoToken(parent);
+ }
+ });
+ }
+ });
+ delContent.setParentMenuTitle(parentMenuTitle);
+ delContent.setTextDescription(textDescription);
+ delContent.setMustBeConfirmed(true);
+ delContent.setConfirmationTitle(i18n.t("Please confirm"));
+ delContent.setConfirmationText(i18n.t("Are you sure?"));
+ delContent.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ public boolean mustBeEnabled(final StateToken itemToken) {
+ final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
+ return !itemToken.equals(defContentToken);
+ }
+ });
+ return delContent;
+ }
+
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createDocAction(String iconUrl, final String description,
+ final String typeId) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addDoc = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ Site.showProgressProcessing();
+ contentServiceProvider.get().addContent(session.getUserHash(),
+ session.getCurrentState().getStateToken(), description, typeId,
+ new AsyncCallbackSimple<StateContentDTO>() {
+ public void onSuccess(final StateContentDTO state) {
+ contextNavigator.setEditOnNextStateChange(true);
+ stateManager.setRetrievedState(state);
+ }
+ });
+ }
+ });
+ addDoc.setTextDescription(description);
+ addDoc.setParentMenuTitle(i18n.t("Folder"));
+ addDoc.setParentSubMenuTitle(i18n.t("New"));
+ addDoc.setIconUrl(iconUrl);
+ return addDoc;
+ }
+
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createFolderAction(final String contentTypeId,
+ final String iconUrl, final String textDescription, final String parentMenuTitle,
+ final String parentMenuSubtitle, final String defaultName) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> addFolder;
+ addFolder = new ActionToolbarMenuAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
+ ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ Site.showProgressProcessing();
+ contentServiceProvider.get().addFolder(session.getUserHash(), stateToken, defaultName,
+ contentTypeId, new AsyncCallbackSimple<StateContainerDTO>() {
+ public void onSuccess(final StateContainerDTO state) {
+ contextNavigator.setEditOnNextStateChange(true);
+ stateManager.setRetrievedState(state);
+ }
+ });
+ }
+ });
+ addFolder.setTextDescription(textDescription);
+ addFolder.setParentMenuTitle(parentMenuTitle);
+ addFolder.setParentSubMenuTitle(parentMenuSubtitle);
+ addFolder.setIconUrl(iconUrl);
+ return addFolder;
+ }
+
+ protected void createPostSessionInitActions() {
+ }
+
+ protected ActionToolbarMenuDescriptor<StateToken> createRefreshCntAction(String parentMenuTitle) {
+ final ActionToolbarMenuDescriptor<StateToken> refreshCnt = new ActionToolbarMenuDescriptor<StateToken>(
+ AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ stateManager.reload();
+ contextNavigator.selectItem(stateToken);
+ }
+ });
+ refreshCnt.setMustBeAuthenticated(false);
+ refreshCnt.setParentMenuTitle(parentMenuTitle);
+ refreshCnt.setTextDescription(i18n.t("Refresh"));
+ refreshCnt.setIconUrl("images/nav/refresh.png");
+ return refreshCnt;
+ }
+
+ protected ActionToolbarMenuDescriptor<StateToken> createRefreshCxtAction(String parentMenuTitleCtx) {
+ final ActionToolbarMenuDescriptor<StateToken> refreshCtx = new ActionToolbarMenuDescriptor<StateToken>(
+ AccessRolDTO.Viewer, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ stateManager.reload();
+ contextNavigator.selectItem(stateToken);
+ }
+ });
+ refreshCtx.setMustBeAuthenticated(false);
+ refreshCtx.setParentMenuTitle(parentMenuTitleCtx);
+ refreshCtx.setTextDescription(i18n.t("Refresh"));
+ refreshCtx.setIconUrl("images/nav/refresh.png");
+ return refreshCtx;
+ }
+
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createRenameContentInCtxAction(String parentMenuTitleCtx,
+ String textDescription) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> renameCtx = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Editor, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ contextNavigator.editItem(stateToken);
+ }
+ });
+ renameCtx.setTextDescription(textDescription);
+ renameCtx.setParentMenuTitle(parentMenuTitleCtx);
+ return renameCtx;
+ }
+
+ protected ActionToolbarMenuDescriptor<StateToken> createSetAsDefContent(String parentMenuTitle) {
+ final ActionToolbarMenuDescriptor<StateToken> setAsDefGroupContent;
+ setAsDefGroupContent = new ActionToolbarMenuDescriptor<StateToken>(AccessRolDTO.Administrator,
+ ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ Site.showProgressProcessing();
+ contentServiceProvider.get().setAsDefaultContent(session.getUserHash(), token,
+ new AsyncCallbackSimple<ContentSimpleDTO>() {
+ public void onSuccess(final ContentSimpleDTO defContent) {
+ session.getCurrentState().getGroup().setDefaultContent(defContent);
+ Site.hideProgress();
+ Site.info(i18n.t("Document selected as the group homepage"));
+ }
+ });
+ }
+ });
+ setAsDefGroupContent.setTextDescription(i18n.t("Set this as the group default page"));
+ setAsDefGroupContent.setIconUrl("images/group-home.png");
+ setAsDefGroupContent.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ public boolean mustBeEnabled(final StateToken itemToken) {
+ final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
+ return !itemToken.equals(defContentToken);
+ }
+ });
+ setAsDefGroupContent.setParentMenuTitle(parentMenuTitle);
+ return setAsDefGroupContent;
+ }
+
+ protected ActionToolbarMenuAndItemDescriptor<StateToken> createSetStatusAction(final AccessRolDTO rol,
+ final String textDescription, final ContentStatusDTO status) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> action = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ rol, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ final AsyncCallbackSimple<Object> callback = new AsyncCallbackSimple<Object>() {
+ public void onSuccess(final Object result) {
+ session.getContentState().setStatus(status);
+ contextNavigator.setItemStatus(stateToken, status);
+ }
+ };
+ if (status.equals(ContentStatusDTO.publishedOnline) || status.equals(ContentStatusDTO.rejected)) {
+ contentServiceProvider.get().setStatusAsAdmin(session.getUserHash(), stateToken, status,
+ callback);
+ } else {
+ contentServiceProvider.get().setStatus(session.getUserHash(), stateToken, status, callback);
+ }
+ }
+ });
+ action.setTextDescription(textDescription);
+ action.setParentMenuTitle(i18n.t("File"));
+ action.setParentSubMenuTitle(i18n.t("Change the status"));
+ return action;
+ }
+
+ protected ActionToolbarButtonAndItemDescriptor<StateToken> createUploadAction(final String textDescription,
+ final String iconUrl, final String toolTip, final String permitedExtensions) {
+ final ActionToolbarButtonAndItemDescriptor<StateToken> uploadFile;
+ uploadFile = new ActionToolbarButtonAndItemDescriptor<StateToken>(AccessRolDTO.Editor,
+ ActionToolbarPosition.bottombar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ if (permitedExtensions != null) {
+ // FIXME: can't be reset ...
+ // fileUploaderProvider.get().setPermittedExtensions(permitedExtensions);
+ } else {
+ // FIXME: can't be reset ...
+ // fileUploaderProvider.get().resetPermittedExtensions();
+ }
+ fileUploaderProvider.get().show();
+ }
+ });
+ uploadFile.setTextDescription(textDescription);
+ uploadFile.setIconUrl(iconUrl);
+ uploadFile.setToolTip(toolTip);
+ return uploadFile;
+ }
+
+ protected void downloadContent(final StateToken token) {
+ fileDownloadProvider.get().downloadFile(token);
+ }
+
+ private void createCommonActions() {
+ go = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ stateManager.gotoToken(token);
+ }
+ });
+ go.setMustBeAuthenticated(false);
+ go.setTextDescription(i18n.t("Open"));
+ go.setIconUrl("images/nav/go.png");
+ go.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ public boolean mustBeEnabled(final StateToken itemToken) {
+ return !contextNavigator.isSelected(itemToken);
+ }
+ });
+
+ goGroupHome = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Viewer, ActionToolbarPosition.topbar,
+ new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ stateManager.gotoToken(token.getGroup());
+ }
+ });
+ goGroupHome.setMustBeAuthenticated(false);
+ goGroupHome.setIconUrl("images/group-home.png");
+ goGroupHome.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ public boolean mustBeEnabled(final StateToken itemToken) {
+ final StateToken defContentToken = session.getCurrentState().getGroup().getDefaultContent().getStateToken();
+ return !itemToken.equals(defContentToken);
+ }
+ });
+ goGroupHome.setLeftSeparator(ActionToolbarButtonSeparator.fill);
+
+ download = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Viewer, ActionToolbarPosition.topbar,
+ new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ downloadContent(token);
+ }
+ });
+ download.setMustBeAuthenticated(false);
+ download.setTextDescription(i18n.t("Download"));
+ download.setToolTip(i18n.t("Download this file"));
+ download.setIconUrl("images/nav/download.png");
+
+ downloadCtx = new ActionMenuItemDescriptor<StateToken>(AccessRolDTO.Viewer, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ downloadContent(token);
+ }
+ });
+ downloadCtx.setMustBeAuthenticated(false);
+ downloadCtx.setTextDescription(i18n.t("Download"));
+ downloadCtx.setIconUrl("images/nav/download.png");
+
+ translateContent = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Editor,
+ ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ Site.important(i18n.t("Sorry, this functionality is currently in development"));
+ }
+ });
+ translateContent.setTextDescription(i18n.tWithNT("Translate", "used in button"));
+ translateContent.setToolTip(i18n.t("Translate this document to other languages"));
+ translateContent.setIconUrl("images/language.gif");
+ translateContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
+
+ editContent = new ActionToolbarButtonDescriptor<StateToken>(AccessRolDTO.Editor, ActionToolbarPosition.topbar,
+ new Listener<StateToken>() {
+ public void onEvent(final StateToken stateToken) {
+ session.check(new AsyncCallbackSimple<Object>() {
+ public void onSuccess(final Object result) {
+ final TextEditor editor = textEditorProvider.get();
+ foldableContent.detach();
+ contextNavigator.detach();
+ contextPropEditorProvider.get().attach();
+ editor.editContent(session.getContentState().getContent(), new Listener<String>() {
+ public void onEvent(final String html) {
+ Site.showProgressSaving();
+ contentServiceProvider.get().save(session.getUserHash(), stateToken, html,
+ new AsyncCallback<Object>() {
+ public void onFailure(final Throwable caught) {
+ Site.hideProgress();
+ try {
+ throw caught;
+ } catch (final SessionExpiredException e) {
+ errorHandler.doSessionExpired();
+ } catch (final Throwable e) {
+ Site.error(i18n.t("Error saving document. Retrying..."));
+ errorHandler.process(caught);
+ editor.onSaveFailed();
+ }
+ }
+
+ public void onSuccess(Object param) {
+ Site.hideProgress();
+ session.getContentState().setContent(html);
+ editor.onSaved();
+ }
+ });
+ }
+ }, new Listener0() {
+ public void onEvent() {
+ // onClose
+ deferredCommandWrapper.addCommand(new Listener0() {
+ public void onEvent() {
+ foldableContent.attach();
+ contextPropEditorProvider.get().detach();
+ contextNavigator.attach();
+ if (session.getCurrentStateToken().equals(stateToken)) {
+ foldableContent.refreshState();
+ }
+ }
+ });
+ }
+ });
+ }
+ });
+ }
+ });
+ editContent.setTextDescription(i18n.tWithNT("Edit", "used in button"));
+ editContent.setIconUrl("images/content_edit.png");
+ editContent.setLeftSeparator(ActionToolbarButtonSeparator.spacer);
+
+ }
+
+ private void createCommonPostSessionInitActions() {
+ uploadMedia = createUploadAction(i18n.t("Upload media"), "images/nav/upload.png",
+ i18n.t("Upload some media (images, videos)"), session.getGalleryPermittedExtensions());
+ }
+
+ /**
+ * For future use contentActionRegistry.addAction(setGroupLogo,
+ * TYPE_UPLOADEDFILE);
+ */
+ @SuppressWarnings("unused")
+ private ActionToolbarMenuAndItemDescriptor<StateToken> createSetGroupLogoAction(String parentMenuTitle) {
+ final ActionToolbarMenuAndItemDescriptor<StateToken> setGroupLogo = new ActionToolbarMenuAndItemDescriptor<StateToken>(
+ AccessRolDTO.Administrator, ActionToolbarPosition.topbar, new Listener<StateToken>() {
+ public void onEvent(final StateToken token) {
+ groupServiceProvider.get().setGroupFullLogo(session.getUserHash(), token,
+ new AsyncCallbackSimple<GroupDTO>() {
+ public void onSuccess(GroupDTO newGroup) {
+ Site.info("Logo selected");
+ if (session.getCurrentState().getGroup().getShortName().equals(
+ newGroup.getShortName())) {
+ session.getCurrentState().setGroup(newGroup);
+ }
+ entityLogo.refreshGroupLogo();
+ }
+ });
+ }
+ });
+ setGroupLogo.setParentMenuTitle(parentMenuTitle);
+ setGroupLogo.setTextDescription(i18n.t("Set this as the group logo"));
+ setGroupLogo.setIconUrl("images/nav/picture.png");
+ setGroupLogo.setEnableCondition(new ActionEnableCondition<StateToken>() {
+ public boolean mustBeEnabled(final StateToken itemToken) {
+ final BasicMimeTypeDTO mime = session.getContentState().getMimeType();
+ return mime != null && mime.getType().equals("image");
+ }
+ });
+ return setGroupLogo;
+ }
+}
Added: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContent.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContent.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContent.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -0,0 +1,11 @@
+package org.ourproject.kune.workspace.client.cnt;
+
+public interface FoldableContent {
+
+ void attach();
+
+ void detach();
+
+ void refreshState();
+
+}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cnt/FoldableContentPresenter.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -13,7 +13,7 @@
import com.calclab.suco.client.listener.Listener;
-public abstract class FoldableContentPresenter extends AbstractContentPresenter {
+public abstract class FoldableContentPresenter extends AbstractContentPresenter implements FoldableContent {
private final String toolName;
private final ActionRegistry<StateToken> actionRegistry;
@@ -37,6 +37,10 @@
return toolName;
}
+ public void refreshState() {
+ setState(session.getContentState());
+ }
+
protected void setState(StateAbstractDTO state) {
toolbar.detach();
if (state instanceof StateContainerDTO) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/Toolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/Toolbar.java 2008-11-24 11:49:57 UTC (rev 964)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/Toolbar.java 2008-11-24 18:14:39 UTC (rev 965)
@@ -42,6 +42,10 @@
public void add(final Widget widget) {
childPanel.add(widget);
+ if (widget instanceof SimpleToolbar) {
+ widget.setWidth("100%");
+ childPanel.setCellWidth(widget, "100%");
+ }
doLayoutIfNeeded();
}
1
0
24 Nov '08
Author: vjrj
Date: 2008-11-24 12:49:57 +0100 (Mon, 24 Nov 2008)
New Revision: 964
Modified:
trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java
trunk/src/main/java/org/ourproject/kune/workspace/client/cxt/ContextPropEditorPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java
Log:
Incomplete - task Use of new ActionDescriptionClass in SocialNetwork
SiteSearch adjusts, EntitySummary UI expand fixes
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -178,7 +178,7 @@
}
break;
case yourbuddies:
- if (!userBuddies.contains(userLogged.getShortName())) {
+ if (userLogged != userGroup && !userBuddies.contains(userLogged.getShortName())) {
socialNetData.setIsBuddiesVisible(false);
socialNetData.setUserBuddies(UserBuddiesData.EMPTY);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/cxt/ContextPropEditorPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/cxt/ContextPropEditorPanel.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/cxt/ContextPropEditorPanel.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -35,6 +35,7 @@
import com.calclab.suco.client.ioc.Provider;
import com.google.gwt.user.client.ui.ScrollPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
+import com.gwtext.client.core.EventObject;
import com.gwtext.client.data.Record;
import com.gwtext.client.widgets.form.ComboBox;
import com.gwtext.client.widgets.form.DateField;
@@ -66,9 +67,8 @@
private ContextPropertyPanel aclComponent;
private AccessListsPanel accessListsPanel;
- public ContextPropEditorPanel(final ContextPropEditorPresenter presenter,
- final I18nTranslationService i18n, WorkspaceSkeleton ws, Provider<LanguageSelector> langSelectorProv,
- Images images) {
+ public ContextPropEditorPanel(final ContextPropEditorPresenter presenter, final I18nTranslationService i18n,
+ WorkspaceSkeleton ws, Provider<LanguageSelector> langSelectorProv, Images images) {
this.i18n = i18n;
this.ws = ws;
this.presenter = presenter;
@@ -243,19 +243,24 @@
tagsField = new TextArea();
tagsField.setWidth(FORMS_WIDTH - 10);
tagsField.setHeight("3em");
+ tagsField.setEnterIsSpecial(true);
tagsField.addListener(new FieldListenerAdapter() {
@Override
public void onChange(final Field field, final Object newVal, final Object oldVal) {
presenter.setTags((String) newVal);
}
});
+ tagsField.addListener(new FieldListenerAdapter() {
+ @Override
+ public void onSpecialKey(final Field field, final EventObject e) {
+ if (e.getKey() == 13) {
+ presenter.setTags(tagsField.getRawValue());
+ e.stopEvent();
+ }
+ }
+ });
form.add(tagsField);
return new ContextPropertyPanel(i18n.t("Tags"), i18n.t("Keywords or terms associated with this work"), true,
TAGS_PROP, form);
}
-
- // private void removeComponent(final String header) {
- // options.removeStackItem(header);
- // }
-
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchPanel.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchPanel.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -32,19 +32,21 @@
import com.google.gwt.user.client.ui.Widget;
public class SiteSearchPanel implements SiteSearchView {
- private static final String SEARCH_TEXT_WIDTH_SMALL = "120";
- private static final String SEARCH_TEXT_WIDTH_BIG = "180";
- private static final String SITE_SEARCH_BUTTON = "kune-ssp-bt";
- private static final String SITE_SEARCH_TEXTBOX = "kune-ssp-tb";
+ private static final int SEARCH_TEXT_HEIGHT = 15;
+ private static final int SEARCH_TEXT_WIDTH_SMALL = 120;
+ private static final int SEARCH_TEXT_WIDTH_BIG = 180;
+ public static final String SITE_SEARCH_BUTTON = "kune-ssp-searchbt";
+ public static final String SITE_SEARCH_TEXTBOX = "kune-ssp-tbox";
private final PushButton searchButton;
private final TextBox searchTextBox;
private final I18nUITranslationService i18n;
+ private final SimpleToolbar siteBar;
public SiteSearchPanel(final SiteSearchPresenter presenter, final WorkspaceSkeleton ws,
final I18nUITranslationService i18n, Images img) {
this.i18n = i18n;
- final SimpleToolbar siteBar = ws.getSiteBar();
+ siteBar = ws.getSiteBar();
siteBar.addSpacer();
siteBar.addSpacer();
searchButton = new PushButton(img.kuneSearchIco().createImage(), img.kuneSearchIcoPush().createImage());
@@ -98,6 +100,10 @@
searchTextBox.setText("");
}
+ public void selectSearchText() {
+ searchTextBox.selectAll();
+ }
+
public void setDefaultTextSearch() {
searchTextBox.setText(i18n.t("Search"));
}
@@ -107,10 +113,10 @@
}
public void setTextSearchBig() {
- searchTextBox.setWidth(SEARCH_TEXT_WIDTH_BIG);
+ searchTextBox.setPixelSize(SEARCH_TEXT_WIDTH_BIG, 15);
}
public void setTextSearchSmall() {
- searchTextBox.setWidth(SEARCH_TEXT_WIDTH_SMALL);
+ searchTextBox.setPixelSize(SEARCH_TEXT_WIDTH_SMALL, SEARCH_TEXT_HEIGHT);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchPresenter.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchPresenter.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -34,6 +34,7 @@
public void doSearch(final String termToSearch) {
provider.get().doSearch(termToSearch);
+ view.setTextSearchSmall();
}
public View getView() {
@@ -46,7 +47,7 @@
public void onSearchFocus() {
view.setTextSearchBig();
- view.clearSearchText();
+ view.selectSearchText();
}
public void onSearchLostFocus(final String search) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchView.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/sitebar/sitesearch/SiteSearchView.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -24,6 +24,8 @@
void clearSearchText();
+ void selectSearchText();
+
void setDefaultTextSearch();
void setTextSearchBig();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -72,6 +72,10 @@
childPanel.clear();
}
+ public void setCellWidth(Widget widget, String width) {
+ childPanel.setCellWidth(widget, width);
+ }
+
public void setCleanStyle() {
setStyleName("x-toolbar");
addStyleName("x-panel");
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SummaryPanel.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SummaryPanel.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -53,7 +53,6 @@
public void addInSummary() {
ws.addInSummary(this);
- // this.expand();
doLayoutIfNeeded();
}
@@ -65,6 +64,11 @@
}
@Override
+ public void expand() {
+ super.expand();
+ }
+
+ @Override
public void setVisible(final boolean visible) {
super.setVisible(visible);
doLayoutIfNeeded();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -81,6 +81,7 @@
public void setGroupTags(final TagCloudResultDTO tagCloud) {
setCloud(tagCloud);
+ view.expand();
}
void setState(final StateContainerDTO state) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryView.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryView.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -28,6 +28,8 @@
void clear();
+ void expand();
+
void setTheme(WsTheme oldTheme, WsTheme newTheme);
void setVisible(boolean visible);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java 2008-11-22 19:18:43 UTC (rev 963)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/title/EntityTitlePresenter.java 2008-11-24 11:49:57 UTC (rev 964)
@@ -88,17 +88,22 @@
}
public void setContentDate(final Date publishedOn) {
- String dateFormat = session.getCurrentLanguage().getDateFormat();
- final DateTimeFormat fmt;
- if (dateFormat == null) {
- fmt = DateTimeFormat.getFormat("M/d/yyyy h:mm a");
+ if (publishedOn != null) {
+ String dateFormat = session.getCurrentLanguage().getDateFormat();
+ final DateTimeFormat fmt;
+ if (dateFormat == null) {
+ fmt = DateTimeFormat.getFormat("M/d/yyyy h:mm a");
+ } else {
+ String abrevMonthInEnglish = DateTimeFormat.getFormat("MMM").format(publishedOn);
+ String monthToTranslate = abrevMonthInEnglish + " [%NT abbreviated month]";
+ dateFormat = dateFormat.replaceFirst("MMM", "'" + i18n.t(monthToTranslate) + "'");
+ fmt = DateTimeFormat.getFormat(dateFormat + " h:mm a");
+ }
+ view.setContentDate(i18n.t("Published on: [%s]", fmt.format(publishedOn)));
+ setContentDateVisible(true);
} else {
- String abrevMonthInEnglish = DateTimeFormat.getFormat("MMM").format(publishedOn);
- String monthToTranslate = abrevMonthInEnglish + " [%NT abbreviated month]";
- dateFormat = dateFormat.replaceFirst("MMM", "'" + i18n.t(monthToTranslate) + "'");
- fmt = DateTimeFormat.getFormat(dateFormat + " h:mm a");
+ setContentDateVisible(false);
}
- view.setContentDate(i18n.t("Published on: [%s]", fmt.format(publishedOn)));
}
/**
@@ -164,12 +169,7 @@
setContentTitle(state.getTitle(), state.getContentRights().isEditable()
&& renamableContentRegistry.contains(state.getTypeId()));
Date publishedOn = state.getPublishedOn();
- if (publishedOn != null) {
- setContentDateVisible(true);
- setContentDate(publishedOn);
- } else {
- setContentDateVisible(false);
- }
+ setContentDate(publishedOn);
final String contentTypeIcon = iconsRegistry.getContentTypeIcon(state.getTypeId(), state.getMimeType());
setIcon(contentTypeIcon);
view.setContentTitleVisible(true);
1
0
r963 - in trunk/src/main/java/org/ourproject/kune/workspace/client: skel socialnet tags
by vjrj 22 Nov '08
by vjrj 22 Nov '08
22 Nov '08
Author: vjrj
Date: 2008-11-22 20:18:43 +0100 (Sat, 22 Nov 2008)
New Revision: 963
Modified:
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java
Log:
Complete - task TagSummary not show when empty and we add a tag
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SummaryPanel.java 2008-11-22 16:44:37 UTC (rev 962)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SummaryPanel.java 2008-11-22 19:18:43 UTC (rev 963)
@@ -53,12 +53,14 @@
public void addInSummary() {
ws.addInSummary(this);
- this.expand();
+ // this.expand();
+ doLayoutIfNeeded();
}
public void doLayoutIfNeeded() {
if (super.isRendered()) {
super.doLayout();
+ ws.refreshSummary();
}
}
@@ -66,6 +68,5 @@
public void setVisible(final boolean visible) {
super.setVisible(visible);
doLayoutIfNeeded();
- ws.refreshSummary();
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-22 16:44:37 UTC (rev 962)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-22 19:18:43 UTC (rev 963)
@@ -155,6 +155,7 @@
public void showBuddiesNotVisible() {
flowPanel.add(noBuddiesPublic);
+ super.doLayoutIfNeeded();
}
private void doAction(final ActionItem<UserSimpleDTO> actionItem) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-22 16:44:37 UTC (rev 962)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-22 19:18:43 UTC (rev 963)
@@ -130,6 +130,7 @@
view.show();
} else {
view.showBuddiesNotVisible();
+ view.show();
}
} else {
view.hide();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2008-11-22 16:44:37 UTC (rev 962)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2008-11-22 19:18:43 UTC (rev 963)
@@ -132,6 +132,6 @@
public void showMembersNotVisible() {
noMembersPublic.setVisible(true);
gridMenuPanel.setVisible(false);
+ doLayoutIfNeeded();
}
-
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-22 16:44:37 UTC (rev 962)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-22 19:18:43 UTC (rev 963)
@@ -237,8 +237,8 @@
} else {
view.clear();
view.showMembersNotVisible();
+ view.setVisible(true);
}
}
}
-
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2008-11-22 16:44:37 UTC (rev 962)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2008-11-22 19:18:43 UTC (rev 963)
@@ -77,10 +77,6 @@
this.view = view;
}
- private void hide() {
- view.hide();
- }
-
@SuppressWarnings("unchecked")
private void setState(final StateAbstractDTO state) {
final ParticipationDataDTO participation = state.getParticipation();
@@ -100,9 +96,9 @@
view.addItem(createGridItem(collabCategory, group, rights, unJoinMenuItem));
}
if (numAdmins > 0 || numCollaborators > 0) {
- view.show();
+ view.setVisible(true);
} else {
- hide();
+ view.setVisible(false);
}
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryView.java 2008-11-22 16:44:37 UTC (rev 962)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryView.java 2008-11-22 19:18:43 UTC (rev 963)
@@ -30,10 +30,8 @@
void clear();
- void hide();
-
void setTheme(WsTheme oldTheme, WsTheme newTheme);
- void show();
+ void setVisible(boolean b);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java 2008-11-22 16:44:37 UTC (rev 962)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPanel.java 2008-11-22 19:18:43 UTC (rev 963)
@@ -50,7 +50,7 @@
super.add(vp);
// super.setBorderStylePrimaryName("k-dropdownouter-tags");
flowPanel.addStyleName("kune-Margin-Small-trbl");
- ws.addInSummary(this);
+ addInSummary();
}
public void addTag(final String name, Long count, String style) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java 2008-11-22 16:44:37 UTC (rev 962)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java 2008-11-22 19:18:43 UTC (rev 963)
@@ -86,7 +86,6 @@
void setState(final StateContainerDTO state) {
if (state.getTagCloudResult() != null && state.getTagCloudResult().getTagCountList().size() > 0) {
Log.debug(state.getTagCloudResult().toString());
- view.setVisible(true);
setCloud(state.getTagCloudResult());
} else {
view.setVisible(false);
@@ -104,5 +103,6 @@
int size = Math.round((MINSIZE + (tagCount.getCount() - min) * step));
view.addTag(tagCount.getName(), tagCount.getCount(), "kune-ft" + size + "px");
}
+ view.setVisible(true);
}
}
1
0
Author: vjrj
Date: 2008-11-22 17:44:37 +0100 (Sat, 22 Nov 2008)
New Revision: 962
Added:
trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDataDTO.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkData.java
Removed:
trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java
Modified:
trunk/pom.xml
trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateAbstractDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkService.java
trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkServiceAsync.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/SocialNetworkManager.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/UserManager.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java
trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/UserManagerDefault.java
trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java
trunk/src/main/java/org/ourproject/kune/platf/server/sn/UserBuddiesData.java
trunk/src/main/java/org/ourproject/kune/platf/server/state/StateAbstract.java
trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
trunk/src/main/resources/dozerBeanMapping.xml
trunk/src/test/java/org/ourproject/kune/platf/integration/socialnet/SocialNetworkServiceTest.java
trunk/src/test/java/org/ourproject/kune/platf/server/mapper/MapperTest.java
Log:
Complete - task SocialNet visibility (group members and user buddies are showed to anybody or only to members/buddies or only to admins/you)
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/pom.xml 2008-11-22 16:44:37 UTC (rev 962)
@@ -379,8 +379,8 @@
<version>2.0-beta23</version>
<configuration>
<logLevel>INFO</logLevel>
- <style>PRETTY</style>
- <!-- <style>OBF</style> -->
+ <style>OBF</style>
+ <!-- <style>PRETTY</style> -->
<runTarget>
org.ourproject.kune.app.Kune/Kune.html
</runTarget>
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-22 16:44:37 UTC (rev 962)
@@ -41,4 +41,4 @@
padding: 1px 0px 1px 1px;
text-decoration:none;
}
-*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}
\ No newline at end of file
+*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}.k-text-gray{color:gray;}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-22 16:44:37 UTC (rev 962)
@@ -793,4 +793,8 @@
.k-bsp-buddie td {
padding: 2px 3px 2px 3px;
+}
+
+.k-text-gray {
+ color: gray;
}
\ No newline at end of file
Copied: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDataDTO.java (from rev 961, trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java)
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDataDTO.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -0,0 +1,137 @@
+/*
+ *
+ * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
+ * This file is part of kune.
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Affero General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Affero General Public License for more details.
+ *
+ * You should have received a copy of the GNU Affero General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ */
+package org.ourproject.kune.platf.client.dto;
+
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+public class SocialNetworkDataDTO implements IsSerializable {
+
+ private SocialNetworkVisibilityDTO socialNetworkVisibility;
+ private SocialNetworkDTO groupMembers;
+ private ParticipationDataDTO userParticipation;
+ private UserBuddiesVisibilityDTO userBuddiesVisibility;
+ private UserBuddiesDataDTO userBuddies;
+ private AccessRightsDTO groupRights;
+ private boolean isBuddiesVisible;
+ private boolean isMembersVisible;
+
+ public SocialNetworkDataDTO() {
+ this(null, null, null, null, null, null, false, false);
+ }
+
+ public SocialNetworkDataDTO(SocialNetworkVisibilityDTO socialNetworkVisibility,
+ final SocialNetworkDTO groupMembers, final ParticipationDataDTO userParticipation,
+ UserBuddiesVisibilityDTO userBuddiesVisibility, final UserBuddiesDataDTO userBuddies,
+ AccessRightsDTO groupRights, boolean isBuddiesVisible, boolean isMembersVisible) {
+ this.socialNetworkVisibility = socialNetworkVisibility;
+ this.groupMembers = groupMembers;
+ this.userParticipation = userParticipation;
+ this.userBuddiesVisibility = userBuddiesVisibility;
+ this.userBuddies = userBuddies;
+ this.groupRights = groupRights;
+ this.isBuddiesVisible = isBuddiesVisible;
+ this.isMembersVisible = isMembersVisible;
+ }
+
+ public SocialNetworkDTO getGroupMembers() {
+ return groupMembers;
+ }
+
+ public AccessRightsDTO getGroupRights() {
+ return groupRights;
+ }
+
+ public boolean getIsBuddiesVisible() {
+ return isBuddiesVisible;
+ }
+
+ public boolean getIsMembersVisible() {
+ return isMembersVisible;
+ }
+
+ public SocialNetworkVisibilityDTO getSocialNetworkVisibility() {
+ return socialNetworkVisibility;
+ }
+
+ public UserBuddiesDataDTO getUserBuddies() {
+ return userBuddies;
+ }
+
+ public UserBuddiesVisibilityDTO getUserBuddiesVisibility() {
+ return userBuddiesVisibility;
+ }
+
+ public ParticipationDataDTO getUserParticipation() {
+ return userParticipation;
+ }
+
+ public boolean isBuddiesVisible() {
+ return isBuddiesVisible;
+ }
+
+ public boolean isMembersVisible() {
+ return isMembersVisible;
+ }
+
+ public void setBuddiesVisible(boolean isBuddiesVisible) {
+ this.isBuddiesVisible = isBuddiesVisible;
+ }
+
+ public void setGroupMembers(final SocialNetworkDTO groupMembers) {
+ this.groupMembers = groupMembers;
+ }
+
+ public void setGroupRights(AccessRightsDTO groupRights) {
+ this.groupRights = groupRights;
+ }
+
+ public void setIsBuddiesVisible(boolean isBuddiesVisible) {
+ setBuddiesVisible(isBuddiesVisible);
+ }
+
+ public void setIsMembersVisible(boolean isMembersVisible) {
+ setMembersVisible(isMembersVisible);
+ }
+
+ public void setMembersVisible(boolean isMembersVisible) {
+ this.isMembersVisible = isMembersVisible;
+ }
+
+ public void setSocialNetworkVisibility(SocialNetworkVisibilityDTO socialNetworkVisibilityDTO) {
+ this.socialNetworkVisibility = socialNetworkVisibilityDTO;
+ }
+
+ public void setUserBuddies(UserBuddiesDataDTO userBuddies) {
+ this.userBuddies = userBuddies;
+ }
+
+ public void setUserBuddiesVisibility(UserBuddiesVisibilityDTO userBuddiesVisibilityDTO) {
+ this.userBuddiesVisibility = userBuddiesVisibilityDTO;
+ }
+
+ public void setUserParticipation(final ParticipationDataDTO userParticipation) {
+ this.userParticipation = userParticipation;
+ }
+
+ @Override
+ public String toString() {
+ return "SocialNetworkResultDTO[members: " + groupMembers + "; participation: " + userParticipation + "]";
+ }
+}
Property changes on: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkDataDTO.java
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -1,100 +0,0 @@
-/*
- *
- * Copyright (C) 2007-2008 The kune development team (see CREDITS for details)
- * This file is part of kune.
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Affero General Public License as
- * published by the Free Software Foundation, either version 3 of the
- * License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Affero General Public License for more details.
- *
- * You should have received a copy of the GNU Affero General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- *
- */
-package org.ourproject.kune.platf.client.dto;
-
-import com.google.gwt.user.client.rpc.IsSerializable;
-
-public class SocialNetworkResultDTO implements IsSerializable {
-
- SocialNetworkDTO groupMembers;
- SocialNetworkVisibilityDTO socialNetworkVisibilityDTO;
-
- ParticipationDataDTO userParticipation;
-
- UserBuddiesDataDTO userBuddies;
- UserBuddiesVisibilityDTO userBuddiesVisibilityDTO;
-
- AccessRightsDTO groupRights;
-
- public SocialNetworkResultDTO() {
- this(null, null, null, null);
- }
-
- public SocialNetworkResultDTO(final SocialNetworkDTO groupMembers, final ParticipationDataDTO userParticipation,
- final UserBuddiesDataDTO userBuddies, AccessRightsDTO groupRights) {
- this.groupMembers = groupMembers;
- this.userParticipation = userParticipation;
- this.userBuddies = userBuddies;
- this.groupRights = groupRights;
- }
-
- public SocialNetworkDTO getGroupMembers() {
- return groupMembers;
- }
-
- public AccessRightsDTO getGroupRights() {
- return groupRights;
- }
-
- public SocialNetworkVisibilityDTO getSocialNetworkVisibilityDTO() {
- return socialNetworkVisibilityDTO;
- }
-
- public UserBuddiesDataDTO getUserBuddies() {
- return userBuddies;
- }
-
- public UserBuddiesVisibilityDTO getUserBuddiesVisibilityDTO() {
- return userBuddiesVisibilityDTO;
- }
-
- public ParticipationDataDTO getUserParticipation() {
- return userParticipation;
- }
-
- public void setGroupMembers(final SocialNetworkDTO groupMembers) {
- this.groupMembers = groupMembers;
- }
-
- public void setGroupRights(AccessRightsDTO groupRights) {
- this.groupRights = groupRights;
- }
-
- public void setSocialNetworkVisibilityDTO(SocialNetworkVisibilityDTO socialNetworkVisibilityDTO) {
- this.socialNetworkVisibilityDTO = socialNetworkVisibilityDTO;
- }
-
- public void setUserBuddies(UserBuddiesDataDTO userBuddies) {
- this.userBuddies = userBuddies;
- }
-
- public void setUserBuddiesVisibilityDTO(UserBuddiesVisibilityDTO userBuddiesVisibilityDTO) {
- this.userBuddiesVisibilityDTO = userBuddiesVisibilityDTO;
- }
-
- public void setUserParticipation(final ParticipationDataDTO userParticipation) {
- this.userParticipation = userParticipation;
- }
-
- @Override
- public String toString() {
- return "SocialNetworkResultDTO[members: " + groupMembers + "; participation: " + userParticipation + "]";
- }
-}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -1,5 +1,7 @@
package org.ourproject.kune.platf.client.dto;
-public enum SocialNetworkVisibilityDTO {
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+public enum SocialNetworkVisibilityDTO implements IsSerializable {
anyone, onlymembers, onlyadmins
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateAbstractDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateAbstractDTO.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/StateAbstractDTO.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -27,12 +27,9 @@
private List<String> enabledTools;
private GroupDTO group;
- private SocialNetworkDTO groupMembers;
- private AccessRightsDTO groupRights;
- private ParticipationDataDTO participation;
- private UserBuddiesDataDTO userBuddies;
private StateToken stateToken;
private String title;
+ private SocialNetworkDataDTO socialNetworkData;
public StateAbstractDTO() {
}
@@ -46,17 +43,21 @@
}
public SocialNetworkDTO getGroupMembers() {
- return groupMembers;
+ return socialNetworkData.getGroupMembers();
}
public AccessRightsDTO getGroupRights() {
- return groupRights;
+ return socialNetworkData.getGroupRights();
}
public ParticipationDataDTO getParticipation() {
- return participation;
+ return socialNetworkData.getUserParticipation();
}
+ public SocialNetworkDataDTO getSocialNetworkData() {
+ return socialNetworkData;
+ }
+
public StateToken getStateToken() {
return stateToken;
}
@@ -66,7 +67,7 @@
}
public UserBuddiesDataDTO getUserBuddies() {
- return userBuddies;
+ return socialNetworkData.getUserBuddies();
}
public void setEnabledTools(List<String> enabledTools) {
@@ -77,18 +78,10 @@
this.group = group;
}
- public void setGroupMembers(SocialNetworkDTO groupMembers) {
- this.groupMembers = groupMembers;
+ public void setSocialNetworkData(SocialNetworkDataDTO socialNetworkData) {
+ this.socialNetworkData = socialNetworkData;
}
- public void setGroupRights(AccessRightsDTO groupRights) {
- this.groupRights = groupRights;
- }
-
- public void setParticipation(ParticipationDataDTO participation) {
- this.participation = participation;
- }
-
public void setStateToken(StateToken stateToken) {
this.stateToken = stateToken;
}
@@ -97,10 +90,6 @@
this.title = title;
}
- public void setUserBuddies(UserBuddiesDataDTO userBuddies) {
- this.userBuddies = userBuddies;
- }
-
@Override
public String toString() {
return "StateDTO[" + getStateToken() + "]";
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -1,5 +1,7 @@
package org.ourproject.kune.platf.client.dto;
-public enum UserBuddiesVisibilityDTO {
+import com.google.gwt.user.client.rpc.IsSerializable;
+
+public enum UserBuddiesVisibilityDTO implements IsSerializable {
anyone, yourbuddies, onlyyou
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkService.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkService.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkService.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -20,7 +20,7 @@
package org.ourproject.kune.platf.client.rpc;
import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
-import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.errors.DefaultException;
@@ -28,33 +28,33 @@
public interface SocialNetworkService extends RemoteService {
- SocialNetworkResultDTO acceptJoinGroup(String hash, StateToken groupToken, String groupToAcceptShortName)
+ SocialNetworkDataDTO acceptJoinGroup(String hash, StateToken groupToken, String groupToAcceptShortName)
throws DefaultException;
- SocialNetworkResultDTO addAdminMember(String hash, StateToken groupToken, String groupToAddShortName)
+ SocialNetworkDataDTO addAdminMember(String hash, StateToken groupToken, String groupToAddShortName)
throws DefaultException;
- SocialNetworkResultDTO addCollabMember(String hash, StateToken groupToken, String groupToAddShortName)
+ SocialNetworkDataDTO addCollabMember(String hash, StateToken groupToken, String groupToAddShortName)
throws DefaultException;
- SocialNetworkResultDTO addViewerMember(String hash, StateToken groupToken, String groupToAddShortName)
+ SocialNetworkDataDTO addViewerMember(String hash, StateToken groupToken, String groupToAddShortName)
throws DefaultException;
- SocialNetworkResultDTO deleteMember(String hash, StateToken groupToken, String groupToDeleteShortName)
+ SocialNetworkDataDTO deleteMember(String hash, StateToken groupToken, String groupToDeleteShortName)
throws DefaultException;
- SocialNetworkResultDTO denyJoinGroup(String hash, StateToken groupToken, String groupToDenyShortName)
+ SocialNetworkDataDTO denyJoinGroup(String hash, StateToken groupToken, String groupToDenyShortName)
throws DefaultException;
- SocialNetworkResultDTO getSocialNetwork(String hash, StateToken groupToken) throws DefaultException;
+ SocialNetworkDataDTO getSocialNetwork(String hash, StateToken groupToken) throws DefaultException;
SocialNetworkRequestResult requestJoinGroup(String hash, StateToken groupToken) throws DefaultException;
- SocialNetworkResultDTO setAdminAsCollab(String hash, StateToken groupToken, String groupToSetCollabShortName)
+ SocialNetworkDataDTO setAdminAsCollab(String hash, StateToken groupToken, String groupToSetCollabShortName)
throws DefaultException;
- SocialNetworkResultDTO setCollabAsAdmin(String hash, StateToken groupToken, String groupToSetAdminShortName)
+ SocialNetworkDataDTO setCollabAsAdmin(String hash, StateToken groupToken, String groupToSetAdminShortName)
throws DefaultException;
- SocialNetworkResultDTO unJoinGroup(String hash, StateToken groupToken) throws DefaultException;
+ SocialNetworkDataDTO unJoinGroup(String hash, StateToken groupToken) throws DefaultException;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkServiceAsync.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkServiceAsync.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/SocialNetworkServiceAsync.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -19,7 +19,7 @@
*/
package org.ourproject.kune.platf.client.rpc;
-import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -27,32 +27,32 @@
public interface SocialNetworkServiceAsync {
void acceptJoinGroup(String hash, StateToken groupToken, String groupToAcceptShortName,
- AsyncCallback<SocialNetworkResultDTO> callback);
+ AsyncCallback<SocialNetworkDataDTO> callback);
void addAdminMember(String hash, StateToken groupToken, String groupToAddShortName,
- AsyncCallback<SocialNetworkResultDTO> callback);
+ AsyncCallback<SocialNetworkDataDTO> callback);
void addCollabMember(String hash, StateToken groupToken, String groupToAddShortName,
- AsyncCallback<SocialNetworkResultDTO> callback);
+ AsyncCallback<SocialNetworkDataDTO> callback);
void addViewerMember(String hash, StateToken groupToken, String groupToAddShortName,
- AsyncCallback<SocialNetworkResultDTO> callback);
+ AsyncCallback<SocialNetworkDataDTO> callback);
void deleteMember(String hash, StateToken groupToken, String groupToDeleteShortName,
- AsyncCallback<SocialNetworkResultDTO> callback);
+ AsyncCallback<SocialNetworkDataDTO> callback);
void denyJoinGroup(String hash, StateToken groupToken, String groupToDenyShortName,
- AsyncCallback<SocialNetworkResultDTO> callback);
+ AsyncCallback<SocialNetworkDataDTO> callback);
- void getSocialNetwork(String hash, StateToken groupToken, AsyncCallback<SocialNetworkResultDTO> callback);
+ void getSocialNetwork(String hash, StateToken groupToken, AsyncCallback<SocialNetworkDataDTO> callback);
void requestJoinGroup(String hash, StateToken groupToken, AsyncCallback<?> callback);
void setAdminAsCollab(String hash, StateToken groupToken, String groupToSetCollabShortName,
- AsyncCallback<SocialNetworkResultDTO> callback);
+ AsyncCallback<SocialNetworkDataDTO> callback);
void setCollabAsAdmin(String hash, StateToken groupToken, String groupToSetAdminShortName,
- AsyncCallback<SocialNetworkResultDTO> callback);
+ AsyncCallback<SocialNetworkDataDTO> callback);
- void unJoinGroup(String hash, StateToken groupToken, AsyncCallback<SocialNetworkResultDTO> callback);
+ void unJoinGroup(String hash, StateToken groupToken, AsyncCallback<SocialNetworkDataDTO> callback);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManager.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -20,7 +20,7 @@
package org.ourproject.kune.platf.client.state;
import org.ourproject.kune.platf.client.actions.BeforeActionListener;
-import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.StateAbstractDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
@@ -58,6 +58,6 @@
void setRetrievedState(StateAbstractDTO state);
- void setSocialNetwork(SocialNetworkResultDTO socialNet);
+ void setSocialNetwork(SocialNetworkDataDTO socialNet);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/StateManagerDefault.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -24,12 +24,9 @@
import org.ourproject.kune.platf.client.actions.BeforeActionCollection;
import org.ourproject.kune.platf.client.actions.BeforeActionListener;
import org.ourproject.kune.platf.client.app.HistoryWrapper;
-import org.ourproject.kune.platf.client.dto.ParticipationDataDTO;
-import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
-import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.StateAbstractDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
-import org.ourproject.kune.platf.client.dto.UserBuddiesDataDTO;
import org.ourproject.kune.platf.client.dto.UserInfoDTO;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import org.ourproject.kune.workspace.client.site.Site;
@@ -177,18 +174,13 @@
setState(newState);
}
- public void setSocialNetwork(final SocialNetworkResultDTO socialNet) {
+ public void setSocialNetwork(final SocialNetworkDataDTO socialNet) {
StateAbstractDTO state;
if (session != null && (state = session.getCurrentState()) != null) {
// After a SN operation, usually returns a SocialNetworkResultDTO
// with new SN data and we refresh the state
// to avoid to reload() again the state
- final SocialNetworkDTO groupMembers = socialNet.getGroupMembers();
- final ParticipationDataDTO userParticipation = socialNet.getUserParticipation();
- final UserBuddiesDataDTO userBuddies = socialNet.getUserBuddies();
- state.setGroupMembers(groupMembers);
- state.setParticipation(userParticipation);
- state.setUserBuddies(userBuddies);
+ state.setSocialNetworkData(socialNet);
onSocialNetworkChanged.fire(state);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -29,6 +29,8 @@
@Entity
@Table(name = "social_networks")
public class SocialNetwork {
+ public static final SocialNetwork EMPTY = new SocialNetwork(SocialNetworkVisibility.onlyadmins);
+
@Id
@GeneratedValue
Long id;
@@ -47,6 +49,12 @@
visibility = SocialNetworkVisibility.anyone;
}
+ public SocialNetwork(SocialNetworkVisibility visibility) {
+ accessLists = new AccessLists();
+ pendingCollaborators = new GroupList();
+ this.visibility = visibility;
+ }
+
public void addAdmin(final Group group) {
accessLists.addAdmin(group);
}
Added: trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkData.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkData.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkData.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -0,0 +1,114 @@
+package org.ourproject.kune.platf.server.domain;
+
+import org.ourproject.kune.platf.server.access.AccessRights;
+import org.ourproject.kune.platf.server.sn.ParticipationData;
+import org.ourproject.kune.platf.server.sn.UserBuddiesData;
+
+public class SocialNetworkData {
+ private SocialNetworkVisibility socialNetworkVisibility;
+ private SocialNetwork groupMembers;
+ private ParticipationData userParticipation;
+ private UserBuddiesVisibility userBuddiesVisibility;
+ private UserBuddiesData userBuddies;
+ private AccessRights groupRights;
+ private boolean isBuddiesVisible;
+ private boolean isMembersVisible;
+
+ public SocialNetworkData() {
+ this(null, null, null, null, null, null, false, false);
+ }
+
+ public SocialNetworkData(SocialNetworkVisibility socialNetworkVisibility, SocialNetwork groupMembers,
+ ParticipationData userParticipation, UserBuddiesVisibility userBuddiesVisibility,
+ UserBuddiesData userBuddies, AccessRights groupRights, boolean isBuddiesVisible, boolean isMembersVisible) {
+ this.socialNetworkVisibility = socialNetworkVisibility;
+ this.groupMembers = groupMembers;
+ this.userParticipation = userParticipation;
+ this.userBuddiesVisibility = userBuddiesVisibility;
+ this.userBuddies = userBuddies;
+ this.groupRights = groupRights;
+ this.isBuddiesVisible = isBuddiesVisible;
+ this.isMembersVisible = isMembersVisible;
+ }
+
+ public SocialNetwork getGroupMembers() {
+ return groupMembers;
+ }
+
+ public AccessRights getGroupRights() {
+ return groupRights;
+ }
+
+ public boolean getIsBuddiesVisible() {
+ return isBuddiesVisible;
+ }
+
+ public boolean getIsMembersVisible() {
+ return isMembersVisible;
+ }
+
+ public SocialNetworkVisibility getSocialNetworkVisibility() {
+ return socialNetworkVisibility;
+ }
+
+ public UserBuddiesData getUserBuddies() {
+ return userBuddies;
+ }
+
+ public UserBuddiesVisibility getUserBuddiesVisibility() {
+ return userBuddiesVisibility;
+ }
+
+ public ParticipationData getUserParticipation() {
+ return userParticipation;
+ }
+
+ public boolean isBuddiesVisible() {
+ return isBuddiesVisible;
+ }
+
+ public boolean isMembersVisible() {
+ return isMembersVisible;
+ }
+
+ public void setBuddiesVisible(boolean isBuddiesVisible) {
+ this.isBuddiesVisible = isBuddiesVisible;
+ }
+
+ public void setGroupMembers(SocialNetwork groupMembers) {
+ this.groupMembers = groupMembers;
+ }
+
+ public void setGroupRights(AccessRights groupRights) {
+ this.groupRights = groupRights;
+ }
+
+ public void setIsBuddiesVisible(boolean isBuddiesVisible) {
+ setBuddiesVisible(isBuddiesVisible);
+ }
+
+ public void setIsMembersVisible(boolean isMembersVisible) {
+ setMembersVisible(isMembersVisible);
+ }
+
+ public void setMembersVisible(boolean isMembersVisible) {
+ this.isMembersVisible = isMembersVisible;
+ }
+
+ public void setSocialNetworkVisibility(SocialNetworkVisibility socialNetworkVisibility) {
+ this.socialNetworkVisibility = socialNetworkVisibility;
+ }
+
+ public void setUserBuddies(UserBuddiesData userBuddies) {
+ this.userBuddies = userBuddies;
+ }
+
+ public void setUserBuddiesVisibility(UserBuddiesVisibility userBuddiesVisibility) {
+ this.userBuddiesVisibility = userBuddiesVisibility;
+ }
+
+ public void setUserParticipation(ParticipationData userParticipation) {
+ this.userParticipation = userParticipation;
+ }
+
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/SocialNetworkManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/SocialNetworkManager.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/SocialNetworkManager.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -24,6 +24,7 @@
import org.ourproject.kune.platf.client.errors.DefaultException;
import org.ourproject.kune.platf.server.domain.Group;
import org.ourproject.kune.platf.server.domain.SocialNetwork;
+import org.ourproject.kune.platf.server.domain.SocialNetworkData;
import org.ourproject.kune.platf.server.domain.User;
import org.ourproject.kune.platf.server.sn.ParticipationData;
@@ -45,6 +46,8 @@
SocialNetwork get(User userLogged, Group group) throws DefaultException;
+ SocialNetworkData getSocialNetworkData(User userLogged, Group group);
+
SocialNetworkRequestResult requestToJoin(User user, Group inGroup) throws DefaultException;
void setAdminAsCollab(User userLogged, Group group, Group inGroup) throws DefaultException;
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/UserManager.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/UserManager.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/UserManager.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -50,6 +50,8 @@
*/
User find(Long userId);
+ User findByShortname(String shortName);
+
UserBuddiesData getUserBuddies(String shortName);
User login(String nickOrEmail, String passwd);
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/SocialNetworkManagerDefault.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -31,14 +31,20 @@
import org.ourproject.kune.platf.client.errors.DefaultException;
import org.ourproject.kune.platf.client.errors.LastAdminInGroupException;
import org.ourproject.kune.platf.client.errors.UserMustBeLoggedException;
+import org.ourproject.kune.platf.server.access.AccessRights;
import org.ourproject.kune.platf.server.access.AccessRightsService;
import org.ourproject.kune.platf.server.domain.AdmissionType;
import org.ourproject.kune.platf.server.domain.Group;
import org.ourproject.kune.platf.server.domain.GroupListMode;
import org.ourproject.kune.platf.server.domain.SocialNetwork;
+import org.ourproject.kune.platf.server.domain.SocialNetworkData;
+import org.ourproject.kune.platf.server.domain.SocialNetworkVisibility;
import org.ourproject.kune.platf.server.domain.User;
+import org.ourproject.kune.platf.server.domain.UserBuddiesVisibility;
import org.ourproject.kune.platf.server.manager.SocialNetworkManager;
+import org.ourproject.kune.platf.server.manager.UserManager;
import org.ourproject.kune.platf.server.sn.ParticipationData;
+import org.ourproject.kune.platf.server.sn.UserBuddiesData;
import com.google.inject.Inject;
import com.google.inject.Provider;
@@ -49,13 +55,15 @@
private final Group finder;
private final AccessRightsService accessRightsService;
+ private final UserManager userManager;
@Inject
public SocialNetworkManagerDefault(final Provider<EntityManager> provider, final Group finder,
- final AccessRightsService accessRightsService) {
+ final AccessRightsService accessRightsService, final UserManager userManager) {
super(provider, SocialNetwork.class);
this.finder = finder;
this.accessRightsService = accessRightsService;
+ this.userManager = userManager;
}
public void acceptJoinGroup(final User userLogged, final Group group, final Group inGroup) throws DefaultException,
@@ -147,6 +155,61 @@
return sn;
}
+ public SocialNetworkData getSocialNetworkData(User userLogged, Group group) {
+ SocialNetworkData socialNetData = new SocialNetworkData();
+ socialNetData.setGroupMembers(get(userLogged, group));
+ AccessRights groupRights = accessRightsService.get(userLogged, group.getAccessLists());
+ socialNetData.setGroupRights(groupRights);
+ socialNetData.setUserParticipation(findParticipation(userLogged, group));
+ socialNetData.setGroupMembers(get(userLogged, group));
+ if (group.getGroupType().equals(GroupType.PERSONAL)) {
+ UserBuddiesData userBuddies = userManager.getUserBuddies(group.getShortName());
+ User userGroup = userManager.findByShortname(group.getShortName());
+ socialNetData.setUserBuddies(userBuddies);
+ UserBuddiesVisibility buddiesVisibility = userGroup.getBuddiesVisibility();
+ socialNetData.setIsBuddiesVisible(true);
+ switch (buddiesVisibility) {
+ case anyone:
+ break;
+ case onlyyou:
+ if (userLogged == User.UNKNOWN_USER || !userLogged.getUserGroup().equals(group)) {
+ socialNetData.setIsBuddiesVisible(false);
+ socialNetData.setUserBuddies(UserBuddiesData.EMPTY);
+ }
+ break;
+ case yourbuddies:
+ if (!userBuddies.contains(userLogged.getShortName())) {
+ socialNetData.setIsBuddiesVisible(false);
+ socialNetData.setUserBuddies(UserBuddiesData.EMPTY);
+ }
+ break;
+ }
+ socialNetData.setUserBuddiesVisibility(buddiesVisibility);
+ } else {
+ SocialNetworkVisibility visibility = group.getSocialNetwork().getVisibility();
+ socialNetData.setIsMembersVisible(true);
+ switch (visibility) {
+ case anyone:
+ break;
+ case onlyadmins:
+ if (!groupRights.isAdministrable()) {
+ socialNetData.setIsMembersVisible(false);
+ socialNetData.setGroupMembers(SocialNetwork.EMPTY);
+ }
+ break;
+ case onlymembers:
+ if (!groupRights.isEditable()) {
+ socialNetData.setIsMembersVisible(false);
+ socialNetData.setGroupMembers(SocialNetwork.EMPTY);
+ }
+ break;
+ }
+ socialNetData.setSocialNetworkVisibility(visibility);
+ socialNetData.setUserBuddies(UserBuddiesData.EMPTY);
+ }
+ return socialNetData;
+ }
+
public SocialNetworkRequestResult requestToJoin(final User userLogged, final Group inGroup)
throws DefaultException, UserMustBeLoggedException {
final SocialNetwork sn = inGroup.getSocialNetwork();
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/UserManagerDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/UserManagerDefault.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/manager/impl/UserManagerDefault.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -85,14 +85,18 @@
return userId != null ? super.find(userId) : User.UNKNOWN_USER;
}
- public List<User> getAll() {
- return finder.getAll();
+ public User findByShortname(String shortName) {
+ return finder.getByShortName(shortName);
}
- public User getByShortName(final String shortName) {
+ public User findByShortName(final String shortName) {
return finder.getByShortName(shortName);
}
+ public List<User> getAll() {
+ return finder.getAll();
+ }
+
public UserBuddiesData getUserBuddies(final String shortName) {
// XEP-133 get roster by admin part is not implemented in openfire
// also access to the openfire db is not easy with hibernate (the use of
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -19,32 +19,20 @@
*/
package org.ourproject.kune.platf.server.rpc;
-import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
-import org.ourproject.kune.platf.client.dto.GroupType;
-import org.ourproject.kune.platf.client.dto.ParticipationDataDTO;
-import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
-import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
-import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
-import org.ourproject.kune.platf.client.dto.UserBuddiesDataDTO;
-import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
import org.ourproject.kune.platf.client.errors.DefaultException;
import org.ourproject.kune.platf.client.rpc.SocialNetworkService;
import org.ourproject.kune.platf.server.UserSession;
-import org.ourproject.kune.platf.server.access.AccessRights;
-import org.ourproject.kune.platf.server.access.AccessRightsService;
import org.ourproject.kune.platf.server.access.AccessRol;
import org.ourproject.kune.platf.server.auth.ActionLevel;
import org.ourproject.kune.platf.server.auth.Authenticated;
import org.ourproject.kune.platf.server.auth.Authorizated;
import org.ourproject.kune.platf.server.domain.Group;
-import org.ourproject.kune.platf.server.domain.SocialNetworkVisibility;
import org.ourproject.kune.platf.server.domain.User;
-import org.ourproject.kune.platf.server.domain.UserBuddiesVisibility;
import org.ourproject.kune.platf.server.manager.GroupManager;
import org.ourproject.kune.platf.server.manager.SocialNetworkManager;
-import org.ourproject.kune.platf.server.manager.UserManager;
import org.ourproject.kune.platf.server.mapper.Mapper;
import com.google.inject.Inject;
@@ -60,25 +48,20 @@
private final GroupManager groupManager;
private final SocialNetworkManager socialNetworkManager;
private final Mapper mapper;
- private final UserManager userManager;
- private final AccessRightsService accessRightsService;
@Inject
- public SocialNetworkRPC(final Provider<UserSession> userSessionProvider, final UserManager userManager,
- final GroupManager groupManager, final SocialNetworkManager socialNetworkManager, final Mapper mapper,
- AccessRightsService accessRightsService) {
+ public SocialNetworkRPC(final Provider<UserSession> userSessionProvider, final GroupManager groupManager,
+ final SocialNetworkManager socialNetworkManager, final Mapper mapper) {
this.userSessionProvider = userSessionProvider;
- this.userManager = userManager;
this.groupManager = groupManager;
this.socialNetworkManager = socialNetworkManager;
this.mapper = mapper;
- this.accessRightsService = accessRightsService;
}
@Authenticated
@Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
@Transactional(type = TransactionType.READ_WRITE)
- public SocialNetworkResultDTO acceptJoinGroup(final String hash, final StateToken groupToken,
+ public SocialNetworkDataDTO acceptJoinGroup(final String hash, final StateToken groupToken,
final String groupToAcceptShortName) throws DefaultException {
final UserSession userSession = getUserSession();
final User userLogged = userSession.getUser();
@@ -91,7 +74,7 @@
@Authenticated
@Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
@Transactional(type = TransactionType.READ_WRITE)
- public SocialNetworkResultDTO addAdminMember(final String hash, final StateToken groupToken,
+ public SocialNetworkDataDTO addAdminMember(final String hash, final StateToken groupToken,
final String groupToAddShortName) throws DefaultException {
final UserSession userSession = getUserSession();
final User userLogged = userSession.getUser();
@@ -104,7 +87,7 @@
@Authenticated
@Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
@Transactional(type = TransactionType.READ_WRITE)
- public SocialNetworkResultDTO addCollabMember(final String hash, final StateToken groupToken,
+ public SocialNetworkDataDTO addCollabMember(final String hash, final StateToken groupToken,
final String groupToAddShortName) throws DefaultException {
final UserSession userSession = getUserSession();
final User userLogged = userSession.getUser();
@@ -117,7 +100,7 @@
@Authenticated
@Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
@Transactional(type = TransactionType.READ_WRITE)
- public SocialNetworkResultDTO addViewerMember(final String hash, final StateToken groupToken,
+ public SocialNetworkDataDTO addViewerMember(final String hash, final StateToken groupToken,
final String groupToAddShortName) throws DefaultException {
final UserSession userSession = getUserSession();
final User userLogged = userSession.getUser();
@@ -130,7 +113,7 @@
@Authenticated
@Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
@Transactional(type = TransactionType.READ_WRITE)
- public SocialNetworkResultDTO deleteMember(final String hash, final StateToken groupToken,
+ public SocialNetworkDataDTO deleteMember(final String hash, final StateToken groupToken,
final String groupToDeleleShortName) throws DefaultException {
final UserSession userSession = getUserSession();
final User userLogged = userSession.getUser();
@@ -143,7 +126,7 @@
@Authenticated
@Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
@Transactional(type = TransactionType.READ_WRITE)
- public SocialNetworkResultDTO denyJoinGroup(final String hash, final StateToken groupToken,
+ public SocialNetworkDataDTO denyJoinGroup(final String hash, final StateToken groupToken,
final String groupToDenyShortName) throws DefaultException {
final UserSession userSession = getUserSession();
final User userLogged = userSession.getUser();
@@ -157,7 +140,7 @@
// At least you can access as Viewer to the Group
@Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Viewer)
@Transactional(type = TransactionType.READ_ONLY)
- public SocialNetworkResultDTO getSocialNetwork(final String hash, final StateToken groupToken)
+ public SocialNetworkDataDTO getSocialNetwork(final String hash, final StateToken groupToken)
throws DefaultException {
final UserSession userSession = getUserSession();
final User user = userSession.getUser();
@@ -178,7 +161,7 @@
@Authenticated
@Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
@Transactional(type = TransactionType.READ_WRITE)
- public SocialNetworkResultDTO setAdminAsCollab(final String hash, final StateToken groupToken,
+ public SocialNetworkDataDTO setAdminAsCollab(final String hash, final StateToken groupToken,
final String groupToSetCollabShortName) throws DefaultException {
final UserSession userSession = getUserSession();
final User userLogged = userSession.getUser();
@@ -191,7 +174,7 @@
@Authenticated
@Authorizated(actionLevel = ActionLevel.group, accessRolRequired = AccessRol.Administrator)
@Transactional(type = TransactionType.READ_WRITE)
- public SocialNetworkResultDTO setCollabAsAdmin(final String hash, final StateToken groupToken,
+ public SocialNetworkDataDTO setCollabAsAdmin(final String hash, final StateToken groupToken,
final String groupToSetAdminShortName) throws DefaultException {
final UserSession userSession = getUserSession();
final User userLogged = userSession.getUser();
@@ -203,7 +186,7 @@
@Authenticated
@Transactional(type = TransactionType.READ_WRITE)
- public SocialNetworkResultDTO unJoinGroup(final String hash, final StateToken groupToken) throws DefaultException {
+ public SocialNetworkDataDTO unJoinGroup(final String hash, final StateToken groupToken) throws DefaultException {
final UserSession userSession = getUserSession();
final User userLogged = userSession.getUser();
final Group group = groupManager.findByShortName(groupToken.getGroup());
@@ -211,65 +194,10 @@
return generateResponse(userLogged, group);
}
- private SocialNetworkResultDTO generateResponse(final User userLogged, final Group group) {
- AccessRights groupRights = accessRightsService.get(userLogged, group.getSocialNetwork().getAccessLists());
- if (group.getGroupType().equals(GroupType.PERSONAL)) {
- UserBuddiesDataDTO userBuddies = getUserBuddies(group);
- SocialNetworkResultDTO result = new SocialNetworkResultDTO(getGroupMembers(userLogged, group),
- getParticipation(userLogged, group), userBuddies, mapper.map(groupRights, AccessRightsDTO.class));
- UserBuddiesVisibility buddiesVisibility = userLogged.getBuddiesVisibility();
- switch (buddiesVisibility) {
- case anyone:
- break;
- case onlyyou:
- if (userLogged == null || !userLogged.getUserGroup().equals(group)) {
- result.setUserBuddies(null);
- }
- break;
- case yourbuddies:
- if (!userBuddies.contains(userLogged.getShortName())) {
- result.setUserBuddies(null);
- }
- break;
- }
- result.setUserBuddiesVisibilityDTO(mapper.map(buddiesVisibility, UserBuddiesVisibilityDTO.class));
- return result;
- } else {
- SocialNetworkResultDTO result = new SocialNetworkResultDTO(getGroupMembers(userLogged, group),
- getParticipation(userLogged, group), UserBuddiesDataDTO.NO_BUDDIES, mapper.map(groupRights,
- AccessRightsDTO.class));
- SocialNetworkVisibility visibility = group.getSocialNetwork().getVisibility();
- switch (visibility) {
- case anyone:
- break;
- case onlyadmins:
- if (!groupRights.isAdministrable()) {
- result.setGroupMembers(null);
- }
- break;
- case onlymembers:
- if (!groupRights.isEditable()) {
- result.setGroupMembers(null);
- }
- break;
- }
- result.setSocialNetworkVisibilityDTO(mapper.map(visibility, SocialNetworkVisibilityDTO.class));
- return result;
- }
+ private SocialNetworkDataDTO generateResponse(final User userLogged, final Group group) {
+ return mapper.map(socialNetworkManager.getSocialNetworkData(userLogged, group), SocialNetworkDataDTO.class);
}
- private SocialNetworkDTO getGroupMembers(final User user, final Group group) throws DefaultException {
- return mapper.map(socialNetworkManager.get(user, group), SocialNetworkDTO.class);
- }
-
- private ParticipationDataDTO getParticipation(final User user, final Group group) throws DefaultException {
- return mapper.map(socialNetworkManager.findParticipation(user, group), ParticipationDataDTO.class);
- }
-
- private UserBuddiesDataDTO getUserBuddies(final Group group) {
- return mapper.map(userManager.getUserBuddies(group.getShortName()), UserBuddiesDataDTO.class);
- }
-
private UserSession getUserSession() {
return userSessionProvider.get();
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/sn/UserBuddiesData.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/sn/UserBuddiesData.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/sn/UserBuddiesData.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -25,6 +25,8 @@
public class UserBuddiesData {
+ public static UserBuddiesData EMPTY = new UserBuddiesData();
+
private List<User> buddies;
int otherExternalBuddies;
@@ -33,6 +35,15 @@
buddies = new ArrayList<User>();
}
+ public boolean contains(String shortName) {
+ for (User buddie : buddies) {
+ if (buddie.getShortName().equals(shortName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public List<User> getBuddies() {
return buddies;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/StateAbstract.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/state/StateAbstract.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/state/StateAbstract.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -24,6 +24,7 @@
import org.ourproject.kune.platf.server.access.AccessRights;
import org.ourproject.kune.platf.server.domain.Group;
import org.ourproject.kune.platf.server.domain.SocialNetwork;
+import org.ourproject.kune.platf.server.domain.SocialNetworkData;
import org.ourproject.kune.platf.server.sn.ParticipationData;
import org.ourproject.kune.platf.server.sn.UserBuddiesData;
@@ -31,12 +32,9 @@
private List<String> enabledTools;
private Group group;
- private SocialNetwork groupMembers;
- private AccessRights groupRights;
- private ParticipationData participation;
- private UserBuddiesData userBuddies;
private StateToken stateToken;
private String title;
+ private SocialNetworkData socialNetworkData;
public StateAbstract() {
}
@@ -50,17 +48,21 @@
}
public SocialNetwork getGroupMembers() {
- return groupMembers;
+ return socialNetworkData.getGroupMembers();
}
public AccessRights getGroupRights() {
- return groupRights;
+ return socialNetworkData.getGroupRights();
}
public ParticipationData getParticipation() {
- return participation;
+ return socialNetworkData.getUserParticipation();
}
+ public SocialNetworkData getSocialNetworkData() {
+ return socialNetworkData;
+ }
+
public StateToken getStateToken() {
return stateToken;
}
@@ -70,7 +72,7 @@
}
public UserBuddiesData getUserBuddies() {
- return userBuddies;
+ return socialNetworkData.getUserBuddies();
}
public void setEnabledTools(List<String> enabledTools) {
@@ -81,18 +83,10 @@
this.group = group;
}
- public void setGroupMembers(SocialNetwork groupMembers) {
- this.groupMembers = groupMembers;
+ public void setSocialNetworkData(SocialNetworkData socialNetworkData) {
+ this.socialNetworkData = socialNetworkData;
}
- public void setGroupRights(AccessRights groupRights) {
- this.groupRights = groupRights;
- }
-
- public void setParticipation(ParticipationData participation) {
- this.participation = participation;
- }
-
public void setStateToken(StateToken stateToken) {
this.stateToken = stateToken;
}
@@ -101,10 +95,6 @@
this.title = title;
}
- public void setUserBuddies(UserBuddiesData userBuddies) {
- this.userBuddies = userBuddies;
- }
-
@Override
public String toString() {
return "State[" + getStateToken() + "]";
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/state/StateServiceDefault.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -32,7 +32,6 @@
import org.ourproject.kune.platf.server.manager.GroupManager;
import org.ourproject.kune.platf.server.manager.SocialNetworkManager;
import org.ourproject.kune.platf.server.manager.TagManager;
-import org.ourproject.kune.platf.server.manager.UserManager;
import com.google.inject.Inject;
import com.google.inject.Singleton;
@@ -41,7 +40,6 @@
public class StateServiceDefault implements StateService {
private final AccessRightsService rightsService;
- private final UserManager userManager;
private final SocialNetworkManager socialNetworkManager;
private final GroupManager groupManager;
private final TagManager tagManager;
@@ -49,10 +47,9 @@
private final I18nTranslationService i18n;
@Inject
- public StateServiceDefault(UserManager userManager, GroupManager groupManager,
- SocialNetworkManager socialNetworkManager, ContentManager contentManager, TagManager tagManager,
- AccessRightsService rightsService, I18nTranslationService i18n) {
- this.userManager = userManager;
+ public StateServiceDefault(GroupManager groupManager, SocialNetworkManager socialNetworkManager,
+ ContentManager contentManager, TagManager tagManager, AccessRightsService rightsService,
+ I18nTranslationService i18n) {
this.groupManager = groupManager;
this.socialNetworkManager = socialNetworkManager;
this.contentManager = contentManager;
@@ -115,7 +112,6 @@
assert (group.getGroupType().equals(GroupType.PERSONAL));
StateNoContent state = new StateNoContent();
state.setGroup(group);
- state.setGroupRights(rightsService.get(userLogged, group.getAccessLists()));
state.setEnabledTools(groupManager.findEnabledTools(group.getId()));
setSocialNetwork(state, userLogged, group);
state.setStateToken(group.getStateToken());
@@ -131,7 +127,6 @@
state.setToolName(container.getToolName());
state.setGroup(group);
state.setContainer(container);
- state.setGroupRights(rightsService.get(userLogged, group.getAccessLists()));
state.setContainerRights(rightsService.get(userLogged, container.getAccessLists()));
state.setEnabledTools(groupManager.findEnabledTools(group.getId()));
state.setTagCloudResult(tagManager.getTagCloudResultByGroup(group));
@@ -139,10 +134,6 @@
}
private void setSocialNetwork(StateAbstract state, User userLogged, Group group) {
- state.setGroupMembers(socialNetworkManager.get(userLogged, group));
- state.setParticipation(socialNetworkManager.findParticipation(userLogged, group));
- if (group.getGroupType().equals(GroupType.PERSONAL)) {
- state.setUserBuddies(userManager.getUserBuddies(group.getShortName()));
- }
+ state.setSocialNetworkData(socialNetworkManager.getSocialNetworkData(userLogged, group));
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -27,7 +27,6 @@
import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarView;
import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
-import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.workspace.client.skel.SimpleToolbar;
import org.ourproject.kune.workspace.client.skel.SummaryPanel;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
@@ -54,7 +53,8 @@
VerticalPanel vp = new VerticalPanel();
avatar = new Image();
if (avatarUrl.equals(NOAVATAR)) {
- Images.App.getInstance().personAvatarDef().applyTo(avatar);
+ // Images.App.getInstance().personAvatarDef().applyTo(avatar);
+ avatar.setUrl("images/persons/person2-32.png");
} else {
avatar.setUrl(avatarUrl);
}
@@ -80,12 +80,15 @@
nick.setText(nickName);
}
}
+
+ public static final String NOT_PUBLIC = "The buddies of this user are not public";
private final MenuItemsContainer<UserSimpleDTO> menuItemsContainer;
private final FlowPanel flowPanel;
private final Label otherBuddiesLabel;
private final I18nTranslationService i18n;
private final ActionManager actionManager;
private final SimpleToolbar toolbar;
+ private final Label noBuddiesPublic;
public BuddiesSummaryPanel(final BuddiesSummaryPresenter presenter, final WorkspaceSkeleton ws,
I18nTranslationService i18n, ActionManager actionManager, ActionToolbarView<UserSimpleDTO> actionToolbarView) {
@@ -104,6 +107,9 @@
vp.add(toolbar);
super.add(vp);
addInSummary();
+ noBuddiesPublic = new Label(i18n.t(NOT_PUBLIC));
+ noBuddiesPublic.addStyleName("kune-Margin-7-trbl");
+ noBuddiesPublic.addStyleName("k-text-gray");
}
public void addBuddie(final UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection,
@@ -147,6 +153,10 @@
otherBuddiesLabel.setText(text);
}
+ public void showBuddiesNotVisible() {
+ flowPanel.add(noBuddiesPublic);
+ }
+
private void doAction(final ActionItem<UserSimpleDTO> actionItem) {
actionManager.doAction(actionItem);
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -23,6 +23,7 @@
import org.ourproject.kune.chat.client.ChatEngine;
import org.ourproject.kune.platf.client.View;
import org.ourproject.kune.platf.client.actions.ActionAddCondition;
+import org.ourproject.kune.platf.client.actions.ActionEnableCondition;
import org.ourproject.kune.platf.client.actions.ActionMenuItemDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
@@ -96,7 +97,7 @@
if (state.getGroup().getGroupType().equals(GroupType.PERSONAL)) {
view.clear();
UserBuddiesDataDTO userBuddies = state.getUserBuddies();
- if (userBuddies != UserBuddiesDataDTO.NO_BUDDIES) {
+ if (state.getSocialNetworkData().isBuddiesVisible()) {
List<UserSimpleDTO> buddies = userBuddies.getBuddies();
for (UserSimpleDTO user : buddies) {
String avatarUrl = user.hasLogo() ? fileDownUtilsProvider.get().getLogoImageUrl(
@@ -128,7 +129,7 @@
toolbar.attach();
view.show();
} else {
- view.hide();
+ view.showBuddiesNotVisible();
}
} else {
view.hide();
@@ -136,7 +137,7 @@
}
private void createSetBuddiesVisibilityAction(String textDescription, final UserBuddiesVisibilityDTO visibility) {
- ActionToolbarMenuDescriptor<UserSimpleDTO> showBuddies = new ActionToolbarMenuDescriptor<UserSimpleDTO>(
+ ActionToolbarMenuDescriptor<UserSimpleDTO> buddiesVisibilityAction = new ActionToolbarMenuDescriptor<UserSimpleDTO>(
AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<UserSimpleDTO>() {
public void onEvent(UserSimpleDTO parameter) {
userServiceAsync.get().setBuddiesVisibility(session.getUserHash(),
@@ -148,10 +149,10 @@
});
}
});
- showBuddies.setTextDescription(textDescription);
- showBuddies.setParentMenuTitle(i18n.t("Options"));
- showBuddies.setParentSubMenuTitle(i18n.t("Who can view your buddies list"));
- actionRegistry.addAction(showBuddies);
+ buddiesVisibilityAction.setTextDescription(textDescription);
+ buddiesVisibilityAction.setParentMenuTitle(i18n.t("Options"));
+ buddiesVisibilityAction.setParentSubMenuTitle(i18n.t("Who can view your buddies list"));
+ actionRegistry.addAction(buddiesVisibilityAction);
}
private void registerActions() {
@@ -169,6 +170,11 @@
return !session.getCurrentUserInfo().getShortName().equals(item.getShortName());
}
});
+ addAsBuddie.setEnableCondition(new ActionEnableCondition<UserSimpleDTO>() {
+ public boolean mustBeEnabled(UserSimpleDTO item) {
+ return !session.getCurrentUserInfo().getShortName().equals(item.getShortName());
+ }
+ });
actionRegistry.addAction(addAsBuddie);
final ActionMenuItemDescriptor<UserSimpleDTO> go = new ActionMenuItemDescriptor<UserSimpleDTO>(
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -40,4 +40,6 @@
void setOtherUsers(String text);
void show();
+
+ void showBuddiesNotVisible();
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -36,16 +36,19 @@
import com.calclab.suco.client.listener.Listener;
import com.google.gwt.user.client.Command;
import com.google.gwt.user.client.DeferredCommand;
+import com.google.gwt.user.client.ui.Label;
import com.gwtext.client.widgets.BoxComponent;
import com.gwtext.client.widgets.MessageBox;
import com.gwtext.client.widgets.event.ContainerListenerAdapter;
public class GroupMembersSummaryPanel extends SummaryPanel implements GroupMembersSummaryView {
+ public static final String NOT_PUBLIC = "The members of this group are not public";
// private static final int MAX_HEIGHT = 110;
private final GridMenuPanel<GroupDTO> gridMenuPanel;
private final I18nUITranslationService i18n;
private final GroupMembersSummaryPresenter presenter;
private final SimpleToolbar toolbar;
+ private final Label noMembersPublic;
public GroupMembersSummaryPanel(final GroupMembersSummaryPresenter presenter, final I18nUITranslationService i18n,
final WorkspaceSkeleton ws, ActionToolbarView<StateToken> actionToolbarView) {
@@ -67,6 +70,13 @@
gridMenuPanel.onDoubleClick(go);
gridMenuPanel.getBottomBar().setCls("k-blank-toolbar");
super.add(gridMenuPanel);
+
+ noMembersPublic = new Label(i18n.t(NOT_PUBLIC));
+ noMembersPublic.addStyleName("kune-Margin-7-trbl");
+ noMembersPublic.addStyleName("k-text-gray");
+ noMembersPublic.setVisible(false);
+ super.add(noMembersPublic);
+
toolbar = ((ActionToolbarPanel<StateToken>) actionToolbarView).getToolbar(ActionToolbarPosition.bottombar);
toolbar.setCleanStyle();
super.add(toolbar);
@@ -81,6 +91,7 @@
}
public void addItem(final GridItem<GroupDTO> gridItem) {
+ gridMenuPanel.setVisible(true);
gridMenuPanel.addItem(gridItem);
doLayoutIfNeeded();
}
@@ -89,6 +100,7 @@
public void clear() {
gridMenuPanel.removeAll();
toolbar.removeAll();
+ noMembersPublic.setVisible(false);
doLayoutIfNeeded();
}
@@ -116,4 +128,10 @@
public void setTheme(final WsTheme oldTheme, final WsTheme newTheme) {
// super.setTheme(oldTheme, newTheme);
}
+
+ public void showMembersNotVisible() {
+ noMembersPublic.setVisible(true);
+ gridMenuPanel.setVisible(false);
+ }
+
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -33,7 +33,7 @@
import org.ourproject.kune.platf.client.dto.InitDataDTO;
import org.ourproject.kune.platf.client.dto.LinkDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
-import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO;
import org.ourproject.kune.platf.client.dto.StateAbstractDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
@@ -135,8 +135,8 @@
public void addCollab(final String groupShortName) {
Site.showProgressProcessing();
snServiceProvider.get().addCollabMember(session.getUserHash(), session.getCurrentState().getStateToken(),
- groupShortName, new AsyncCallbackSimple<SocialNetworkResultDTO>() {
- public void onSuccess(final SocialNetworkResultDTO result) {
+ groupShortName, new AsyncCallbackSimple<SocialNetworkDataDTO>() {
+ public void onSuccess(final SocialNetworkDataDTO result) {
Site.hideProgress();
Site.info(i18n.t("Member added as collaborator"));
stateManager.setSocialNetwork(result);
@@ -232,7 +232,12 @@
if (state.getGroup().getGroupType().equals(GroupType.PERSONAL)) {
view.setVisible(false);
} else {
- setGroupMembers(state.getGroupMembers(), state.getGroupRights());
+ if (state.getSocialNetworkData().isMembersVisible()) {
+ setGroupMembers(state.getGroupMembers(), state.getGroupRights());
+ } else {
+ view.clear();
+ view.showMembersNotVisible();
+ }
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryView.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryView.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -36,4 +36,6 @@
void setVisible(boolean visible);
+ void showMembersNotVisible();
+
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/SocialNetworkPresenter.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -28,7 +28,7 @@
import org.ourproject.kune.platf.client.dto.GroupDTO;
import org.ourproject.kune.platf.client.dto.GroupType;
import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
-import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import org.ourproject.kune.platf.client.rpc.SocialNetworkServiceAsync;
@@ -235,8 +235,8 @@
Site.showProgressProcessing();
snServiceProvider.get().setAdminAsCollab(session.getUserHash(),
session.getCurrentState().getStateToken(), group.getShortName(),
- new AsyncCallbackSimple<SocialNetworkResultDTO>() {
- public void onSuccess(final SocialNetworkResultDTO result) {
+ new AsyncCallbackSimple<SocialNetworkDataDTO>() {
+ public void onSuccess(final SocialNetworkDataDTO result) {
Site.hideProgress();
Site.info(i18n.t("Type of member changed"));
stateManager.setSocialNetwork(result);
@@ -250,8 +250,8 @@
Site.showProgressProcessing();
snServiceProvider.get().deleteMember(session.getUserHash(),
session.getCurrentState().getStateToken(), group.getShortName(),
- new AsyncCallbackSimple<SocialNetworkResultDTO>() {
- public void onSuccess(final SocialNetworkResultDTO result) {
+ new AsyncCallbackSimple<SocialNetworkDataDTO>() {
+ public void onSuccess(final SocialNetworkDataDTO result) {
Site.hideProgress();
Site.info(i18n.t("Member removed"));
stateManager.reload();
@@ -273,8 +273,8 @@
Site.showProgressProcessing();
snServiceProvider.get().setCollabAsAdmin(session.getUserHash(),
session.getCurrentState().getStateToken(), group.getShortName(),
- new AsyncCallbackSimple<SocialNetworkResultDTO>() {
- public void onSuccess(final SocialNetworkResultDTO result) {
+ new AsyncCallbackSimple<SocialNetworkDataDTO>() {
+ public void onSuccess(final SocialNetworkDataDTO result) {
Site.hideProgress();
Site.info(i18n.t("Type of member changed"));
stateManager.setSocialNetwork(result);
@@ -288,8 +288,8 @@
Site.showProgressProcessing();
snServiceProvider.get().acceptJoinGroup(session.getUserHash(),
session.getCurrentState().getStateToken(), group.getShortName(),
- new AsyncCallbackSimple<SocialNetworkResultDTO>() {
- public void onSuccess(final SocialNetworkResultDTO result) {
+ new AsyncCallbackSimple<SocialNetworkDataDTO>() {
+ public void onSuccess(final SocialNetworkDataDTO result) {
Site.hideProgress();
Site.info(i18n.t("Member accepted"));
stateManager.setSocialNetwork(result);
@@ -303,8 +303,8 @@
Site.showProgressProcessing();
snServiceProvider.get().denyJoinGroup(session.getUserHash(),
session.getCurrentState().getStateToken(), group.getShortName(),
- new AsyncCallbackSimple<SocialNetworkResultDTO>() {
- public void onSuccess(final SocialNetworkResultDTO result) {
+ new AsyncCallbackSimple<SocialNetworkDataDTO>() {
+ public void onSuccess(final SocialNetworkDataDTO result) {
Site.hideProgress();
Site.info(i18n.t("Member rejected"));
stateManager.setSocialNetwork(result);
@@ -325,8 +325,8 @@
private void removeMemberAction(final GroupDTO groupDTO) {
Site.showProgressProcessing();
snServiceProvider.get().unJoinGroup(session.getUserHash(), new StateToken(groupDTO.getShortName()),
- new AsyncCallbackSimple<SocialNetworkResultDTO>() {
- public void onSuccess(final SocialNetworkResultDTO result) {
+ new AsyncCallbackSimple<SocialNetworkDataDTO>() {
+ public void onSuccess(final SocialNetworkDataDTO result) {
Site.hideProgress();
Site.info(i18n.t("Removed as member"));
stateManager.reload();
Modified: trunk/src/main/resources/dozerBeanMapping.xml
===================================================================
--- trunk/src/main/resources/dozerBeanMapping.xml 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/main/resources/dozerBeanMapping.xml 2008-11-22 16:44:37 UTC (rev 962)
@@ -500,4 +500,13 @@
org.ourproject.kune.platf.server.sn.UserBuddiesData
</class-b>
</mapping>
+
+ <mapping>
+ <class-a>
+ org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO
+ </class-a>
+ <class-b>
+ org.ourproject.kune.platf.server.domain.SocialNetworkData
+ </class-b>
+ </mapping>
</mappings>
\ No newline at end of file
Modified: trunk/src/test/java/org/ourproject/kune/platf/integration/socialnet/SocialNetworkServiceTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/integration/socialnet/SocialNetworkServiceTest.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/test/java/org/ourproject/kune/platf/integration/socialnet/SocialNetworkServiceTest.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -4,7 +4,7 @@
import org.junit.Before;
import org.junit.Test;
-import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.errors.AlreadyUserMemberException;
import org.ourproject.kune.platf.client.errors.UserMustBeLoggedException;
@@ -31,13 +31,13 @@
@Test
public void testGetGroupMembersNotLogged() throws Exception {
- final SocialNetworkResultDTO sn = socialNetworkService.getSocialNetwork(null, groupToken);
+ final SocialNetworkDataDTO sn = socialNetworkService.getSocialNetwork(null, groupToken);
assertNotNull(sn.getGroupMembers());
}
@Test
public void testGetParticipationNotLogged() throws Exception {
- final SocialNetworkResultDTO sn = socialNetworkService.getSocialNetwork(null, groupToken);
+ final SocialNetworkDataDTO sn = socialNetworkService.getSocialNetwork(null, groupToken);
assertNotNull(sn.getUserParticipation());
}
Modified: trunk/src/test/java/org/ourproject/kune/platf/server/mapper/MapperTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/server/mapper/MapperTest.java 2008-11-22 04:29:34 UTC (rev 961)
+++ trunk/src/test/java/org/ourproject/kune/platf/server/mapper/MapperTest.java 2008-11-22 16:44:37 UTC (rev 962)
@@ -18,8 +18,11 @@
import org.ourproject.kune.platf.client.dto.GroupListDTO;
import org.ourproject.kune.platf.client.dto.LicenseDTO;
import org.ourproject.kune.platf.client.dto.LinkDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkDataDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO;
import org.ourproject.kune.platf.client.dto.StateContentDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
import org.ourproject.kune.platf.server.TestDomainHelper;
import org.ourproject.kune.platf.server.TestHelper;
import org.ourproject.kune.platf.server.access.AccessRights;
@@ -32,8 +35,14 @@
import org.ourproject.kune.platf.server.domain.GroupListMode;
import org.ourproject.kune.platf.server.domain.License;
import org.ourproject.kune.platf.server.domain.Revision;
+import org.ourproject.kune.platf.server.domain.SocialNetwork;
+import org.ourproject.kune.platf.server.domain.SocialNetworkData;
+import org.ourproject.kune.platf.server.domain.SocialNetworkVisibility;
import org.ourproject.kune.platf.server.domain.User;
+import org.ourproject.kune.platf.server.domain.UserBuddiesVisibility;
import org.ourproject.kune.platf.server.manager.GroupManager;
+import org.ourproject.kune.platf.server.sn.ParticipationData;
+import org.ourproject.kune.platf.server.sn.UserBuddiesData;
import org.ourproject.kune.platf.server.state.StateContent;
import com.google.inject.Inject;
@@ -230,6 +239,36 @@
}
@Test
+ public void testSnResultMap() {
+ Group group = new Group("test", "this is a test");
+ SocialNetwork sn = new SocialNetwork();
+ sn.addAdmin(group);
+ ParticipationData part = new ParticipationData();
+ part.setGroupsIsAdmin(sn.getAccessLists().getAdmins().getList());
+ UserBuddiesData budData = new UserBuddiesData();
+ ArrayList<User> buddies = new ArrayList<User>();
+ final User user = new User();
+ user.setShortName("usertest");
+ user.setUserGroup(new Group("test2", "this is test2"));
+ buddies.add(user);
+ budData.setBuddies(buddies);
+ SocialNetworkData snResult = new SocialNetworkData(SocialNetworkVisibility.onlymembers, sn, part,
+ UserBuddiesVisibility.onlyyou, budData, new AccessRights(false, false, true), true, true);
+ SocialNetworkDataDTO map = mapper.map(snResult, SocialNetworkDataDTO.class);
+ assertNotNull(map);
+ assertEquals(SocialNetworkVisibilityDTO.onlymembers, map.getSocialNetworkVisibility());
+ assertEquals(UserBuddiesVisibilityDTO.onlyyou, map.getUserBuddiesVisibility());
+ assertEquals("test", map.getGroupMembers().getAccessLists().getAdmins().getList().get(0).getShortName());
+ assertEquals("test", map.getUserParticipation().getGroupsIsAdmin().get(0).getShortName());
+ assertEquals("usertest", map.getUserBuddies().getBuddies().get(0).getShortName());
+ assertFalse(map.getGroupRights().isAdministrable());
+ assertFalse(map.getGroupRights().isEditable());
+ assertTrue(map.getGroupRights().isVisible());
+ assertTrue(map.isMembersVisible());
+ assertTrue(map.isBuddiesVisible());
+ }
+
+ @Test
public void testStateTokenInStateMap() {
final StateToken stateToken = new StateToken(TESTGROUPSHORTNAME, TESTTOOL, "1", "2");
final StateToken stateTokenMapped = mapper.map(stateToken, StateToken.class);
1
0
Author: vjrj
Date: 2008-11-22 05:29:34 +0100 (Sat, 22 Nov 2008)
New Revision: 961
Added:
trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkVisibility.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/UserBuddiesVisibility.java
Modified:
trunk/img/icons/person.svg
trunk/pom.xml
trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesDataDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java
trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java
trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java
trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java
trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java
trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java
trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java
trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
trunk/src/main/resources/dozerBeanMapping.xml
Log:
Incomplete - task SocialNet visibility
Incomplete - task Use of new ActionDescriptionClass in SocialNetwork
Pagination bug in translator and searcher fixed
Modified: trunk/img/icons/person.svg
===================================================================
--- trunk/img/icons/person.svg 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/img/icons/person.svg 2008-11-22 04:29:34 UTC (rev 961)
@@ -687,5 +687,46 @@
id="path2503"
sodipodi:nodetypes="csssc" />
</g>
+ <g
+ id="g2476"
+ transform="translate(12.331755,43.161141)">
+ <rect
+ transform="scale(-1,-1)"
+ y="-21.428276"
+ x="-645.06616"
+ height="55.132187"
+ width="45.132187"
+ id="rect2474"
+ style="opacity:0.8;fill:#f9f9f9;fill-opacity:1;fill-rule:nonzero;stroke:#e6e6e6;stroke-width:0.86781228;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <g
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/dev/kune/trunk/img/icons/persons/person2-32.png"
+ transform="matrix(0.3764923,0,0,0.3764923,460.38508,-48.779868)"
+ id="g2466">
+ <path
+ inkscape:export-ydpi="90"
+ inkscape:export-xdpi="90"
+ inkscape:export-filename="/home/vjrj/proyectos/ourproject.org/kune/svn/trunk/img/group-def-icon.png"
+ sodipodi:type="arc"
+ style="opacity:1;fill:#eeaaff;fill-opacity:1;fill-rule:nonzero;stroke:#954f2c;stroke-width:1.63299322;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ id="path2468"
+ sodipodi:cx="-55.5"
+ sodipodi:cy="242.36218"
+ sodipodi:rx="12.5"
+ sodipodi:ry="12"
+ d="M -43,242.36218 A 12.5,12 0 1 1 -68,242.36218 A 12.5,12 0 1 1 -43,242.36218 z"
+ transform="matrix(3.1844753,0,0,3.3202165,608.65933,-692.76155)" />
+ <path
+ id="path2470"
+ d="M 431.92095,72.158845 C 421.73175,72.158845 411.49371,76.003865 403.72508,83.779605 C 388.30176,99.217125 388.19614,124.14781 403.39336,139.72526 C 401.23073,130.24809 403.98472,119.87609 411.35455,112.49948 C 422.75019,101.09333 441.09171,101.09333 452.48735,112.49948 C 459.85713,119.87609 462.61117,130.24809 460.44854,139.72526 C 475.64581,124.14776 475.54025,99.217125 460.11683,83.779605 C 452.34825,76.003865 442.11016,72.158845 431.92095,72.158845 z"
+ style="fill:#dbdee3;fill-opacity:1;fill-rule:nonzero;stroke:#954f2c;stroke-width:5.30990267;stroke-linecap:butt;stroke-linejoin:round;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate" />
+ <path
+ style="fill:#ff9955;fill-opacity:1;fill-rule:nonzero;stroke:#784421;stroke-width:5.30990171;stroke-linecap:butt;stroke-linejoin:miter;marker:none;marker-start:none;marker-mid:none;marker-end:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1;visibility:visible;display:inline;overflow:visible;enable-background:accumulate"
+ d="M 454.05116,106.46307 C 449.38897,113.33396 426.14686,121.7791 418.78848,114.45323 C 411.51844,107.21527 411.5378,95.415805 418.78848,88.158448 C 426.03916,80.901092 437.80837,80.901094 445.05905,88.158453 C 452.30973,95.415815 449.3126,98.760105 454.05116,106.46307 z"
+ id="path2472"
+ sodipodi:nodetypes="csssc" />
+ </g>
+ </g>
</g>
</svg>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/pom.xml 2008-11-22 04:29:34 UTC (rev 961)
@@ -379,8 +379,8 @@
<version>2.0-beta23</version>
<configuration>
<logLevel>INFO</logLevel>
- <style>OBF</style>
- <!-- <style>PRETTY</style> -->
+ <style>PRETTY</style>
+ <!-- <style>OBF</style> -->
<runTarget>
org.ourproject.kune.app.Kune/Kune.html
</runTarget>
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/all.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/all.css 2008-11-22 04:29:34 UTC (rev 961)
@@ -41,4 +41,4 @@
padding: 1px 0px 1px 1px;
text-decoration:none;
}
-*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}
\ No newline at end of file
+*/.k-textlinethrough{text-decoration:line-through;color:red;}.k-textnormal{text-decoration:inherit;color:green;}.k-textunderline{text-decoration:underline;color:gray;}.x-tool-kmenu{background-position:0 -75px;}.x-tool-kmenu-over{background-position:-15px -75px;}.k-border-openbox{border-bottom:1px #D0D0D0 solid;border-right:1px #D0D0D0 solid;border-left:1px #D0D0D0 solid;}/* SiteToastMessages */.k-stm-info-icon{background-image:url(img/info.gif)!important;}.k-stm-imp-icon{background-image:url(img/alert.gif)!important;}.k-stm-verimp-icon{background-image:url(img/important.gif)!important;}.k-stm-error-icon{background-image:url(img/error.gif)!important;}.k-error-tb{background:#FFB380 none repeat scroll 0 50%;color:#250;}.k-infod-head{font-size:108%;margin-bottom:10px;}.gwt-DisclosurePanel{}.gwt-DisclosurePanel-open{}.gwt-DisclosurePanel-closed{}.gwt-DisclosurePanel .header,.gwt-DisclosurePanel .header a,.gwt-DisclosurePanel .header td{text-decoration:none;/* Remove underline from header */color:#000;cursor:pointer;cursor:hand;}.gwt-DisclosurePanel .content{border-left:3px solid #e8eef7;padding:4px 0 4px 8px;margin-left:6px;}.k-bsp-buddie{background:#FAFAFA none repeat scroll 0 50%;border:1px solid #EBEBEB;padding:3px;margin:3px;}.k-bsp-buddie td{padding:2px 3px;}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css
===================================================================
--- trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/app/public/css/kune-new.css 2008-11-22 04:29:34 UTC (rev 961)
@@ -784,3 +784,13 @@
margin-left: 6px;
}
+.k-bsp-buddie {
+ background: #FAFAFA none repeat scroll 0% 50%;
+ border: 1px solid #EBEBEB;
+ padding: 3px;
+ margin: 3px;
+}
+
+.k-bsp-buddie td {
+ padding: 2px 3px 2px 3px;
+}
\ No newline at end of file
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkResultDTO.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -24,10 +24,12 @@
public class SocialNetworkResultDTO implements IsSerializable {
SocialNetworkDTO groupMembers;
+ SocialNetworkVisibilityDTO socialNetworkVisibilityDTO;
ParticipationDataDTO userParticipation;
UserBuddiesDataDTO userBuddies;
+ UserBuddiesVisibilityDTO userBuddiesVisibilityDTO;
AccessRightsDTO groupRights;
@@ -51,10 +53,18 @@
return groupRights;
}
+ public SocialNetworkVisibilityDTO getSocialNetworkVisibilityDTO() {
+ return socialNetworkVisibilityDTO;
+ }
+
public UserBuddiesDataDTO getUserBuddies() {
return userBuddies;
}
+ public UserBuddiesVisibilityDTO getUserBuddiesVisibilityDTO() {
+ return userBuddiesVisibilityDTO;
+ }
+
public ParticipationDataDTO getUserParticipation() {
return userParticipation;
}
@@ -67,10 +77,18 @@
this.groupRights = groupRights;
}
+ public void setSocialNetworkVisibilityDTO(SocialNetworkVisibilityDTO socialNetworkVisibilityDTO) {
+ this.socialNetworkVisibilityDTO = socialNetworkVisibilityDTO;
+ }
+
public void setUserBuddies(UserBuddiesDataDTO userBuddies) {
this.userBuddies = userBuddies;
}
+ public void setUserBuddiesVisibilityDTO(UserBuddiesVisibilityDTO userBuddiesVisibilityDTO) {
+ this.userBuddiesVisibilityDTO = userBuddiesVisibilityDTO;
+ }
+
public void setUserParticipation(final ParticipationDataDTO userParticipation) {
this.userParticipation = userParticipation;
}
Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/SocialNetworkVisibilityDTO.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.platf.client.dto;
+
+public enum SocialNetworkVisibilityDTO {
+ anyone, onlymembers, onlyadmins
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesDataDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesDataDTO.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesDataDTO.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -35,6 +35,15 @@
otherExternalBuddies = 0;
}
+ public boolean contains(String shortName) {
+ for (UserSimpleDTO buddie : buddies) {
+ if (buddie.getShortName().equals(shortName)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
public List<UserSimpleDTO> getBuddies() {
return buddies;
}
Added: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserBuddiesVisibilityDTO.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.platf.client.dto;
+
+public enum UserBuddiesVisibilityDTO {
+ anyone, yourbuddies, onlyyou
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserSimpleDTO.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -28,6 +28,8 @@
private I18nLanguageDTO language;
private I18nCountryDTO country;
private TimeZoneDTO timezone;
+ private boolean hasLogo;
+ private StateToken stateToken;
public UserSimpleDTO() {
this(null, null, null, null, null);
@@ -72,6 +74,10 @@
return country;
}
+ public boolean getHasLogo() {
+ return hasLogo;
+ }
+
public Long getId() {
return id;
}
@@ -88,6 +94,10 @@
return shortName;
}
+ public StateToken getStateToken() {
+ return stateToken;
+ }
+
public TimeZoneDTO getTimezone() {
return timezone;
}
@@ -101,10 +111,18 @@
return result;
}
+ public boolean hasLogo() {
+ return hasLogo;
+ }
+
public void setCountry(final I18nCountryDTO country) {
this.country = country;
}
+ public void setHasLogo(boolean hasLogo) {
+ this.hasLogo = hasLogo;
+ }
+
public void setId(final Long id) {
this.id = id;
}
@@ -121,10 +139,15 @@
this.shortName = shortName;
}
+ public void setStateToken(StateToken stateToken) {
+ this.stateToken = stateToken;
+ }
+
public void setTimezone(final TimeZoneDTO timezone) {
this.timezone = timezone;
}
+ @Override
public String toString() {
return "UserSimpleDTO(" + shortName + ")";
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupService.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -20,6 +20,7 @@
package org.ourproject.kune.platf.client.rpc;
import org.ourproject.kune.platf.client.dto.GroupDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.errors.DefaultException;
@@ -36,4 +37,6 @@
GroupDTO setGroupFullLogo(String userHash, StateToken token);
+ void setSocialNetworkVisibility(String userHash, StateToken groupToken, SocialNetworkVisibilityDTO visibility);
+
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/rpc/GroupServiceAsync.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -20,6 +20,7 @@
package org.ourproject.kune.platf.client.rpc;
import org.ourproject.kune.platf.client.dto.GroupDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import com.google.gwt.user.client.rpc.AsyncCallback;
@@ -35,4 +36,7 @@
void setGroupFullLogo(String userHash, StateToken token, AsyncCallback<GroupDTO> asyncCallback);
+ void setSocialNetworkVisibility(String userHash, StateToken token, SocialNetworkVisibilityDTO visibility,
+ AsyncCallback<?> asyncCallback);
+
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -335,9 +335,9 @@
public GroupMembersSummary create() {
final GroupMembersSummaryPresenter presenter = new GroupMembersSummaryPresenter(
$(I18nUITranslationService.class), $(StateManager.class), $(ImageUtils.class),
- $(Session.class), $$(SocialNetworkServiceAsync.class), $$(GroupLiveSearcher.class),
- $(WsThemePresenter.class), $$(ChatEngine.class), $(GroupActionRegistry.class),
- $(ActionGroupSummaryToolbar.class));
+ $(Session.class), $$(SocialNetworkServiceAsync.class), $$(GroupServiceAsync.class),
+ $$(GroupLiveSearcher.class), $(WsThemePresenter.class), $$(ChatEngine.class),
+ $(GroupActionRegistry.class), $(ActionGroupSummaryToolbar.class));
final GroupMembersSummaryView view = new GroupMembersSummaryPanel(presenter,
$(I18nUITranslationService.class), $(WorkspaceSkeleton.class), $(
ActionGroupSummaryToolbar.class).getView());
@@ -362,8 +362,9 @@
@Override
public BuddiesSummary create() {
final BuddiesSummaryPresenter presenter = new BuddiesSummaryPresenter($(StateManager.class),
- $(Session.class), $(UserActionRegistry.class), $(I18nTranslationService.class),
- $$(ChatEngine.class), $(ActionBuddiesSummaryToolbar.class));
+ $(Session.class), $$(UserServiceAsync.class), $(UserActionRegistry.class),
+ $(I18nTranslationService.class), $$(ChatEngine.class), $(ActionBuddiesSummaryToolbar.class),
+ $$(FileDownloadUtils.class));
final BuddiesSummaryPanel panel = new BuddiesSummaryPanel(presenter, $(WorkspaceSkeleton.class),
$(I18nTranslationService.class), $(ActionManager.class),
$(ActionBuddiesSummaryToolbar.class).getView());
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/ui/AbstractSearcherPanel.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -64,34 +64,6 @@
grid.setStripeRows(true);
}
- // protected void createPagingToolbar(final Store store, final GridPanel
- // grid) {
- // final PagingToolbar pag = new PagingToolbar(store);
- // pag.setPageSize(PAGINATION_SIZE);
- // pag.setDisplayInfo(true);
- // pag.setDisplayMsg(i18n.tWithNT("Displaying results {0} - {1} of
- // {2}",
- // "Respect {} values in translations, "
- // + "these will produce: 'Displaying results 1 - 25 of 95465' for
- // instance"));
- // pag.setEmptyMsg(i18n.t("No results to display"));
- // pag.setAfterPageText(i18n.tWithNT("of {0}", "Used to show multiple
- // results: '1 of 30'"));
- // pag.setBeforePageText(i18n.t("Page"));
- // pag.setFirstText(i18n.t("First Page"));
- // pag.setLastText(i18n.t("Last Page"));
- // pag.setNextText(i18n.t("Next Page"));
- // pag.setPrevText(i18n.t("Previous Page"));
- // pag.setRefreshText(i18n.t("Refresh"));
- // grid.setBottomToolbar(pag);
- //
- // grid.addListener(new PanelListenerAdapter() {
- // public void onRender(final Component component) {
- // store.load(0, PAGINATION_SIZE);
- // }
- // });
- // }
-
protected Store createStore(final FieldDef[] fieldDefs, final String url, final String id) {
final JsonReader reader = new JsonReader(new RecordDef(fieldDefs));
reader.setRoot("list");
@@ -102,8 +74,7 @@
}
protected void query(final Store store, final GridPanel grid, final String query) {
- final UrlParam[] newParams = new UrlParam[] { new UrlParam("query", query), new UrlParam("start", 0),
- new UrlParam("limit", PAGINATION_SIZE) };
+ final UrlParam[] newParams = new UrlParam[] { new UrlParam("query", query) };
store.setBaseParams(newParams);
store.load(0, PAGINATION_SIZE);
// see bind/unbind in:
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetwork.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -39,9 +39,12 @@
@OneToOne(cascade = CascadeType.ALL)
GroupList pendingCollaborators;
+ SocialNetworkVisibility visibility;
+
public SocialNetwork() {
accessLists = new AccessLists();
pendingCollaborators = new GroupList();
+ visibility = SocialNetworkVisibility.anyone;
}
public void addAdmin(final Group group) {
@@ -72,6 +75,10 @@
return pendingCollaborators;
}
+ public SocialNetworkVisibility getVisibility() {
+ return visibility;
+ }
+
public boolean isAdmin(final Group group) {
return accessLists.getAdmins().includes(group);
}
@@ -116,6 +123,11 @@
this.pendingCollaborators = pendingCollaborators;
}
+ public void setVisibility(SocialNetworkVisibility visibility) {
+ this.visibility = visibility;
+ }
+
+ @Override
public String toString() {
return "SocialNetwork[accessList: " + accessLists + "; pendingsCollabs: " + pendingCollaborators + "]";
}
Added: trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkVisibility.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkVisibility.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/SocialNetworkVisibility.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.platf.server.domain;
+
+public enum SocialNetworkVisibility {
+ anyone, onlymembers, onlyadmins
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/User.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -30,6 +30,7 @@
import javax.persistence.ManyToOne;
import javax.persistence.OneToOne;
import javax.persistence.Table;
+import javax.persistence.Transient;
import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
@@ -40,6 +41,7 @@
import org.hibernate.validator.Length;
import org.hibernate.validator.NotNull;
import org.hibernate.validator.Pattern;
+import org.ourproject.kune.platf.client.dto.StateToken;
import com.google.inject.name.Named;
import com.wideplay.warp.persist.dao.Finder;
@@ -100,6 +102,8 @@
@OneToOne(cascade = CascadeType.ALL)
private final CustomProperties customProperties;
+ private UserBuddiesVisibility buddiesVisibility;
+
public User() {
this(null, null, null, null, null, null, null);
}
@@ -115,6 +119,7 @@
this.country = country;
this.timezone = timezone;
customProperties = new CustomProperties();
+ buddiesVisibility = UserBuddiesVisibility.anyone;
}
@Finder(query = "from User")
@@ -122,6 +127,10 @@
return null;
}
+ public UserBuddiesVisibility getBuddiesVisibility() {
+ return buddiesVisibility;
+ }
+
@Finder(query = "from User where email = :email")
public User getByEmail(@Named("email") final String email) {
return null;
@@ -144,6 +153,10 @@
return email;
}
+ public boolean getHasLogo() {
+ return hasLogo();
+ }
+
public Long getId() {
return id;
}
@@ -164,6 +177,11 @@
return shortName;
}
+ @Transient
+ public StateToken getStateToken() {
+ return userGroup.getStateToken();
+ }
+
public TimeZone getTimezone() {
return timezone;
}
@@ -172,6 +190,15 @@
return userGroup;
}
+ @Transient
+ public boolean hasLogo() {
+ return getUserGroup().hasLogo();
+ }
+
+ public void setBuddiesVisibility(UserBuddiesVisibility buddiesVisibility) {
+ this.buddiesVisibility = buddiesVisibility;
+ }
+
public void setCountry(final I18nCountry country) {
this.country = country;
}
Added: trunk/src/main/java/org/ourproject/kune/platf/server/domain/UserBuddiesVisibility.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/domain/UserBuddiesVisibility.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/domain/UserBuddiesVisibility.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -0,0 +1,5 @@
+package org.ourproject.kune.platf.server.domain;
+
+public enum UserBuddiesVisibility {
+ anyone, yourbuddies, onlyyou
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/GroupRPC.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -20,6 +20,7 @@
package org.ourproject.kune.platf.server.rpc;
import org.ourproject.kune.platf.client.dto.GroupDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.errors.DefaultException;
import org.ourproject.kune.platf.client.rpc.GroupService;
@@ -32,6 +33,7 @@
import org.ourproject.kune.platf.server.content.ContentUtils;
import org.ourproject.kune.platf.server.domain.Content;
import org.ourproject.kune.platf.server.domain.Group;
+import org.ourproject.kune.platf.server.domain.SocialNetworkVisibility;
import org.ourproject.kune.platf.server.domain.User;
import org.ourproject.kune.platf.server.manager.GroupManager;
import org.ourproject.kune.platf.server.mapper.Mapper;
@@ -67,7 +69,7 @@
final User user = userSession.getUser();
final Group group = groupManager.findByShortName(groupToken.getGroup());
groupManager.changeWsTheme(user, group, theme);
- }
+ };
@Authenticated
@Transactional(type = TransactionType.READ_WRITE, rollbackOn = DefaultException.class)
@@ -100,6 +102,15 @@
return mapper.map(group, GroupDTO.class);
}
+ @Authenticated(mandatory = true)
+ @Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group)
+ @Transactional(type = TransactionType.READ_WRITE)
+ public void setSocialNetworkVisibility(final String userHash, StateToken token,
+ SocialNetworkVisibilityDTO visibility) {
+ final Group group = groupManager.findByShortName(token.getGroup());
+ group.getSocialNetwork().setVisibility(SocialNetworkVisibility.valueOf(visibility.toString()));
+ }
+
private UserSession getUserSession() {
return userSessionProvider.get();
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/SocialNetworkRPC.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -25,8 +25,10 @@
import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkRequestResult;
import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.dto.UserBuddiesDataDTO;
+import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
import org.ourproject.kune.platf.client.errors.DefaultException;
import org.ourproject.kune.platf.client.rpc.SocialNetworkService;
import org.ourproject.kune.platf.server.UserSession;
@@ -37,7 +39,9 @@
import org.ourproject.kune.platf.server.auth.Authenticated;
import org.ourproject.kune.platf.server.auth.Authorizated;
import org.ourproject.kune.platf.server.domain.Group;
+import org.ourproject.kune.platf.server.domain.SocialNetworkVisibility;
import org.ourproject.kune.platf.server.domain.User;
+import org.ourproject.kune.platf.server.domain.UserBuddiesVisibility;
import org.ourproject.kune.platf.server.manager.GroupManager;
import org.ourproject.kune.platf.server.manager.SocialNetworkManager;
import org.ourproject.kune.platf.server.manager.UserManager;
@@ -210,11 +214,47 @@
private SocialNetworkResultDTO generateResponse(final User userLogged, final Group group) {
AccessRights groupRights = accessRightsService.get(userLogged, group.getSocialNetwork().getAccessLists());
if (group.getGroupType().equals(GroupType.PERSONAL)) {
- return new SocialNetworkResultDTO(getGroupMembers(userLogged, group), getParticipation(userLogged, group),
- getUserBuddies(group), mapper.map(groupRights, AccessRightsDTO.class));
+ UserBuddiesDataDTO userBuddies = getUserBuddies(group);
+ SocialNetworkResultDTO result = new SocialNetworkResultDTO(getGroupMembers(userLogged, group),
+ getParticipation(userLogged, group), userBuddies, mapper.map(groupRights, AccessRightsDTO.class));
+ UserBuddiesVisibility buddiesVisibility = userLogged.getBuddiesVisibility();
+ switch (buddiesVisibility) {
+ case anyone:
+ break;
+ case onlyyou:
+ if (userLogged == null || !userLogged.getUserGroup().equals(group)) {
+ result.setUserBuddies(null);
+ }
+ break;
+ case yourbuddies:
+ if (!userBuddies.contains(userLogged.getShortName())) {
+ result.setUserBuddies(null);
+ }
+ break;
+ }
+ result.setUserBuddiesVisibilityDTO(mapper.map(buddiesVisibility, UserBuddiesVisibilityDTO.class));
+ return result;
} else {
- return new SocialNetworkResultDTO(getGroupMembers(userLogged, group), getParticipation(userLogged, group),
- UserBuddiesDataDTO.NO_BUDDIES, mapper.map(groupRights, AccessRightsDTO.class));
+ SocialNetworkResultDTO result = new SocialNetworkResultDTO(getGroupMembers(userLogged, group),
+ getParticipation(userLogged, group), UserBuddiesDataDTO.NO_BUDDIES, mapper.map(groupRights,
+ AccessRightsDTO.class));
+ SocialNetworkVisibility visibility = group.getSocialNetwork().getVisibility();
+ switch (visibility) {
+ case anyone:
+ break;
+ case onlyadmins:
+ if (!groupRights.isAdministrable()) {
+ result.setGroupMembers(null);
+ }
+ break;
+ case onlymembers:
+ if (!groupRights.isEditable()) {
+ result.setGroupMembers(null);
+ }
+ break;
+ }
+ result.setSocialNetworkVisibilityDTO(mapper.map(visibility, SocialNetworkVisibilityDTO.class));
+ return result;
}
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/rpc/UserRPC.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -21,14 +21,21 @@
import java.util.UUID;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
import org.ourproject.kune.platf.client.dto.UserDTO;
import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.errors.AccessViolationException;
import org.ourproject.kune.platf.client.errors.DefaultException;
import org.ourproject.kune.platf.client.errors.UserAuthException;
import org.ourproject.kune.platf.server.UserSession;
+import org.ourproject.kune.platf.server.access.AccessRol;
+import org.ourproject.kune.platf.server.auth.ActionLevel;
import org.ourproject.kune.platf.server.auth.Authenticated;
+import org.ourproject.kune.platf.server.auth.Authorizated;
import org.ourproject.kune.platf.server.auth.SessionService;
import org.ourproject.kune.platf.server.domain.User;
+import org.ourproject.kune.platf.server.domain.UserBuddiesVisibility;
import org.ourproject.kune.platf.server.manager.GroupManager;
import org.ourproject.kune.platf.server.manager.UserManager;
import org.ourproject.kune.platf.server.mapper.Mapper;
@@ -102,6 +109,18 @@
final UserSession userSession = getUserSession();
final User user = userSession.getUser();
return loadUserInfo(user);
+ }
+
+ @Authenticated(mandatory = true)
+ @Authorizated(accessRolRequired = AccessRol.Administrator, actionLevel = ActionLevel.group)
+ @Transactional(type = TransactionType.READ_WRITE)
+ public void setBuddiesVisibility(final String userHash, StateToken groupToken, UserBuddiesVisibilityDTO visibility) {
+ final UserSession userSession = getUserSession();
+ final User user = userSession.getUser();
+ if (groupToken.getGroup() != user.getShortName()) {
+ new AccessViolationException();
+ }
+ user.setBuddiesVisibility(UserBuddiesVisibility.valueOf(visibility.toString()));
};
private UserSession getUserSession() {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/entitylogo/EntityLogoPanel.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -194,7 +194,6 @@
public void setChangeYourLogoText() {
getEntityTextLogo().setChangeYourLogo();
-
}
public void setFullLogo(final StateToken stateToken, final boolean clipped) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/i18n/I18nTranslatorPanel.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -246,30 +246,7 @@
180, store, columnModel);
createPagingToolbar(store, grid);
- // final PagingToolbar pag = new PagingToolbar(store);
- // pag.setPageSize(PAGINATION_SIZE);
- // pag.setDisplayInfo(true);
- // pag.setDisplayMsg(i18n.tWithNT("Displaying results {0} - {1} of
- // {2}",
- // "Respect {} values in translations, "
- // + "these will produce: 'Displaying results 1 - 25 of 95465' for
- // instance"));
- // pag.setEmptyMsg(i18n.t("No results to display"));
- // pag.setAfterPageText(i18n.tWithNT("of {0}", "Used to show
- // multiple results: '1 of 30'"));
- // pag.setBeforePageText(i18n.t("Page"));
- // pag.setFirstText(i18n.t("First Page"));
- // pag.setLastText(i18n.t("Last Page"));
- // pag.setNextText(i18n.t("Next Page"));
- // pag.setPrevText(i18n.t("Previous Page"));
- // pag.setRefreshText(i18n.t("Refresh"));
- // grid.setBottomToolbar(pag);
- // grid.setLoadMask(true);
- // grid.setLoadMask(i18n.t("Loading"));
grid.setClicksToEdit(1);
- // grid.setStripeRows(true);
- // grid.setFrame(true);
- // grid.setSelectionModel(new RowSelectionModel());
grid.addEditorGridListener(new EditorGridListenerAdapter() {
@Override
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserService.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -19,6 +19,8 @@
*/
package org.ourproject.kune.workspace.client.site.rpc;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
import org.ourproject.kune.platf.client.dto.UserDTO;
import org.ourproject.kune.platf.client.dto.UserInfoDTO;
import org.ourproject.kune.platf.client.errors.DefaultException;
@@ -36,4 +38,7 @@
void onlyCheckSession(String userHash) throws DefaultException;
UserInfoDTO reloadUserInfo(String userHash) throws DefaultException;
+
+ void setBuddiesVisibility(String userHash, StateToken groupToken, UserBuddiesVisibilityDTO visibility);
+
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/site/rpc/UserServiceAsync.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -19,6 +19,8 @@
*/
package org.ourproject.kune.workspace.client.site.rpc;
+import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
import org.ourproject.kune.platf.client.dto.UserDTO;
import org.ourproject.kune.platf.client.dto.UserInfoDTO;
@@ -28,12 +30,15 @@
void createUser(UserDTO user, boolean wantPersonalHomepage, AsyncCallback<UserInfoDTO> asyncCallback);
- void login(String nickOrEmail, String passwd, AsyncCallback<UserInfoDTO> callback);
+ void login(String nickOrEmail, String passwd, AsyncCallback<UserInfoDTO> asyncCallback);
- void logout(String userHash, AsyncCallback<?> callback);
+ void logout(String userHash, AsyncCallback<?> asyncCallback);
void onlyCheckSession(String userHash, AsyncCallback<?> asyncCallback);
void reloadUserInfo(String userHash, AsyncCallback<UserInfoDTO> asyncCallback);
+ void setBuddiesVisibility(String userHash, StateToken groupToken, UserBuddiesVisibilityDTO visibility,
+ AsyncCallback<?> asyncCallback);
+
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -27,6 +27,7 @@
import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarView;
import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.platf.client.services.Images;
import org.ourproject.kune.workspace.client.skel.SimpleToolbar;
import org.ourproject.kune.workspace.client.skel.SummaryPanel;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
@@ -44,27 +45,35 @@
public class BuddiesSummaryPanel extends SummaryPanel implements BuddiesSummaryView {
public class BuddieWidget extends Composite {
- private final Image icon;
+ private final Image avatar;
private final Label nick;
- public BuddieWidget(String nickName, ClickListener clickListener) {
+ public BuddieWidget(String nickName, String avatarUrl, ClickListener clickListener) {
// For Drag& drop, see gwt-ext-ux image:
// http://www.gwt-ext.com:8080/demo-ux/#imageDDSample
VerticalPanel vp = new VerticalPanel();
- icon = new Image("images/persons/person2-32.png");
+ avatar = new Image();
+ if (avatarUrl.equals(NOAVATAR)) {
+ Images.App.getInstance().personAvatarDef().applyTo(avatar);
+ } else {
+ avatar.setUrl(avatarUrl);
+ }
+ avatar.setPixelSize(AVATARSIZE, AVATARSIZE);
nick = new Label(nickName);
- vp.add(icon);
+ vp.add(avatar);
vp.add(nick);
+ vp.addStyleName("k-bsp-buddie");
vp.addStyleName("kune-Margin-Small-trbl");
vp.addStyleName("kune-pointer");
vp.addStyleName("kune-floatleft");
nick.addClickListener(clickListener);
- icon.addClickListener(clickListener);
+ vp.setCellHorizontalAlignment(nick, VerticalPanel.ALIGN_CENTER);
+ avatar.addClickListener(clickListener);
initWidget(vp);
}
- public void setIcon(String url) {
- icon.setUrl(url);
+ public void setAvatarUrl(String url) {
+ avatar.setUrl(url);
}
public void setNick(String nickName) {
@@ -97,7 +106,8 @@
addInSummary();
}
- public void addBuddie(final UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection) {
+ public void addBuddie(final UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection,
+ String avatarUrl) {
ClickListener listener = new ClickListener() {
public void onClick(Widget sender) {
Menu menu = menuItemsContainer.get(user.getShortName());
@@ -112,7 +122,8 @@
doAction(actionItem);
}
});
- flowPanel.add(new BuddieWidget(user.getShortName(), listener));
+
+ flowPanel.add(new BuddieWidget(user.getShortName(), avatarUrl, listener));
}
@Override
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -34,11 +34,15 @@
import org.ourproject.kune.platf.client.dto.GroupType;
import org.ourproject.kune.platf.client.dto.StateAbstractDTO;
import org.ourproject.kune.platf.client.dto.UserBuddiesDataDTO;
+import org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO;
import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
+import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.workspace.client.site.Site;
+import org.ourproject.kune.workspace.client.site.rpc.UserServiceAsync;
import com.calclab.suco.client.ioc.Provider;
import com.calclab.suco.client.listener.Listener;
@@ -52,16 +56,21 @@
private final Provider<ChatEngine> chatEngineProvider;
private final Session session;
private final ActionBuddiesSummaryToolbar toolbar;
+ private final Provider<UserServiceAsync> userServiceAsync;
+ private final Provider<FileDownloadUtils> fileDownUtilsProvider;
- public BuddiesSummaryPresenter(StateManager stateManager, final Session session, UserActionRegistry actionRegistry,
+ public BuddiesSummaryPresenter(StateManager stateManager, final Session session,
+ Provider<UserServiceAsync> userServiceAsync, UserActionRegistry actionRegistry,
I18nTranslationService i18n, final Provider<ChatEngine> chatEngineProvider,
- final ActionBuddiesSummaryToolbar toolbar) {
+ final ActionBuddiesSummaryToolbar toolbar, Provider<FileDownloadUtils> fileDownUtilsProvider) {
this.stateManager = stateManager;
this.session = session;
+ this.userServiceAsync = userServiceAsync;
this.actionRegistry = actionRegistry;
this.i18n = i18n;
this.chatEngineProvider = chatEngineProvider;
this.toolbar = toolbar;
+ this.fileDownUtilsProvider = fileDownUtilsProvider;
stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
public void onEvent(StateAbstractDTO state) {
setState(state);
@@ -90,8 +99,10 @@
if (userBuddies != UserBuddiesDataDTO.NO_BUDDIES) {
List<UserSimpleDTO> buddies = userBuddies.getBuddies();
for (UserSimpleDTO user : buddies) {
+ String avatarUrl = user.hasLogo() ? fileDownUtilsProvider.get().getLogoImageUrl(
+ user.getStateToken()) : BuddiesSummaryView.NOAVATAR;
view.addBuddie(user, actionRegistry.getCurrentActions(user, session.isLogged(),
- new AccessRightsDTO(true, true, true), false));
+ new AccessRightsDTO(true, true, true), false), avatarUrl);
}
boolean hasLocalBuddies = buddies.size() > 0;
int numExtBuddies = userBuddies.getOtherExternalBuddies();
@@ -124,11 +135,17 @@
}
}
- private void createShowAction(String textDescription) {
+ private void createSetBuddiesVisibilityAction(String textDescription, final UserBuddiesVisibilityDTO visibility) {
ActionToolbarMenuDescriptor<UserSimpleDTO> showBuddies = new ActionToolbarMenuDescriptor<UserSimpleDTO>(
AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<UserSimpleDTO>() {
public void onEvent(UserSimpleDTO parameter) {
- Site.info("In development");
+ userServiceAsync.get().setBuddiesVisibility(session.getUserHash(),
+ session.getCurrentState().getGroup().getStateToken(), visibility,
+ new AsyncCallbackSimple<Object>() {
+ public void onSuccess(Object result) {
+ Site.info(i18n.t("Buddies visibility changed"));
+ }
+ });
}
});
showBuddies.setTextDescription(textDescription);
@@ -165,9 +182,9 @@
go.setIconUrl("images/group-home.gif");
actionRegistry.addAction(go);
- createShowAction(i18n.t("anyone"));
- createShowAction(i18n.t("only your buddies"));
- createShowAction(i18n.t("only you"));
+ createSetBuddiesVisibilityAction(i18n.t("anyone"), UserBuddiesVisibilityDTO.anyone);
+ createSetBuddiesVisibilityAction(i18n.t("only your buddies"), UserBuddiesVisibilityDTO.yourbuddies);
+ createSetBuddiesVisibilityAction(i18n.t("only you"), UserBuddiesVisibilityDTO.onlyyou);
}
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryView.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -24,8 +24,11 @@
public interface BuddiesSummaryView extends View {
- void addBuddie(UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection);
+ String NOAVATAR = "";
+ int AVATARSIZE = 32;
+ void addBuddie(UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection, String avatarUrl);
+
void clear();
void clearOtherUsers();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-22 04:29:34 UTC (rev 961)
@@ -34,9 +34,11 @@
import org.ourproject.kune.platf.client.dto.LinkDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkDTO;
import org.ourproject.kune.platf.client.dto.SocialNetworkResultDTO;
+import org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO;
import org.ourproject.kune.platf.client.dto.StateAbstractDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
+import org.ourproject.kune.platf.client.rpc.GroupServiceAsync;
import org.ourproject.kune.platf.client.rpc.SocialNetworkServiceAsync;
import org.ourproject.kune.platf.client.services.ImageDescriptor;
import org.ourproject.kune.platf.client.services.ImageUtils;
@@ -67,10 +69,12 @@
private final StateManager stateManager;
private final GroupActionRegistry groupActionRegistry;
private final Provider<GroupLiveSearcher> liveSearcherProvider;
+ private final Provider<GroupServiceAsync> groupServiceProvider;
public GroupMembersSummaryPresenter(final I18nUITranslationService i18n, final StateManager stateManager,
final ImageUtils imageUtils, final Session session,
final Provider<SocialNetworkServiceAsync> snServiceProvider,
+ final Provider<GroupServiceAsync> groupServiceProvider,
final Provider<GroupLiveSearcher> liveSearcherProvider, final WsThemePresenter wsThemePresenter,
final Provider<ChatEngine> chatEngineProvider, final GroupActionRegistry groupActionRegistry,
final ActionGroupSummaryToolbar toolbar) {
@@ -79,6 +83,7 @@
this.stateManager = stateManager;
this.session = session;
this.snServiceProvider = snServiceProvider;
+ this.groupServiceProvider = groupServiceProvider;
this.liveSearcherProvider = liveSearcherProvider;
this.groupActionRegistry = groupActionRegistry;
final Listener<StateAbstractDTO> setStateListener = new Listener<StateAbstractDTO>() {
@@ -165,16 +170,22 @@
groupActionRegistry.addAction(unJoin);
groupActionRegistry.addAction(participate);
- createShowAction(i18n.t("anyone"));
- createShowAction(i18n.t("only members"));
- createShowAction(i18n.t("only admins"));
+ createSetMembersVisibilityAction(i18n.t("anyone"), SocialNetworkVisibilityDTO.anyone);
+ createSetMembersVisibilityAction(i18n.t("only members"), SocialNetworkVisibilityDTO.onlymembers);
+ createSetMembersVisibilityAction(i18n.t("only admins"), SocialNetworkVisibilityDTO.onlyadmins);
}
- private void createShowAction(String textDescription) {
+ private void createSetMembersVisibilityAction(String textDescription, final SocialNetworkVisibilityDTO visibility) {
ActionToolbarMenuDescriptor<StateToken> showMembers = new ActionToolbarMenuDescriptor<StateToken>(
AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<StateToken>() {
public void onEvent(StateToken parameter) {
- Site.info("In development");
+ groupServiceProvider.get().setSocialNetworkVisibility(session.getUserHash(),
+ session.getCurrentState().getGroup().getStateToken(), visibility,
+ new AsyncCallbackSimple<Object>() {
+ public void onSuccess(Object result) {
+ Site.info(i18n.t("Members visibility changed"));
+ }
+ });
}
});
showMembers.setTextDescription(textDescription);
Modified: trunk/src/main/resources/dozerBeanMapping.xml
===================================================================
--- trunk/src/main/resources/dozerBeanMapping.xml 2008-11-21 23:14:32 UTC (rev 960)
+++ trunk/src/main/resources/dozerBeanMapping.xml 2008-11-22 04:29:34 UTC (rev 961)
@@ -334,10 +334,16 @@
</mapping>
<mapping>
- <class-a>
- org.ourproject.kune.platf.client.dto.UserSimpleDTO
- </class-a>
- <class-b>org.ourproject.kune.platf.server.domain.User</class-b>
+ <class-a>org.ourproject.kune.platf.server.domain.User</class-a>
+ <class-b>org.ourproject.kune.platf.client.dto.UserSimpleDTO</class-b>
+ <field type="one-way">
+ <a>hasLogo</a>
+ <b>hasLogo</b>
+ </field>
+ <field>
+ <a get-method="getStateToken">stateToken</a>
+ <b>stateToken</b>
+ </field>
</mapping>
<mapping>
@@ -443,6 +449,24 @@
<mapping>
<class-a>
+ org.ourproject.kune.platf.client.dto.SocialNetworkVisibilityDTO
+ </class-a>
+ <class-b>
+ org.ourproject.kune.platf.server.domain.SocialNetworkVisibility
+ </class-b>
+ </mapping>
+
+ <mapping>
+ <class-a>
+ org.ourproject.kune.platf.client.dto.UserBuddiesVisibilityDTO
+ </class-a>
+ <class-b>
+ org.ourproject.kune.platf.server.domain.UserBuddiesVisibility
+ </class-b>
+ </mapping>
+
+ <mapping>
+ <class-a>
org.ourproject.kune.platf.client.dto.ContentStatusDTO
</class-a>
<class-b>
1
0
Author: vjrj
Date: 2008-11-22 00:14:32 +0100 (Sat, 22 Nov 2008)
New Revision: 960
Added:
trunk/src/main/java/org/ourproject/kune/platf/client/utils/DeferredCommandWrapper.java
Modified:
trunk/pom.xml
trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionBuddiesSummaryToolbar.java
trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionBuddiesSummaryToolbarPresenter.java
trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserInfoDTO.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java
trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java
trunk/src/main/java/org/ourproject/kune/platf/server/users/UserInfo.java
trunk/src/main/java/org/ourproject/kune/platf/server/users/UserInfoServiceDefault.java
trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPanel.java
trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java
trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java
trunk/src/main/resources/dozerBeanMapping.xml
trunk/src/test/java/org/ourproject/kune/platf/server/TestHelper.java
trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java
Log:
Incomplete - task Use of new ActionDescriptionClass in SocialNetwork
And some test fixed
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/pom.xml 2008-11-21 23:14:32 UTC (rev 960)
@@ -379,8 +379,8 @@
<version>2.0-beta23</version>
<configuration>
<logLevel>INFO</logLevel>
- <style>PRETTY</style>
- <!-- <style>OBF</style> -->
+ <style>OBF</style>
+ <!-- <style>PRETTY</style> -->
<runTarget>
org.ourproject.kune.app.Kune/Kune.html
</runTarget>
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionBuddiesSummaryToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionBuddiesSummaryToolbar.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionBuddiesSummaryToolbar.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -1,7 +1,7 @@
package org.ourproject.kune.platf.client.actions.toolbar;
-import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
-public interface ActionBuddiesSummaryToolbar extends ActionToolbar<StateToken> {
+public interface ActionBuddiesSummaryToolbar extends ActionToolbar<UserSimpleDTO> {
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionBuddiesSummaryToolbarPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionBuddiesSummaryToolbarPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/actions/toolbar/ActionBuddiesSummaryToolbarPresenter.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -1,11 +1,11 @@
package org.ourproject.kune.platf.client.actions.toolbar;
-import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
-public class ActionBuddiesSummaryToolbarPresenter extends ActionToolbarPresenter<StateToken> implements
+public class ActionBuddiesSummaryToolbarPresenter extends ActionToolbarPresenter<UserSimpleDTO> implements
ActionBuddiesSummaryToolbar {
- public ActionBuddiesSummaryToolbarPresenter(ActionToolbarView<StateToken> toolbar) {
+ public ActionBuddiesSummaryToolbarPresenter(ActionToolbarView<UserSimpleDTO> toolbar) {
super(toolbar);
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserInfoDTO.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserInfoDTO.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/dto/UserInfoDTO.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -24,14 +24,11 @@
import com.google.gwt.user.client.rpc.IsSerializable;
public class UserInfoDTO implements IsSerializable {
- private String shortName;
- private String name;
+ private UserSimpleDTO user;
private String chatName;
private String chatPassword;
private String homePage;
private String userHash;
- private I18nLanguageDTO language;
- private I18nCountryDTO country;
private List<GroupDTO> groupsIsAdmin;
private List<GroupDTO> groupsIsCollab;
@@ -44,7 +41,7 @@
}
public I18nCountryDTO getCountry() {
- return country;
+ return user.getCountry();
}
public List<GroupDTO> getGroupsIsAdmin() {
@@ -60,17 +57,21 @@
}
public I18nLanguageDTO getLanguage() {
- return language;
+ return user.getLanguage();
}
public String getName() {
- return name;
+ return user.getName();
}
public String getShortName() {
- return shortName;
+ return user.getShortName();
}
+ public UserSimpleDTO getUser() {
+ return user;
+ }
+
public String getUserHash() {
return userHash;
}
@@ -84,10 +85,6 @@
}
- public void setCountry(final I18nCountryDTO country) {
- this.country = country;
- }
-
public void setGroupsIsAdmin(final List<GroupDTO> groupsIsAdmin) {
this.groupsIsAdmin = groupsIsAdmin;
}
@@ -100,18 +97,10 @@
this.homePage = homePage;
}
- public void setLanguage(final I18nLanguageDTO language) {
- this.language = language;
+ public void setUser(UserSimpleDTO user) {
+ this.user = user;
}
- public void setName(final String name) {
- this.name = name;
- }
-
- public void setShortName(final String shortName) {
- this.shortName = shortName;
- }
-
public void setUserHash(final String userHash) {
this.userHash = userHash;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneModule.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -45,6 +45,7 @@
import org.ourproject.kune.platf.client.app.HistoryWrapperDefault;
import org.ourproject.kune.platf.client.app.ToolGroup;
import org.ourproject.kune.platf.client.dto.StateToken;
+import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
import org.ourproject.kune.platf.client.registry.ContentCapabilitiesRegistry;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import org.ourproject.kune.platf.client.rpc.ContentService;
@@ -66,6 +67,7 @@
import org.ourproject.kune.platf.client.ui.QuickTipsHelper;
import org.ourproject.kune.platf.client.ui.download.FileDownloadUtils;
import org.ourproject.kune.platf.client.ui.palette.ColorWebSafePalette;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigator;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigatorPanel;
import org.ourproject.kune.workspace.client.ctxnav.ContextNavigatorPresenter;
@@ -361,6 +363,13 @@
}
});
+ register(Singleton.class, new Factory<DeferredCommandWrapper>(DeferredCommandWrapper.class) {
+ @Override
+ public DeferredCommandWrapper create() {
+ return new DeferredCommandWrapper();
+ }
+ });
+
register(Singleton.class, new Factory<TextEditor>(TextEditor.class) {
@Override
public TextEditor create() {
@@ -370,7 +379,8 @@
contentNavigatorToolbar);
final TextEditorPresenter presenter = new TextEditorPresenter(true, toolbar,
- $(I18nUITranslationService.class), $(StateManager.class), $(SiteSignOutLink.class));
+ $(I18nUITranslationService.class), $(StateManager.class), $(SiteSignOutLink.class),
+ $(DeferredCommandWrapper.class));
final TextEditorPanel panel = new TextEditorPanel(presenter, $(I18nTranslationService.class),
$(WorkspaceSkeleton.class), $(ColorWebSafePalette.class));
presenter.init(panel);
@@ -463,7 +473,7 @@
}, new Factory<ActionBuddiesSummaryToolbar>(ActionBuddiesSummaryToolbar.class) {
@Override
public ActionBuddiesSummaryToolbar create() {
- final ActionToolbarPanel<StateToken> panel = new ActionToolbarPanel<StateToken>(
+ final ActionToolbarPanel<UserSimpleDTO> panel = new ActionToolbarPanel<UserSimpleDTO>(
$$(ActionManager.class), $(WorkspaceSkeleton.class));
final ActionBuddiesSummaryToolbarPresenter toolbar = new ActionBuddiesSummaryToolbarPresenter(panel);
return toolbar;
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/services/KuneWorkspaceModule.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -363,9 +363,10 @@
public BuddiesSummary create() {
final BuddiesSummaryPresenter presenter = new BuddiesSummaryPresenter($(StateManager.class),
$(Session.class), $(UserActionRegistry.class), $(I18nTranslationService.class),
- $$(ChatEngine.class));
+ $$(ChatEngine.class), $(ActionBuddiesSummaryToolbar.class));
final BuddiesSummaryPanel panel = new BuddiesSummaryPanel(presenter, $(WorkspaceSkeleton.class),
- $(I18nTranslationService.class), $(ActionManager.class), $(ActionBuddiesSummaryToolbar.class));
+ $(I18nTranslationService.class), $(ActionManager.class),
+ $(ActionBuddiesSummaryToolbar.class).getView());
presenter.init(panel);
return presenter;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/Session.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -49,6 +49,7 @@
import org.ourproject.kune.platf.client.dto.StateContentDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import com.calclab.suco.client.listener.Listener;
@@ -77,6 +78,8 @@
StateToken getCurrentStateToken();
+ UserSimpleDTO getCurrentUser();
+
UserInfoDTO getCurrentUserInfo();
String getGalleryPermittedExtensions();
Modified: trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/state/SessionDefault.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -31,6 +31,7 @@
import org.ourproject.kune.platf.client.dto.StateContentDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.dto.UserInfoDTO;
+import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
import org.ourproject.kune.platf.client.rpc.AsyncCallbackSimple;
import org.ourproject.kune.workspace.client.site.rpc.UserServiceAsync;
@@ -100,6 +101,10 @@
return currentState == null ? null : currentState.getStateToken();
}
+ public UserSimpleDTO getCurrentUser() {
+ return currentUserInfo == null ? null : currentUserInfo.getUser();
+ }
+
public UserInfoDTO getCurrentUserInfo() {
return currentUserInfo;
}
Added: trunk/src/main/java/org/ourproject/kune/platf/client/utils/DeferredCommandWrapper.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/client/utils/DeferredCommandWrapper.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/client/utils/DeferredCommandWrapper.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -0,0 +1,26 @@
+package org.ourproject.kune.platf.client.utils;
+
+import com.calclab.suco.client.listener.Listener0;
+import com.google.gwt.user.client.Command;
+import com.google.gwt.user.client.DeferredCommand;
+
+/**
+ * The Class DeferredCommandWrapper is a wrapper of the GWT DeferredCommand
+ * (used for testing classes without GWT dependencies).
+ */
+public class DeferredCommandWrapper {
+
+ /**
+ * Adds the command.
+ *
+ * @param command
+ * the listener
+ */
+ public void addCommand(final Listener0 command) {
+ DeferredCommand.addCommand(new Command() {
+ public void execute() {
+ command.onEvent();
+ }
+ });
+ }
+}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/users/UserInfo.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/users/UserInfo.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/users/UserInfo.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -24,18 +24,16 @@
import org.ourproject.kune.platf.server.domain.Group;
import org.ourproject.kune.platf.server.domain.I18nCountry;
import org.ourproject.kune.platf.server.domain.I18nLanguage;
+import org.ourproject.kune.platf.server.domain.User;
public class UserInfo {
- private String shortName;
- private String name;
+ private User user;
private String chatName;
private String chatPassword;
private String homePage;
private List<Group> groupsIsAdmin;
private List<Group> groupsIsCollab;
private String userHash;
- private I18nLanguage language;
- private I18nCountry country;
public String getChatName() {
return chatName;
@@ -46,7 +44,7 @@
}
public I18nCountry getCountry() {
- return country;
+ return user.getCountry();
}
public List<Group> getGroupsIsAdmin() {
@@ -62,17 +60,21 @@
}
public I18nLanguage getLanguage() {
- return language;
+ return user.getLanguage();
}
public String getName() {
- return name;
+ return user.getName();
}
public String getShortName() {
- return shortName;
+ return user.getShortName();
}
+ public User getUser() {
+ return user;
+ }
+
public String getUserHash() {
return userHash;
}
@@ -85,10 +87,6 @@
this.chatPassword = chatPassword;
}
- public void setCountry(final I18nCountry country) {
- this.country = country;
- }
-
public void setGroupsIsAdmin(final List<Group> groupsIsAdmin) {
this.groupsIsAdmin = groupsIsAdmin;
}
@@ -101,18 +99,10 @@
this.homePage = homePage;
}
- public void setLanguage(final I18nLanguage language) {
- this.language = language;
+ public void setUser(User user) {
+ this.user = user;
}
- public void setName(final String name) {
- this.name = name;
- }
-
- public void setShortName(final String shortName) {
- this.shortName = shortName;
- }
-
public void setUserHash(final String userHash) {
this.userHash = userHash;
}
Modified: trunk/src/main/java/org/ourproject/kune/platf/server/users/UserInfoServiceDefault.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/platf/server/users/UserInfoServiceDefault.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/platf/server/users/UserInfoServiceDefault.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -22,7 +22,6 @@
import org.ourproject.kune.platf.client.errors.DefaultException;
import org.ourproject.kune.platf.server.domain.Content;
import org.ourproject.kune.platf.server.domain.Group;
-import org.ourproject.kune.platf.server.domain.I18nLanguage;
import org.ourproject.kune.platf.server.domain.User;
import org.ourproject.kune.platf.server.manager.SocialNetworkManager;
import org.ourproject.kune.platf.server.sn.ParticipationData;
@@ -45,13 +44,9 @@
if (User.isKnownUser(user)) {
info = new UserInfo();
- info.setShortName(user.getShortName());
- info.setName(user.getName());
+ info.setUser(user);
info.setChatName(user.getShortName());
info.setChatPassword(user.getPassword());
- final I18nLanguage language = user.getLanguage();
- info.setLanguage(language);
- info.setCountry(user.getCountry());
info.setUserHash(userHash);
final Group userGroup = user.getUserGroup();
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenter.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -29,13 +29,12 @@
import org.ourproject.kune.platf.client.dto.AccessRolDTO;
import org.ourproject.kune.platf.client.dto.StateToken;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignOutLink;
import com.calclab.suco.client.listener.Listener;
import com.calclab.suco.client.listener.Listener0;
-import com.google.gwt.user.client.Command;
-import com.google.gwt.user.client.DeferredCommand;
public class TextEditorPresenter implements TextEditor {
public static final int AUTOSAVE_AFTER_FAILS_IN_MILLISECONS = 20000;
@@ -56,14 +55,17 @@
private final BeforeActionListener beforeStateChangeListener;
private final StateManager stateManager;
private final SiteSignOutLink siteSignOutLink;
+ private final DeferredCommandWrapper deferredCommandWrapper;
public TextEditorPresenter(final boolean isAutoSave, final ActionToolbar<StateToken> toolbar,
- final I18nUITranslationService i18n, StateManager stateManager, SiteSignOutLink siteSignOutLink) {
+ final I18nUITranslationService i18n, StateManager stateManager, SiteSignOutLink siteSignOutLink,
+ DeferredCommandWrapper deferredCommandWrapper) {
this.toolbar = toolbar;
autoSave = isAutoSave;
this.i18n = i18n;
this.stateManager = stateManager;
this.siteSignOutLink = siteSignOutLink;
+ this.deferredCommandWrapper = deferredCommandWrapper;
savePending = false;
editingHtml = false;
saveAndCloseConfirmed = false;
@@ -181,8 +183,8 @@
onCancel();
return false;
} else {
- DeferredCommand.addCommand(new Command() {
- public void execute() {
+ deferredCommandWrapper.addCommand(new Listener0() {
+ public void onEvent() {
onCancelConfirmed();
}
});
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/skel/SimpleToolbar.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -72,6 +72,12 @@
childPanel.clear();
}
+ public void setCleanStyle() {
+ setStyleName("x-toolbar");
+ addStyleName("x-panel");
+ addStyleName("k-blank-toolbar");
+ }
+
public void setHeight(int height) {
mainPanel.setHeight("" + height);
mainPanel.setCellHeight(childPanel, "" + height);
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPanel.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -21,10 +21,13 @@
import org.ourproject.kune.platf.client.actions.ActionItem;
import org.ourproject.kune.platf.client.actions.ActionItemCollection;
import org.ourproject.kune.platf.client.actions.ActionManager;
+import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
import org.ourproject.kune.platf.client.actions.MenuItemsContainer;
-import org.ourproject.kune.platf.client.actions.toolbar.ActionBuddiesSummaryToolbar;
+import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarPanel;
+import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbarView;
import org.ourproject.kune.platf.client.dto.UserSimpleDTO;
import org.ourproject.kune.platf.client.services.I18nTranslationService;
+import org.ourproject.kune.workspace.client.skel.SimpleToolbar;
import org.ourproject.kune.workspace.client.skel.SummaryPanel;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
@@ -73,10 +76,10 @@
private final Label otherBuddiesLabel;
private final I18nTranslationService i18n;
private final ActionManager actionManager;
+ private final SimpleToolbar toolbar;
public BuddiesSummaryPanel(final BuddiesSummaryPresenter presenter, final WorkspaceSkeleton ws,
- I18nTranslationService i18n, ActionManager actionManager,
- ActionBuddiesSummaryToolbar actionBuddiesSummaryToolbar) {
+ I18nTranslationService i18n, ActionManager actionManager, ActionToolbarView<UserSimpleDTO> actionToolbarView) {
super(i18n.t("Buddies"), i18n.t("Buddies of this user"), ws);
this.actionManager = actionManager;
menuItemsContainer = new MenuItemsContainer<UserSimpleDTO>();
@@ -87,9 +90,11 @@
otherBuddiesLabel.addStyleName("kune-Margin-Small-trbl");
vp.add(flowPanel);
vp.add(otherBuddiesLabel);
+ toolbar = ((ActionToolbarPanel<UserSimpleDTO>) actionToolbarView).getToolbar(ActionToolbarPosition.bottombar);
+ toolbar.setCleanStyle();
+ vp.add(toolbar);
super.add(vp);
addInSummary();
- clear();
}
public void addBuddie(final UserSimpleDTO user, ActionItemCollection<UserSimpleDTO> actionCollection) {
@@ -115,6 +120,7 @@
flowPanel.clear();
clearOtherUsers();
menuItemsContainer.clear();
+ toolbar.removeAll();
super.doLayoutIfNeeded();
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/BuddiesSummaryPresenter.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -22,11 +22,13 @@
import org.ourproject.kune.chat.client.ChatEngine;
import org.ourproject.kune.platf.client.View;
-import org.ourproject.kune.platf.client.actions.ActionEnableCondition;
+import org.ourproject.kune.platf.client.actions.ActionAddCondition;
import org.ourproject.kune.platf.client.actions.ActionMenuItemDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarButtonAndItemDescriptor;
+import org.ourproject.kune.platf.client.actions.ActionToolbarMenuDescriptor;
import org.ourproject.kune.platf.client.actions.ActionToolbarPosition;
import org.ourproject.kune.platf.client.actions.UserActionRegistry;
+import org.ourproject.kune.platf.client.actions.toolbar.ActionBuddiesSummaryToolbar;
import org.ourproject.kune.platf.client.dto.AccessRightsDTO;
import org.ourproject.kune.platf.client.dto.AccessRolDTO;
import org.ourproject.kune.platf.client.dto.GroupType;
@@ -36,6 +38,7 @@
import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.state.Session;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.workspace.client.site.Site;
import com.calclab.suco.client.ioc.Provider;
import com.calclab.suco.client.listener.Listener;
@@ -48,14 +51,17 @@
private final I18nTranslationService i18n;
private final Provider<ChatEngine> chatEngineProvider;
private final Session session;
+ private final ActionBuddiesSummaryToolbar toolbar;
public BuddiesSummaryPresenter(StateManager stateManager, final Session session, UserActionRegistry actionRegistry,
- I18nTranslationService i18n, final Provider<ChatEngine> chatEngineProvider) {
+ I18nTranslationService i18n, final Provider<ChatEngine> chatEngineProvider,
+ final ActionBuddiesSummaryToolbar toolbar) {
this.stateManager = stateManager;
this.session = session;
this.actionRegistry = actionRegistry;
this.i18n = i18n;
this.chatEngineProvider = chatEngineProvider;
+ this.toolbar = toolbar;
stateManager.onStateChanged(new Listener<StateAbstractDTO>() {
public void onEvent(StateAbstractDTO state) {
setState(state);
@@ -105,6 +111,10 @@
view.setNoBuddies();
}
}
+ toolbar.disableMenusAndClearButtons();
+ toolbar.setActions(actionRegistry.getCurrentActions(session.getCurrentUser(), session.isLogged(),
+ state.getGroupRights(), true));
+ toolbar.attach();
view.show();
} else {
view.hide();
@@ -114,6 +124,19 @@
}
}
+ private void createShowAction(String textDescription) {
+ ActionToolbarMenuDescriptor<UserSimpleDTO> showBuddies = new ActionToolbarMenuDescriptor<UserSimpleDTO>(
+ AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<UserSimpleDTO>() {
+ public void onEvent(UserSimpleDTO parameter) {
+ Site.info("In development");
+ }
+ });
+ showBuddies.setTextDescription(textDescription);
+ showBuddies.setParentMenuTitle(i18n.t("Options"));
+ showBuddies.setParentSubMenuTitle(i18n.t("Who can view your buddies list"));
+ actionRegistry.addAction(showBuddies);
+ }
+
private void registerActions() {
final ActionToolbarButtonAndItemDescriptor<UserSimpleDTO> addAsBuddie = new ActionToolbarButtonAndItemDescriptor<UserSimpleDTO>(
AccessRolDTO.Viewer, ActionToolbarPosition.bottombar, new Listener<UserSimpleDTO>() {
@@ -124,8 +147,8 @@
addAsBuddie.setMustBeAuthenticated(true);
addAsBuddie.setTextDescription(i18n.t("Add as buddie"));
addAsBuddie.setIconUrl("images/add-green.png");
- addAsBuddie.setEnableCondition(new ActionEnableCondition<UserSimpleDTO>() {
- public boolean mustBeEnabled(UserSimpleDTO item) {
+ addAsBuddie.setAddCondition(new ActionAddCondition<UserSimpleDTO>() {
+ public boolean mustBeAdded(UserSimpleDTO item) {
return !session.getCurrentUserInfo().getShortName().equals(item.getShortName());
}
});
@@ -141,5 +164,10 @@
go.setTextDescription(i18n.t("Visit this user homepage"));
go.setIconUrl("images/group-home.gif");
actionRegistry.addAction(go);
+
+ createShowAction(i18n.t("anyone"));
+ createShowAction(i18n.t("only your buddies"));
+ createShowAction(i18n.t("only you"));
}
+
}
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPanel.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -65,12 +65,10 @@
};
// gridMenuPanel.onClick(go);
gridMenuPanel.onDoubleClick(go);
+ gridMenuPanel.getBottomBar().setCls("k-blank-toolbar");
super.add(gridMenuPanel);
toolbar = ((ActionToolbarPanel<StateToken>) actionToolbarView).getToolbar(ActionToolbarPosition.bottombar);
- toolbar.setStyleName("x-toolbar");
- toolbar.addStyleName("x-panel");
- toolbar.addStyleName("k-blank-toolbar");
- // toolbar.addStyleName("k-site-traybar");
+ toolbar.setCleanStyle();
super.add(toolbar);
super.addInSummary();
ws.addListenerInEntitySummary(new ContainerListenerAdapter() {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/GroupMembersSummaryPresenter.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -171,18 +171,16 @@
}
private void createShowAction(String textDescription) {
- ActionToolbarMenuDescriptor<StateToken> showMembersToAll = new ActionToolbarMenuDescriptor<StateToken>(
+ ActionToolbarMenuDescriptor<StateToken> showMembers = new ActionToolbarMenuDescriptor<StateToken>(
AccessRolDTO.Administrator, ActionToolbarPosition.bottombar, new Listener<StateToken>() {
public void onEvent(StateToken parameter) {
Site.info("In development");
}
});
- // showMembersToAll.setIconUrl("images/add-green.gif");
- showMembersToAll.setTextDescription(textDescription);
- // showMembersToAll.setToolTip(i18n.t("Add a group or a person as member of this group"));
- showMembersToAll.setParentMenuTitle(i18n.t("Options"));
- showMembersToAll.setParentSubMenuTitle(i18n.t("Who can view this member list"));
- groupActionRegistry.addAction(showMembersToAll);
+ showMembers.setTextDescription(textDescription);
+ showMembers.setParentMenuTitle(i18n.t("Options"));
+ showMembers.setParentSubMenuTitle(i18n.t("Who can view this member list"));
+ groupActionRegistry.addAction(showMembers);
}
@SuppressWarnings("unchecked")
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPanel.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPanel.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPanel.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -27,6 +27,7 @@
import org.ourproject.kune.platf.client.services.I18nTranslationService;
import org.ourproject.kune.platf.client.ui.gridmenu.GridItem;
import org.ourproject.kune.platf.client.ui.gridmenu.GridMenuPanel;
+import org.ourproject.kune.workspace.client.skel.SimpleToolbar;
import org.ourproject.kune.workspace.client.skel.SummaryPanel;
import org.ourproject.kune.workspace.client.skel.WorkspaceSkeleton;
import org.ourproject.kune.workspace.client.themes.WsTheme;
@@ -38,6 +39,7 @@
public class ParticipationSummaryPanel extends SummaryPanel implements ParticipationSummaryView {
private final GridMenuPanel<GroupDTO> gridMenuPanel;
+ private final SimpleToolbar toolbar;
public ParticipationSummaryPanel(final ParticipationSummaryPresenter presenter, final I18nTranslationService i18n,
final WorkspaceSkeleton ws, ActionToolbarView<StateToken> actionToolbarView) {
@@ -52,7 +54,9 @@
// gridMenuPanel.onClick(go);
gridMenuPanel.onDoubleClick(go);
super.add(gridMenuPanel);
- super.add(((ActionToolbarPanel<StateToken>) actionToolbarView).getToolbar(ActionToolbarPosition.bottombar));
+ toolbar = ((ActionToolbarPanel<StateToken>) actionToolbarView).getToolbar(ActionToolbarPosition.bottombar);
+ toolbar.setCleanStyle();
+ super.add(toolbar);
addInSummary();
ws.addListenerInEntitySummary(new ContainerListenerAdapter() {
@Override
@@ -70,6 +74,7 @@
@Override
public void clear() {
gridMenuPanel.removeAll();
+ toolbar.removeAll();
}
public void setTheme(WsTheme oldTheme, WsTheme newTheme) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/socialnet/ParticipationSummaryPresenter.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -36,7 +36,6 @@
import org.ourproject.kune.workspace.client.themes.WsTheme;
import org.ourproject.kune.workspace.client.themes.WsThemePresenter;
-import com.allen_sauer.gwt.log.client.Log;
import com.calclab.suco.client.ioc.Provider;
import com.calclab.suco.client.listener.Listener;
import com.calclab.suco.client.listener.Listener2;
@@ -89,7 +88,6 @@
view.clear();
final List<GroupDTO> groupsIsAdmin = participation.getGroupsIsAdmin();
final List<GroupDTO> groupsIsCollab = participation.getGroupsIsCollab();
- Log.info(participation.toString());
final int numAdmins = groupsIsAdmin.size();
final int numCollaborators = groupsIsCollab.size();
if (numAdmins == 0) {
Modified: trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java
===================================================================
--- trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/java/org/ourproject/kune/workspace/client/tags/TagsSummaryPresenter.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -84,8 +84,8 @@
}
void setState(final StateContainerDTO state) {
- Log.debug(state.getTagCloudResult().toString());
if (state.getTagCloudResult() != null && state.getTagCloudResult().getTagCountList().size() > 0) {
+ Log.debug(state.getTagCloudResult().toString());
view.setVisible(true);
setCloud(state.getTagCloudResult());
} else {
Modified: trunk/src/main/resources/dozerBeanMapping.xml
===================================================================
--- trunk/src/main/resources/dozerBeanMapping.xml 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/main/resources/dozerBeanMapping.xml 2008-11-21 23:14:32 UTC (rev 960)
@@ -295,25 +295,15 @@
org.ourproject.kune.platf.server.users.UserInfo
</class-b>
<field>
- <a>language</a>
- <b>language</b>
+ <a>user</a>
+ <b>user</b>
<a-hint>
- org.ourproject.kune.platf.client.dto.I18nLanguageDTO
+ org.ourproject.kune.platf.client.dto.UserSimpleDTO
</a-hint>
<b-hint>
- org.ourproject.kune.platf.server.domain.I18nLanguage
+ org.ourproject.kune.platf.server.domain.User
</b-hint>
</field>
- <field>
- <a>country</a>
- <b>country</b>
- <a-hint>
- org.ourproject.kune.platf.client.dto.I18nCountryDTO
- </a-hint>
- <b-hint>
- org.ourproject.kune.platf.server.domain.I18nCountry
- </b-hint>
- </field>
</mapping>
<mapping>
Modified: trunk/src/test/java/org/ourproject/kune/platf/server/TestHelper.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/platf/server/TestHelper.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/test/java/org/ourproject/kune/platf/server/TestHelper.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -12,10 +12,6 @@
import com.wideplay.warp.jpa.JpaUnit;
public abstract class TestHelper {
- public static void inject(final Object target) {
- TestHelper.create(new PlatformServerModule(), "test", "kune.properties").injectMembers(target);
- }
-
public static Injector create(final Module module, final String persistenceUnit, final String propetiesFileName) {
Injector injector = Guice.createInjector(module, new Module() {
public void configure(Binder binder) {
@@ -27,4 +23,10 @@
return injector;
}
+ public static void inject(final Object target) {
+ // test: use memory
+ // test_db: use mysql
+ TestHelper.create(new PlatformServerModule(), "test", "kune.properties").injectMembers(target);
+ }
+
}
Modified: trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java
===================================================================
--- trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java 2008-11-21 15:36:46 UTC (rev 959)
+++ trunk/src/test/java/org/ourproject/kune/workspace/client/editor/TextEditorPresenterTest.java 2008-11-21 23:14:32 UTC (rev 960)
@@ -8,9 +8,11 @@
import org.mockito.Mockito;
import org.ourproject.kune.platf.client.actions.toolbar.ActionToolbar;
import org.ourproject.kune.platf.client.state.StateManager;
+import org.ourproject.kune.platf.client.utils.DeferredCommandWrapper;
import org.ourproject.kune.workspace.client.i18n.I18nUITranslationService;
import org.ourproject.kune.workspace.client.sitebar.sitesign.SiteSignOutLink;
+import com.calclab.suco.client.listener.Listener0;
import com.calclab.suco.testing.listener.MockListener;
import com.calclab.suco.testing.listener.MockListener0;
@@ -23,6 +25,7 @@
private ActionToolbar toolbar;
private StateManager stateManager;
private SiteSignOutLink signOutLink;
+ private DeferredCommandWrapper deferredCommandWrapper;
@SuppressWarnings("unchecked")
@Before
@@ -31,7 +34,8 @@
stateManager = Mockito.mock(StateManager.class);
toolbar = Mockito.mock(ActionToolbar.class);
signOutLink = Mockito.mock(SiteSignOutLink.class);
- presenter = new TextEditorPresenter(true, toolbar, i18n, stateManager, signOutLink);
+ deferredCommandWrapper = Mockito.mock(DeferredCommandWrapper.class);
+ presenter = new TextEditorPresenter(true, toolbar, i18n, stateManager, signOutLink, deferredCommandWrapper);
view = Mockito.mock(TextEditorView.class);
presenter.init(view);
saveListener = new MockListener<String>();
@@ -44,7 +48,7 @@
boolean change = presenter.beforeTokenChange();
assertTrue(change);
Mockito.verify(view, Mockito.never()).showSaveBeforeDialog();
- Mockito.verify(toolbar, Mockito.times(1)).detach();
+ Mockito.verify(deferredCommandWrapper, Mockito.times(1)).addCommand((Listener0) Mockito.anyObject());
}
@Test
1
0