git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorMárk Mérész <USER\mark.meresz>
Fri, 13 Jul 2018 14:57:40 +0000 (14:57 +0000)
committerMárk Mérész <USER\mark.meresz>
Fri, 13 Jul 2018 14:57:40 +0000 (14:57 +0000)
server/user.jobengine.osgi.server/pages/metadatadetails.zul
server/user.jobengine.osgi.server/pages/searchitems.zul
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/CachedListModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/InitializedCachedListModel.java [new file with mode: 0644]
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/MetadataDetailsModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java

index 02ce6db6d8919858fa7d58602598f92e07dc008c..b40b6e81c7fe313487eb6a1c8f628f734f1ce653 100644 (file)
@@ -1,31 +1,31 @@
 <?xml version="1.0" encoding="UTF-8"?>\r
-<window id="window"  title="Metadatok szerkesztése" width="900px" height="660px" position="top_center" sizable="true" border="normal" apply="org.zkoss.bind.BindComposer"\r
+<window id="window"  title="" width="900px" height="660px" position="top_center" sizable="true" border="normal" apply="org.zkoss.bind.BindComposer"\r
        viewModel="@id('vm') @init('user.jobengine.zk.model.MetadataDetailsModel')" forward="onCancel=closeButton.onClick">\r
        <style>\r
                .z-window-header{ background:#008ac8; color:white; font-size:16px; padding:10px; } .z-row:hover > .z-row-inner{ background:#7ad6ff40; }\r
        </style>\r
        <attribute name="onSize"><![CDATA[\r
-               String height= String.valueOf((Integer.parseInt(self.getHeight().replace("px",""))-125)*0.059813084112149535);\r
+               String height= String.valueOf((Integer.parseInt(self.getHeight().replace("px","")))*0.059813084112149535);\r
             item_houseid.setHeight(height+"px");\r
             Clients.resize(item_houseid);\r
             item_title.setHeight(height+"px");\r
             Clients.resize(item_title);\r
             item_type.setHeight(height+"px");\r
             Clients.resize(item_type);\r
-            height= String.valueOf((Integer.parseInt(self.getHeight().replace("px",""))-120)*0.21495327102803738);\r
+            height= String.valueOf((Integer.parseInt(self.getHeight().replace("px","")))*0.21495327102803738);\r
             item_description.setHeight(height+"px");\r
             Clients.resize(item_description);\r
-            height= String.valueOf((Integer.parseInt(self.getHeight().replace("px",""))-120)*0.0599250936329588);\r
+            height= String.valueOf((Integer.parseInt(self.getHeight().replace("px","")))*0.0599250936329588);\r
             media_houseid.setHeight(height+"px");\r
             Clients.resize(media_houseid);\r
             media_title.setHeight(height+"px");\r
             Clients.resize(media_title);\r
             media_type.setHeight(height+"px");\r
             Clients.resize(media_type);\r
-            height= String.valueOf((Integer.parseInt(self.getHeight().replace("px",""))-120)*0.41869158878504675);\r
+            height= String.valueOf((Integer.parseInt(self.getHeight().replace("px","")))*0.41869158878504675);\r
             media_description.setHeight(height+"px");\r
             Clients.resize(media_description);\r
-            height= String.valueOf((Integer.parseInt(self.getHeight().replace("px",""))-120)*0.41869158878504675*0.9);\r
+            height= String.valueOf((Integer.parseInt(self.getHeight().replace("px","")))*0.41869158878504675*0.9);\r
             media_description_content.setHeight(height+"px");\r
             Clients.resize(media_description_content);\r
         ]]></attribute>\r
@@ -62,7 +62,7 @@
                                        </listitem>\r
                                        <listitem id="media_type">\r
                                                <listcell label="Média típusa:" />\r
-                                               <listcell><combobox constraint="no empty" id="mediatypes" width="300px"\r
+                                               <listcell><combobox id="mediatypes" width="300px"\r
                                                        selectedItem="@load(vm.archivedMedia.media.itemType)@save(vm.archivedMedia.media.itemType,before='save')" model="@load(vm.itemTypes)">\r
                                                        <template name="model">\r
                                                                <comboitem label="${each.name}" value="${each}"></comboitem>\r
@@ -79,7 +79,7 @@
                </div>\r
                <div vflex="min">\r
                <hbox width="100%"  pack="center" align="center">\r
-                       <button id="saveButton" label="Mentés" onClick="@command('save')" />\r
+                       <button id="saveButton" label="Mentés" onClick="@command('save')"/>\r
                        <button id="closeButton" label="Mégse" onClick="@command('close')" />\r
                </hbox>\r
                </div>\r
index e3a88aa8a98cccdf75c95c7b2523b9cdd99772bd..700a807a64017dc26cc327e225c901e6ce3d8bb8 100644 (file)
 \r
                .type-inlist { width:80px; border-left:1px solid #008AC8; border-bottom:1px solid #008AC8; padding:4px; }\r
 \r
-               .buttonMetadata{ float: right; margin: 5px; width: 200px; }\r
-\r
+               .buttonBold{ font-weight:bold; width:200px;}\r
+               .menuButtons{ display: flex; justify-content: space-between; padding:5px 10px 5px 10px; }\r
+               .menuButtons >button{ width:200px; }\r
+               .z-messagebox-window{ top:40% !important; width:30% !important; }\r
        </style>\r
        <div id="scdiv" width="100%" height="100%" apply="org.zkoss.bind.BindComposer" viewModel="@id('vm') @init('user.jobengine.zk.model.SearchModel')">\r
                <timer id="timer" delay="100" repeats="true" onTimer="@command('uiTick')" />\r
                                                                                                                <label style="font:20px Century Gothic; color:#008AC8;" value="@load(each.item.title)" />\r
                                                                                                        </hlayout>\r
                                                                                                        <html sclass="relevant">\r
+\r
+\r
+\r
                                                                                                                \r
                                                                                                                <![CDATA[ <div style='width: 90%'>${each.relevant}</div> ]]>\r
                                                                                                                \r
+                                                                                                               \r
+                                                                                                               \r
+                                                                                                               \r
                                                                                                        </html>\r
                                                                                                </div>\r
                                                                                        </hlayout>\r
                                        <center border="none">\r
 \r
                                                <groupbox closable="false" mold="3d" width="100%" height="100%">\r
-                                                       <div width="100%">\r
+                                                       <div width="100%" sclass="menuButtons">\r
                                                                <button label="Kosárba" onClick="@command('downloadMedia')" autodisable="self" disabled="@load(not vm.hasTSMMediaFile)"\r
-                                                                       sclass="buttonboldfont" />\r
-                                                               <button id="metadataButton" sclass="buttonMetadata" label="Szerkesztés" onClick="@command('openMetaDataDialog')" \r
-                                                                       autodisable="self" disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" />\r
+                                                                       sclass="buttonBold" />\r
+                                                               <button id="copyMediaIdButton" label="MédiaId vágólapra másolás" onClick="@command('copyMediaIdToClipboard')" autodisable="self"\r
+                                                                       disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" />\r
+                                                               <button id="metadataButton" label="Szerkesztés" onClick="@command('openMetaDataDialog')" autodisable="self"\r
+                                                                       disabled="@load(not sessionScope.userPrincipal.editor or sessionScope.userPrincipal.anonymous or vm.selectedObject eq null)" />\r
                                                        </div>\r
 \r
-                                                       <div width="100%" height="100%" style="padding: 4px; overflow:auto; background-color: white">\r
+                                                       <div width="100%" height="90%" style="padding: 4px; overflow:auto; background-color: white">\r
                                                                <div>\r
                                                                        <label style="font-size:8pt; color: gray" value="Anyag azonosító" />\r
                                                                        <div style="margin: 4px">\r
 \r
                        </center>\r
                </borderlayout>\r
-\r
        </div>\r
 </zk>
\ No newline at end of file
index 4ed74109f399dcb655d4a3e3a79b896642d1701d..3b9977512d22910b44793b98c46b7e6bd534f6fa 100644 (file)
@@ -1,7 +1,6 @@
 package user.jobengine.zk.model;\r
 \r
 import java.util.ArrayList;\r
-import java.util.Arrays;\r
 import java.util.HashMap;\r
 import java.util.List;\r
 \r
@@ -18,7 +17,6 @@ import user.jobengine.db.ArchivedMedia;
 import user.jobengine.db.IItemManager;\r
 import user.jobengine.db.Item;\r
 import user.jobengine.db.ItemManager;\r
-import user.jobengine.db.Media;\r
 import user.jobengine.db.SearchResult;\r
 \r
 /**\r
@@ -37,7 +35,7 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
        private int cacheEnd;\r
 \r
        private ArrayList<EventListener> eventListenerList = new ArrayList<EventListener>();\r
-       private IItemManager itemManager = null;\r
+       protected IItemManager itemManager = null;\r
        private List<String> searchFilters;\r
        private String orderBy;\r
        private boolean orderAscending;\r
@@ -51,7 +49,7 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                reinit();\r
        }\r
 \r
-       //load cache event\r
+       // load cache event\r
        public void addEventListener(EventListener listener) {\r
                eventListenerList.add(listener);\r
        }\r
@@ -75,19 +73,6 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                return sr;\r
        }\r
 \r
-       //TODO szarmaztatott osztalyba\r
-       protected SearchResult<ArchivedMedia> createSearchResult1(int startPos, int endPos) {\r
-               long mediaID = 0;\r
-               Media media = itemManager.getMedia(mediaID);\r
-               SearchResult<ArchivedMedia> sr = new SearchResult<>();\r
-               sr.setItemCount(1);\r
-               ArchivedMedia archivedMedia = new ArchivedMedia();\r
-               archivedMedia.setMedia(media);\r
-               archivedMedia.setItem(itemManager.getItem(media.getItemId()));\r
-               sr.setItems(Arrays.asList(archivedMedia));\r
-               return sr;\r
-       }\r
-\r
        public void fireListEvent() {\r
                clearCache();\r
                fireEvent(ListDataEvent.STRUCTURE_CHANGED, -1, -1);\r
@@ -119,7 +104,7 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                return cacheEnd;\r
        }\r
 \r
-       //zul felulet hasznalja kiirashoz\r
+       // zul felulet hasznalja kiirashoz\r
        public int getCacheStart() {\r
                return cacheStart;\r
        }\r
@@ -130,7 +115,7 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
 \r
        @Override\r
        public ArchivedMedia getElementAt(int index) {\r
-               //logger.debug("CachedListMode.getElementAt(): " + index);\r
+               // logger.debug("CachedListMode.getElementAt(): " + index);\r
                ArchivedMedia ret = cache.get(index);\r
                if (ret == null) {\r
                        loadCache(index);\r
@@ -146,13 +131,13 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                return itemManager;\r
        }\r
 \r
-       //ListModelList method felulirva\r
-       //after 1. search ++++++++++\r
+       // ListModelList method felulirva\r
+       // after 1. search ++++++++++\r
        @Override\r
        public int getSize() {\r
                if (this.resultSetSize < 0) {\r
                        loadCache(0);\r
-                       //logger.debug("CachedListMode.getSize(): " + this.resultSetSize);\r
+                       // logger.debug("CachedListMode.getSize(): " + this.resultSetSize);\r
                }\r
                return this.resultSetSize;\r
        }\r
@@ -164,9 +149,9 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                try {\r
                        clearCache();\r
                        int halfSize = this.cacheSize / 2;\r
-                       int rowLimit = this.cacheSize; //200\r
+                       int rowLimit = this.cacheSize; // 200\r
                        int startPos = 0;\r
-                       if ((forIndex - halfSize) > 0) { //forIndex=60  startPos=0 cache=0-200,         forIndex=150 startPos=50 cache=50-250\r
+                       if ((forIndex - halfSize) > 0) { // forIndex=60 startPos=0 cache=0-200, forIndex=150 startPos=50 cache=50-250\r
                                startPos = (forIndex - halfSize);\r
                        }\r
 \r
@@ -185,10 +170,10 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                                        for (int c = 0; c < resList.size(); c++) {\r
                                                cache.put(startPos + c, resList.get(c));\r
                                                cache.put(startPos + c, resList.get(c));\r
-                                               //logger.debug("CachedListMode.cached idx: " + (startPos + c));\r
+                                               // logger.debug("CachedListMode.cached idx: " + (startPos + c));\r
                                        }\r
                                }\r
-                               //logger.debug("CachedListMode.cacheSize: " + cache.size());\r
+                               // logger.debug("CachedListMode.cacheSize: " + cache.size());\r
 \r
                                cacheStart = startPos + 1;\r
                                cacheEnd = cacheStart + (cache.size() == 0 ? 0 : (cache.size() - 1));\r
@@ -201,7 +186,7 @@ public class CachedListModel extends ListModelList<ArchivedMedia> {
                }\r
        }\r
 \r
-       //kintrol is hivhatjak\r
+       // kintrol is hivhatjak\r
        public void reinit() {\r
                this.resultSetSize = -1;\r
                this.cacheStart = 0;\r
diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/InitializedCachedListModel.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/InitializedCachedListModel.java
new file mode 100644 (file)
index 0000000..d6ab4f0
--- /dev/null
@@ -0,0 +1,32 @@
+package user.jobengine.zk.model;\r
+\r
+import java.util.Arrays;\r
+import java.util.List;\r
+\r
+import user.jobengine.db.ArchivedMedia;\r
+import user.jobengine.db.Media;\r
+import user.jobengine.db.SearchResult;\r
+\r
+public class InitializedCachedListModel extends CachedListModel {\r
+\r
+       private long mediaID;\r
+\r
+       public InitializedCachedListModel(String mediaID, String searchValue, List<String> searchFilters, String orderBy, boolean orderAscending) {\r
+               super(searchValue, searchFilters, orderBy, orderAscending);\r
+               this.mediaID = Long.parseLong(mediaID);\r
+\r
+       }\r
+\r
+       @Override\r
+       protected SearchResult<ArchivedMedia> createSearchResult(int startPos, int endPos) {\r
+               Media media = itemManager.getMedia(mediaID);\r
+               SearchResult<ArchivedMedia> sr = new SearchResult<>();\r
+               sr.setItemCount(1);\r
+               ArchivedMedia archivedMedia = new ArchivedMedia();\r
+               archivedMedia.setMedia(media);\r
+               archivedMedia.setItem(itemManager.getItem(media.getItemId()));\r
+               sr.setItems(Arrays.asList(archivedMedia));\r
+               return sr;\r
+       }\r
+\r
+}\r
index 1f8eadf8c63df0aa4db5932ccc0d2bc380dbbb7c..32ab33f09cc3b4835043d7ea071a2513fbddf2bd 100644 (file)
@@ -12,8 +12,12 @@ import org.zkoss.bind.annotation.ContextType;
 import org.zkoss.bind.annotation.Init;\r
 import org.zkoss.zk.ui.Component;\r
 import org.zkoss.zk.ui.Executions;\r
+import org.zkoss.zk.ui.WrongValueException;\r
 import org.zkoss.zk.ui.select.Selectors;\r
+import org.zkoss.zk.ui.select.annotation.Listen;\r
 import org.zkoss.zk.ui.select.annotation.Wire;\r
+import org.zkoss.zul.Button;\r
+import org.zkoss.zul.Combobox;\r
 import org.zkoss.zul.ListModelList;\r
 import org.zkoss.zul.Window;\r
 \r
@@ -30,6 +34,12 @@ public class MetadataDetailsModel extends BaseModel {
        private List<ItemType> itemTypes;\r
        private ItemManager manager;\r
 \r
+       @Wire\r
+       private Combobox mediatypes;\r
+\r
+       @Wire\r
+       private Button saveButton;\r
+\r
        @AfterCompose\r
        public void afterCompose(@ContextParam(ContextType.VIEW) Component view) {\r
                Selectors.wireComponents(view, this, false);\r
@@ -62,18 +72,35 @@ public class MetadataDetailsModel extends BaseModel {
                return itemTypes;\r
        }\r
 \r
-       // @Listen("onAfterRender = #mediatypes")\r
-       // public void onAfterRender(Event event) {\r
-       // mediatypesCombobox.setSelectedIndex(getItemTypes().indexOf(archivedMedia.getMedia().getItemType()));\r
-       // }\r
-\r
        @Init\r
        public void init() {\r
        }\r
 \r
+       @Listen("onAfterRender  = #mediatypes")\r
+       public void onAfterRenderMediaTypes() {\r
+               if (mediatypes.getSelectedItem() != null) {\r
+                       saveButton.setDisabled(false);\r
+\r
+               } else {\r
+                       saveButton.setDisabled(true);\r
+                       throw new WrongValueException(mediatypes, "Kérem válasszon a listából");\r
+               }\r
+       }\r
+\r
+       @Listen("onSelect = #mediatypes")\r
+       public void onChangesMediaTypes() {\r
+               if (mediatypes.getSelectedItem() != null) {\r
+                       saveButton.setDisabled(false);\r
+               } else {\r
+                       saveButton.setDisabled(true);\r
+                       throw new WrongValueException(mediatypes, "Kérem válasszon a listából");\r
+               }\r
+       }\r
+\r
        @Command\r
        public void save() {\r
                manager.modify(archivedMedia.getMedia());\r
+               logger.info("Metadat of media was updated by user, id of media: {}", archivedMedia.getMedia().getHouseId());\r
                wnd.detach();\r
        }\r
 \r
index be621395caad8ac375ec6292045fcf7de9e1afa8..29c85f75d1c8764e6faa9e632c75af6af66f53c6 100644 (file)
@@ -1,5 +1,8 @@
 package user.jobengine.zk.model;\r
 \r
+import java.awt.Toolkit;\r
+import java.awt.datatransfer.Clipboard;\r
+import java.awt.datatransfer.StringSelection;\r
 import java.net.URL;\r
 import java.nio.file.Paths;\r
 import java.util.ArrayList;\r
@@ -48,6 +51,7 @@ import user.jobengine.zk.util.SessionUtil;
 \r
 public class SearchModel extends AsyncBaseModel {\r
        private static final String ARG = "arg";\r
+       private static final String MEDIA_ID = "showMediaID";\r
        private static final String GENERIC = "Egyéb";\r
        private static final String RECORDING = "Visszarögzített";\r
        private static final String RAW_AD = "Reklám nyers";\r
@@ -72,7 +76,7 @@ public class SearchModel extends AsyncBaseModel {
        private boolean allChecked = true;\r
        private boolean rowsExpanded = true;\r
        private boolean allSelected;\r
-\r
+       private String baseURL;\r
        private boolean itemSelected;\r
        @Wire\r
        Rows rows;\r
@@ -82,6 +86,8 @@ public class SearchModel extends AsyncBaseModel {
        private boolean orderAscending;\r
 \r
        private Map<String, String> topColorClasses;\r
+       private String[] parameters;\r
+       private String mediaID;\r
 \r
        public SearchModel() {\r
                typeFilters = new LinkedHashMap<>();\r
@@ -152,17 +158,23 @@ public class SearchModel extends AsyncBaseModel {
                        Column column = (Column) child;\r
                        column.addEventListener("onSort", evt -> doSort(evt));\r
                }\r
+               String port = (Executions.getCurrent().getServerPort() == 80) ? "" : (":" + Executions.getCurrent().getServerPort());\r
+               baseURL = Executions.getCurrent().getScheme() + "://" + Executions.getCurrent().getServerName() + port + Executions.getCurrent().getContextPath();\r
+               setParameters();\r
+               mediaID = getValueByParameterName(MEDIA_ID);\r
+               if (mediaID != null) {\r
+                       searchResult = new InitializedCachedListModel(mediaID, searchValue, new ArrayList<String>(), orderBy, orderAscending);\r
+               }\r
+       }\r
 \r
-               Object x = Executions.getCurrent().getNativeRequest();\r
-\r
-               //TODO\r
-               String mediaID = Executions.getCurrent().getParameter("showMediaID");\r
-               // doSearchByMedia(mediaID)\r
-               // selectMediaArchive()\r
-\r
-               //TODO ??? kellhet\r
-               //NotifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath");\r
-\r
+       @Command\r
+       public void copyMediaIdToClipboard() {\r
+               String url = String.format("%s/?%s=%d", baseURL, MEDIA_ID, selectedObject.getMedia().getId());\r
+               Toolkit toolkit = Toolkit.getDefaultToolkit();\r
+               Clipboard clipboard = toolkit.getSystemClipboard();\r
+               StringSelection strSel = new StringSelection(url);\r
+               clipboard.setContents(strSel, null);\r
+               Messagebox.show("A médiához szükséges URL a vágólapra másolva, az URL a következő:\n" + url, "", Messagebox.OK, Messagebox.NONE);\r
        }\r
 \r
        @Command\r
@@ -174,10 +186,9 @@ public class SearchModel extends AsyncBaseModel {
                                throw new Exception("Legalább 3 karakter megadása kötelező!");\r
 \r
                        List<String> searchFilters = getSelectedFilters();\r
-\r
                        searchResult = new CachedListModel(searchValue, searchFilters, orderBy, orderAscending);\r
                } catch (Exception e) {\r
-                       Messagebox.show(e.getMessage());\r
+                       Messagebox.show(e.getMessage(), "Hiba", Messagebox.OK, Messagebox.ERROR);\r
                        logger.catching(e);\r
                }\r
        }\r
@@ -327,6 +338,14 @@ public class SearchModel extends AsyncBaseModel {
                return typeFilters;\r
        }\r
 \r
+       private String getValueByParameterName(String name) {\r
+               for (String result : parameters) {\r
+                       if (result.contains(name))\r
+                               return result.substring(result.indexOf('=') + 1);\r
+               }\r
+               return null;\r
+       }\r
+\r
        private void highlight(ArchivedMedia am, boolean highlight) {\r
                if (am == null)\r
                        return;\r
@@ -370,6 +389,10 @@ public class SearchModel extends AsyncBaseModel {
        public void onPaging() {\r
                if (rows != null)\r
                        Clients.scrollIntoView(rows);\r
+               if (mediaID != null) {\r
+                       selectedObject = searchResult.getElementAt(0);\r
+                       NotifyChange("selectedObject", "hasLowresMediaFile", "hasTSMMediaFile", "lowresMediaFilePath");\r
+               }\r
        }\r
 \r
        @Command\r
@@ -437,6 +460,10 @@ public class SearchModel extends AsyncBaseModel {
                this.itemSelectedValidator = itemSelectedValidator;\r
        }\r
 \r
+       private void setParameters() {\r
+               parameters = SessionUtil.getQueryString().split("&");\r
+       }\r
+\r
        public void setRowsExpanded(boolean rowsExpanded) {\r
                this.rowsExpanded = rowsExpanded;\r
        }\r