<?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
</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
</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
\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
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
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
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
reinit();\r
}\r
\r
- //load cache event\r
+ // load cache event\r
public void addEventListener(EventListener listener) {\r
eventListenerList.add(listener);\r
}\r
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
return cacheEnd;\r
}\r
\r
- //zul felulet hasznalja kiirashoz\r
+ // zul felulet hasznalja kiirashoz\r
public int getCacheStart() {\r
return cacheStart;\r
}\r
\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
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
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
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
}\r
}\r
\r
- //kintrol is hivhatjak\r
+ // kintrol is hivhatjak\r
public void reinit() {\r
this.resultSetSize = -1;\r
this.cacheStart = 0;\r
--- /dev/null
+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
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
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
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
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
\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
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
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
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
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
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
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
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