git-tfs-id: [http://tfs.userrendszerhaz.hu:8080/tfs/DefaultCollection]$/MediaCube...
authorVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 11 Apr 2018 19:35:26 +0000 (19:35 +0000)
committerVásáry Dániel <daniel.vasary@userrendszerhaz.hu>
Wed, 11 Apr 2018 19:35:26 +0000 (19:35 +0000)
24 files changed:
server/user.commons.log4j2/src/user/commons/log4j2/appender/SmtpManager.java
server/user.jobengine.executors/src/user/jobengine/server/steps/BatchRetrieveForkStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/CleanupMountedLocationStep.java
server/user.jobengine.executors/src/user/jobengine/server/steps/FakeStep.java
server/user.jobengine.osgi.commons/src/user/commons/MediaCubeFinishMarker.java
server/user.jobengine.osgi.db/src/user/jobengine/db/ItemDAOEx.java
server/user.jobengine.osgi.server/WEB-INF/web.xml
server/user.jobengine.osgi.server/WEB-INF/zk.xml
server/user.jobengine.osgi.server/img/ic_visibility_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/ic_visibility_off_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_bug_report_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_group_work_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_invert_colors_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_language_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_perm_camera_mic_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_picture_in_picture_alt_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_picture_in_picture_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_settings_brightness_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_theaters_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/img/types/ic_view_quilt_black_18dp.png [new file with mode: 0644]
server/user.jobengine.osgi.server/pages/searchitems.zul
server/user.jobengine.osgi.server/resources/i3-label_hu.properties
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/SearchModel.java
server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TCConverter.java [new file with mode: 0644]

index 1b3a43dfb5c0f898c5ee48f4bb9c4d7038f7c00c..77bbbb7f1c37f58ee72125402f95ba2d94fd1dcc 100644 (file)
@@ -30,6 +30,7 @@ import java.util.concurrent.ConcurrentHashMap;
 import javax.activation.DataSource;
 import javax.mail.Authenticator;
 import javax.mail.Message;
+import javax.mail.Message.RecipientType;
 import javax.mail.MessagingException;
 import javax.mail.PasswordAuthentication;
 import javax.mail.Session;
@@ -283,6 +284,7 @@ public class SmtpManager extends AbstractManager {
        private void sendEmail(final String to, final String subject, byte[] content, String contentType) {
                try {
                        message.setSubject(subject);
+                       message.setRecipients(RecipientType.TO, to);
                        final String encoding = getEncoding(content, contentType);
                        final byte[] encodedBytes = encodeContentToBytes(content, encoding);
                        final InternetHeaders headers = getHeaders(contentType, encoding);
@@ -333,8 +335,9 @@ public class SmtpManager extends AbstractManager {
        private void sendEvents(final String to, final String subject, final Layout<?> layout, final List<LogEvent> events) {
                try {
                        final byte[] rawBytes = formatContentToBytes(events, layout);
-                       final String contentType = layout.getContentType();
-                       sendEmail(to, subject, rawBytes, contentType);
+                       //final String contentType = layout.getContentType();
+
+                       sendEmail(to, subject, rawBytes, "text/html; charset=utf-8");
                } catch (Exception e) {
                        logError("Caught exception while sending e-mail notification.", e);
                        throw new LoggingException("Error occurred while sending email", e);
@@ -378,10 +381,19 @@ public class SmtpManager extends AbstractManager {
        }
 
        protected void writeBuffer(List<LogEvent> events, final Layout<?> layout, final OutputStream out) throws IOException {
+               out.write("<html>".getBytes());
+               out.write("<body>".getBytes());
+
+               out.write("<table>".getBytes());
                for (final LogEvent priorEvent : events) {
+                       out.write("<tr><td>".getBytes());
                        final byte[] bytes = layout.toByteArray(priorEvent);
                        out.write(bytes);
+                       out.write("</td></tr>".getBytes());
                }
+               out.write("</table>".getBytes());
+               out.write("</body>".getBytes());
+               out.write("</html>".getBytes());
        }
 
        private void writeContent(final List<LogEvent> events, final Layout<?> layout, final ByteArrayOutputStream out) throws IOException {
index b743b704c833f871c410721747cb33a76ebb287a..a5bd517e8530e15cac538434e0592ee4c15d907c 100644 (file)
@@ -46,6 +46,7 @@ public class BatchRetrieveForkStep extends JobStep {
                        parameters.put(HOUSEID, houseId);\r
                        parameters.put(RECIPIENT, recipient);\r
                        IJobRuntime child = jobEngine.submit(jobRuntime, null, CHILD_TEMPLATE, String.format("Visszatöltés %s részére", recipient), parameters);\r
+                       ((MediaCubeMarker) child.getMarker()).setTo(recipient);\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
                        logger.error(marker, "Hiba a kötegelt visszatöltésben. A rendszer üzenete: {}", e.getMessage());\r
index a0c63645710cda685f256731e54d211b1bd55683..0921586cbdcee806a428ebb75632330dbcad5294 100644 (file)
@@ -21,6 +21,7 @@ import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang.StringUtils;\r
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
+import org.apache.logging.log4j.Marker;\r
 \r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
@@ -55,6 +56,8 @@ public class CleanupMountedLocationStep extends JobStep implements FileVisitor<P
                return false;\r
        }\r
 \r
+       private Marker marker;\r
+\r
        final int[] allCount = { 0 };\r
        final int[] currentCount = { 0 };\r
 \r
@@ -75,15 +78,16 @@ public class CleanupMountedLocationStep extends JobStep implements FileVisitor<P
 \r
        @StepEntry\r
        public Object[] execute(String sourceFolder, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
+               marker = jobRuntime.getMarker();\r
                sourcePath = Paths.get(sourceFolder);\r
                DirectoryStream<Path> directoryStream = null;\r
                if (StringUtils.isBlank(sourcePath.toString())) {\r
-                       logger.error(getMarker(), "A folyamat 'sourcePath' bemeneti paramétere üres.");\r
+                       logger.error(marker, "A folyamat 'sourcePath' bemeneti paramétere üres.");\r
                        throw new NullPointerException("System is not configured properly, 'sourceFolder' input parameter missing.");\r
                }\r
 \r
                if (!sourcePath.toFile().exists() || !sourcePath.toFile().isDirectory()) {\r
-                       logger.error(getMarker(), "A {} mappa nem létezik.", sourceFolder);\r
+                       logger.error(marker, "A {} mappa nem létezik.", sourceFolder);\r
                        throw new NullPointerException(String.format("Directory %s not exists.", sourceFolder));\r
                }\r
                try {\r
@@ -99,7 +103,7 @@ public class CleanupMountedLocationStep extends JobStep implements FileVisitor<P
                        Files.walkFileTree(sourcePath, this);\r
                } catch (Exception e) {\r
                        logger.catching(e);\r
-                       logger.error(getMarker(), "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
+                       logger.error(marker, "Az '{}' mappa elérése sikertelen. A rendszer hibaüzenete: {}", sourcePath, e.getMessage());\r
                        throw e;\r
                } finally {\r
                        if (directoryStream != null) {\r
@@ -126,12 +130,11 @@ public class CleanupMountedLocationStep extends JobStep implements FileVisitor<P
                        try {\r
                                result = dateFormat.parse(strKillDate);\r
                        } catch (ParseException e) {\r
-                               logger.error(getMarker(), "A {} fájl 'killdate' állománya hibás formátumú, a {} karaktersorozat nem konvertálható dátummá.", fileName,\r
-                                               strKillDate);\r
+                               logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, a {} karaktersorozat nem konvertálható dátummá.", fileName, strKillDate);\r
                                return null;\r
                        }\r
                } else\r
-                       logger.error(getMarker(), "A {} fájl 'killdate' állománya hibás formátumú, az dátum helyett ez áll: '{}'.", fileName, strKillDate);\r
+                       logger.error(marker, "A {} fájl 'killdate' állománya hibás formátumú, az dátum helyett ez áll: '{}'.", fileName, strKillDate);\r
                return result;\r
        }\r
 \r
@@ -159,7 +162,7 @@ public class CleanupMountedLocationStep extends JobStep implements FileVisitor<P
                        if (!removeExistingSpecialDirectory(dir, STATUSFOLDER))\r
                                return FileVisitResult.CONTINUE;\r
                        if (removeFile(dir))\r
-                               logger.info(getMarker(), "A {} üres mappa törlése sikeres.", dir);\r
+                               logger.info(marker, "A {} üres mappa törlése sikeres.", dir);\r
 \r
                }\r
                return FileVisitResult.CONTINUE;\r
@@ -184,17 +187,17 @@ public class CleanupMountedLocationStep extends JobStep implements FileVisitor<P
                        return;\r
 \r
                if (killDateFiles.size() != 1)\r
-                       logger.warn(getMarker(), "A {} fájlhoz több 'killdate' állomány található, a legújabb dátum határozza meg a törlés időpontját.", filePath);\r
+                       logger.warn(marker, "A {} fájlhoz több 'killdate' állomány található, a legújabb dátum határozza meg a törlés időpontját.", filePath);\r
 \r
                Date killDate = checkExpiration(killDateFiles);\r
                if (killDate == null)\r
                        return;\r
 \r
                if (removeFiles(filePath, killDateFiles))\r
-                       logger.info(getMarker(), "A {} fájl és kapcsolódó állományai a {} killdate bejegyzés alapján sikeresen törlődtek.", filePath.getFileName(),\r
+                       logger.info(marker, "A {} fájl és kapcsolódó állományai a {} killdate bejegyzés alapján sikeresen törlődtek.", filePath.getFileName(),\r
                                        dateFormat.format(killDate));\r
                else\r
-                       logger.warn(getMarker(), "A {} fájl és kapcsolódó állományai a {} killdate bejegyzés alapján csak részlegesen vagy egyáltalán nem törlődtek.",\r
+                       logger.warn(marker, "A {} fájl és kapcsolódó állományai a {} killdate bejegyzés alapján csak részlegesen vagy egyáltalán nem törlődtek.",\r
                                        filePath.getFileName(), dateFormat.format(killDate));\r
        }\r
 \r
@@ -203,7 +206,7 @@ public class CleanupMountedLocationStep extends JobStep implements FileVisitor<P
                if (projectPath.exists() && projectPath.isDirectory()) {\r
                        FileUtils.deleteDirectory(projectPath);\r
                        if (projectPath.exists()) {\r
-                               logger.warn(getMarker(), "A {} alatti {} mappa törlése nem sikerült.", dir, folderName);\r
+                               logger.warn(marker, "A {} alatti {} mappa törlése nem sikerült.", dir, folderName);\r
                                return false;\r
                        }\r
                }\r
@@ -218,7 +221,7 @@ public class CleanupMountedLocationStep extends JobStep implements FileVisitor<P
                        if (file.exists())\r
                                result = file.delete();\r
                } catch (Exception e) {\r
-                       logger.error(getMarker(), "A {} fájl nem törölhető. A rendszer hibaüzenete: {}", filePath, e.getMessage());\r
+                       logger.error(marker, "A {} fájl nem törölhető. A rendszer hibaüzenete: {}", filePath, e.getMessage());\r
                }\r
                return result;\r
        }\r
@@ -248,7 +251,7 @@ public class CleanupMountedLocationStep extends JobStep implements FileVisitor<P
 \r
        @Override\r
        public FileVisitResult visitFileFailed(Path file, IOException e) throws IOException {\r
-               logger.error(getMarker(), "A {} fájl nem érhető el. A rendszer hibaüzenete: {}", file.toString(), e.getMessage());\r
+               logger.error(marker, "A {} fájl nem érhető el. A rendszer hibaüzenete: {}", file.toString(), e.getMessage());\r
                return FileVisitResult.CONTINUE;\r
        }\r
 }\r
index b14dcade2fea615fa6dd21277d604217ef75a892..f93d3afca9f5af577597dead90421f160cf3d760 100644 (file)
@@ -3,6 +3,7 @@ package user.jobengine.server.steps;
 import org.apache.logging.log4j.LogManager;\r
 import org.apache.logging.log4j.Logger;\r
 \r
+import user.commons.MediaCubeMarker;\r
 import user.jobengine.server.IJobEngine;\r
 import user.jobengine.server.IJobRuntime;\r
 \r
@@ -15,7 +16,10 @@ public class FakeStep extends JobStep {
        public Object[] execute(long itemID, IJobEngine jobEngine, IJobRuntime jobRuntime) throws Exception {\r
                Object[] result = { itemID + 1 };\r
 \r
-               //logransger.info(jobRuntime.getMarker(), "Starting with {} #{}", itemID, jobRuntime.getId());\r
+               ((MediaCubeMarker) jobRuntime.getMarker()).setTo("vasary@elgekko.net");\r
+\r
+               //logger.info(jobRuntime.getMarker(), "<a href='UNC://\\10.10.1.100\\BRAAVOS\\ARCHIVE' target='blank'>usefullink</a>");\r
+               logger.info(jobRuntime.getMarker(), "Starting with {} #{}", itemID, jobRuntime.getId());\r
                //              Message message = logger.getMessageFactory().newMessage("Starting with {} #{}", itemID, jobRuntime.getId());\r
                //logger.error(jobRuntime.getMarker(), message, new Exception("TESZT"));\r
                try {\r
index accab8e91ce7ba6f202576c6805af54760dc4298..afe5f67733711823d3bfb0afd90b529306f9bc56 100644 (file)
@@ -6,6 +6,7 @@ public class MediaCubeFinishMarker extends MediaCubeMarker {
        public MediaCubeFinishMarker(MediaCubeMarker parent) {\r
                setSessionID(parent.getSessionID());\r
                setSessionName(parent.getSessionName());\r
+               setTo(parent.getTo());\r
        }\r
 \r
        public MediaCubeFinishMarker(MediaCubeMarker parent, String to) {\r
index fe496d0494b73e956e14301e08725902acce3920..c94a4a82fa532cb873c371eee56cc73cf2cf1452 100644 (file)
@@ -72,21 +72,21 @@ public class ItemDAOEx {
 \r
                StringBuilder sql = new StringBuilder();\r
                sql.append("SELECT * FROM ((");\r
-               sql.append("SELECT DISTINCT m.id, m.title FROM ITEM i, MEDIA m, MEDIAFILE mf");\r
+               sql.append("SELECT DISTINCT m.id, m.title,m.itemtypeid,m.archived FROM ITEM i, MEDIA m, MEDIAFILE mf");\r
                sql.append(" WHERE ((CONTAINS(i.title, ?) >= 1) OR (CONTAINS(i.description, ?) >= 1)) AND m.itemid = i.id AND mf.mediaid = m.id");\r
                if (typeIDs != null)\r
                        sql.append(" AND m.itemtypeid IN ").append(typeCriteria.toString());\r
                sql.append(")UNION(");\r
-               sql.append("SELECT DISTINCT m2.id,m2.title FROM ITEM i2, MEDIA m2, MEDIAFILE mf2");\r
+               sql.append("SELECT DISTINCT m2.id,m2.title,m2.itemtypeid,m2.archived FROM ITEM i2, MEDIA m2, MEDIAFILE mf2");\r
                sql.append(" WHERE ((CONTAINS(m2.title, ?) >= 1) OR (CONTAINS(m2.description, ?) >= 1)) AND m2.itemid = i2.id AND mf2.mediaid = m2.id");\r
                if (typeIDs != null)\r
                        sql.append(" AND m2.itemtypeid IN ").append(typeCriteria.toString());\r
                sql.append(")UNION(");\r
-               sql.append("SELECT DISTINCT m3.id,m3.title FROM ITEM i3, MEDIA m3, MEDIAFILE mf3");\r
+               sql.append("SELECT DISTINCT m3.id,m3.title,m3.itemtypeid,m3.archived FROM ITEM i3, MEDIA m3, MEDIAFILE mf3");\r
                sql.append(" WHERE (CONTAINS(mf3.houseId, ?) >= 1) AND m3.itemid = i3.id AND mf3.mediaid = m3.id");\r
                if (typeIDs != null)\r
                        sql.append(" AND m3.itemtypeid IN ").append(typeCriteria.toString());\r
-               sql.append(")) ORDER BY title");\r
+               sql.append(")) ORDER BY itemtypeid,archived desc");\r
 \r
                String query = sql.toString();\r
                PreparedStatement st = connection.prepareStatement(query, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_UPDATABLE);\r
index 5fbfe23e62ca66c9dcafb9131ba280e38f367c36..2aa75113c3e95f71d012289d1db855caece5c8af 100644 (file)
@@ -47,9 +47,9 @@
            <url-pattern>/test</url-pattern>\r
        </servlet-mapping>\r
 \r
-       <session-config>\r
-               <session-timeout>120</session-timeout>\r
-       </session-config>\r
+<!--   <session-config> -->\r
+<!--           <session-timeout>120</session-timeout> -->\r
+<!--   </session-config> -->\r
        <welcome-file-list>\r
                <welcome-file>index.html</welcome-file>\r
                <welcome-file>index.htm</welcome-file>\r
index 1986e0e1d747188ae61e0e8d23613efd87c1cf1b..e5ac6a4dde3dedc6823fc7f4e393c78a516dcba4 100644 (file)
@@ -10,6 +10,7 @@
            <timeout-message>Lejárt a munkamenet, kérem töltse be újra az alkalmazást.</timeout-message>\r
            <!-- timeout-uri>/timeout.zul</timeout-uri -->\r
            <automatic-timeout/>\r
+           <session-timeout>900</session-timeout>\r
        </session-config>\r
 \r
        <system-config>\r
diff --git a/server/user.jobengine.osgi.server/img/ic_visibility_black_18dp.png b/server/user.jobengine.osgi.server/img/ic_visibility_black_18dp.png
new file mode 100644 (file)
index 0000000..0f72bfa
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/ic_visibility_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/ic_visibility_off_black_18dp.png b/server/user.jobengine.osgi.server/img/ic_visibility_off_black_18dp.png
new file mode 100644 (file)
index 0000000..ad7e703
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/ic_visibility_off_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_bug_report_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_bug_report_black_18dp.png
new file mode 100644 (file)
index 0000000..b3d2e3e
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_bug_report_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_group_work_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_group_work_black_18dp.png
new file mode 100644 (file)
index 0000000..c06e231
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_group_work_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_invert_colors_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_invert_colors_black_18dp.png
new file mode 100644 (file)
index 0000000..67fb492
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_invert_colors_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_language_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_language_black_18dp.png
new file mode 100644 (file)
index 0000000..4c4a2e4
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_language_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_perm_camera_mic_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_perm_camera_mic_black_18dp.png
new file mode 100644 (file)
index 0000000..ead6835
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_perm_camera_mic_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_picture_in_picture_alt_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_picture_in_picture_alt_black_18dp.png
new file mode 100644 (file)
index 0000000..f19e38c
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_picture_in_picture_alt_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_picture_in_picture_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_picture_in_picture_black_18dp.png
new file mode 100644 (file)
index 0000000..6953525
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_picture_in_picture_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_settings_brightness_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_settings_brightness_black_18dp.png
new file mode 100644 (file)
index 0000000..3ee86f8
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_settings_brightness_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_theaters_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_theaters_black_18dp.png
new file mode 100644 (file)
index 0000000..ff0794b
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_theaters_black_18dp.png differ
diff --git a/server/user.jobengine.osgi.server/img/types/ic_view_quilt_black_18dp.png b/server/user.jobengine.osgi.server/img/types/ic_view_quilt_black_18dp.png
new file mode 100644 (file)
index 0000000..ba38be2
Binary files /dev/null and b/server/user.jobengine.osgi.server/img/types/ic_view_quilt_black_18dp.png differ
index 6d4ea9c01b38c0c59a55e8a54aa295e5969992a6..e563a8c5272d0727ca17713e39f1699fa23df219 100644 (file)
@@ -55,31 +55,35 @@ div.z-row-content span {
                        <west border="none" size="60%" splittable="true" minsize="500">\r
                                <div height="100%" width="100%">\r
                                        <groupbox vflex="min" closable="false">\r
-                                               <hbox hflex="1" pack="center" align="center">\r
-                                                       <button hflex="min" label="Típusok" popup="filter"/>\r
-                                                       <textbox focus="true" width="300px" instant="true" value="@bind(vm.searchValue)"  tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onOK="@command('doSearch')" />\r
-                                                       <button hflex="min" image="/img/ic_search_black_18dp.png" onClick="@command('doSearch')" />\r
-                                                       <popup id="filter">\r
-                                                               <vlayout vflex="min">\r
-                                                                       <checkbox label="Összes típus" checked="@bind(vm.allChecked)" />\r
-                                                                       <separator/>\r
-                                                                       <forEach items="@load(vm.typeFilterNames)" >\r
-                                                                               <checkbox label="@load(each)" checked="@bind(vm.typeFilters[each]) @validator(vm.allFilterCheckedValidator)" />\r
-                                                                       </forEach>                                                      \r
-                                                               </vlayout>                                                  \r
-                                                   </popup>                                                    \r
+                                               <vlayout>\r
+                                                       <hbox pack="left" align="top">\r
+                                                               <checkbox checked="@bind(vm.allChecked)" style="font-size:10px" />\r
+                                                               <vlayout>\r
+                                                                       <toolbar style="padding:1px;background:none;border:0px;">\r
+                                                                               <forEach items="@load(vm.topTypeFilterNames)">\r
+                                                                                       <toolbarbutton image="@load(c:cat('/img/types/', vm.typeIcons[each]))" style="font-size:9px;padding:0px;margin:0px;background:none;" label="@load(each)" mode="toggle"\r
+                                                                                               checked="@bind(vm.typeFilters[each]) @validator(vm.allFilterCheckedValidator)" />\r
+                                                                               </forEach>\r
+                                                                       </toolbar>\r
+                                                                       <toolbar style="padding:1px;background:none;border:0px;">\r
+                                                                               <forEach items="@load(vm.bottomTypeFilterNames)">\r
+                                                                                       <toolbarbutton image="@load(c:cat('/img/types/', vm.typeIcons[each]))" style="font-size:9px;padding:0px;margin:0px;background:none;" label="@load(each)" mode="toggle"\r
+                                                                                               checked="@bind(vm.typeFilters[each]) @validator(vm.allFilterCheckedValidator)" />\r
+                                                                               </forEach>\r
+                                                                       </toolbar>\r
+                                                               </vlayout>\r
+                                                       </hbox>\r
+                                               </vlayout>\r
+                                               <hbox width="100%" pack="center" align="center">\r
+                                                       <textbox hflex="1" focus="true" instant="true" value="@bind(vm.searchValue)"\r
+                                                               tooltiptext="Gépelje be a keresendő kifejezést és nyomja meg az Enter-t." onOK="@command('doSearch')" />\r
+                                                       <button hflex="min" image="/img/ic_search_black_18dp.png" onClick="@command('doSearch')" style="width:40px" />\r
                                                </hbox>\r
-<!--                                           <toolbar style="font-size:8px"> -->\r
-<!--                                                   <checkbox checked="@bind(vm.allChecked)" /> -->\r
-<!--                                                   <forEach items="@load(vm.typeFilterNames)" > -->\r
-<!--                                                           <toolbarbutton label="@load(each)" mode="toggle" checked="@bind(vm.typeFilters[each]) @validator(vm.allFilterCheckedValidator)" /> -->\r
-<!--                                                   </forEach>                                                       -->\r
-<!--                                           </toolbar> -->\r
                                        </groupbox>\r
                                        <groupbox vflex="true" closable="false">\r
                                                <grid id="itemsGrid" sizedByContent="false" span="true" vflex="true" hflex="true" mold="paging" autopaging="false"\r
                                                        model="@load(vm.searchResult)" activePage="@bind(vm.activePage)" emptyMessage="Nincs találat!"\r
-                                                       onAfterRender="@command('onPaging')"\r
+                                                       onAfterRender="@command('onPaging')" pageSize="50"\r
                                                        style="border: none; background: white !important;" oddRowSclass="listbox-odd-style">\r
                                                        <columns>\r
                                                                <column hflex="min">\r
@@ -91,7 +95,7 @@ div.z-row-content span {
                                                                <column label="ID" hflex="min" align="left" />\r
                                                                <column label="Cím" align="left" />\r
                                                                <column label="Fájlnév" hflex="min" align="left" />\r
-                                                               <column label="Megtekinthető" hflex="min" align="right" />\r
+                                                               <column label="Hossz" hflex="min" align="right" />\r
                                                        </columns>\r
                                                        <rows id="rows" style="cursor: pointer;" >\r
                                                                <template name="model">\r
@@ -103,11 +107,12 @@ div.z-row-content span {
                                                                                                sclass="myimg" content="@load(each.media.poster) @converter('user.jobengine.zk.model.ByToImageConverter')" \r
                                                                                                onClick="@command('selectMediaArchive', selectedObject=each)" />\r
                                                                                                <div sclass="details">\r
-                                                                                                       <div>\r
-                                                                                                               <label style="font: 20px Century Gothic; color: #008AC8;" value="@load(each.item.title)" />\r
-                                                                                                               <label style="" value="@load(each.media.length)" />\r
-                                                                                                               <label style="border-left: 1px solid #008AC8; border-bottom: 1px solid #008AC8; padding: 4px;" value="@load(each.media.itemType.name)" />\r
-                                                                                                       </div>\r
+                                                                                                       <hlayout>\r
+                                                                                                               <div style="width:80px; border-left:1px solid #008AC8; border-bottom:1px solid #008AC8; padding:4px;">\r
+                                                                                                                       <label style="font-size: 10px;" value="@load(each.media.itemType.name)" />\r
+                                                                                                               </div>\r
+                                                                                                               <label style="font:20px Century Gothic; color:#008AC8;" value="@load(each.item.title)" />\r
+                                                                                                       </hlayout>\r
                                                                                                        <html sclass="relevant">\r
                                                                                                        <![CDATA[\r
                                                                                                            <div style='width: 90%'>${each.relevant}</div>\r
@@ -120,7 +125,19 @@ div.z-row-content span {
                                                                                <label value="@load(each.media.houseId)" />\r
                                                                                <label value="@load(each.media.title)" />\r
                                                                                <label value="@load(each.media.mediaFilesName)" />\r
-                                                                               <checkbox checked="@load(each.media.mediaFilesCount > 1)" w:onCheck="this.setChecked(!this.isChecked())" />\r
+                                                                               <cell>\r
+                                                                                       <label style="font-size:14px" value="@load(each.media.length) @converter('user.jobengine.zk.model.TCConverter')" />\r
+                                                                                       <image src="/img/ic_visibility_black_18dp.png" style="margin-left:4px;margin-top:2px;vertical-align:top;">\r
+                                                                                               <attribute name="visible" if="${each.media.mediaFilesCount lt 2}">\r
+                                                                                                       false\r
+                                                                                               </attribute>                                            \r
+                                                                                       </image>\r
+                                                                                       <image src="/img/ic_visibility_off_black_18dp.png" style="margin-left:4px;margin-top:2px;vertical-align:top;">\r
+                                                                                               <attribute name="visible" if="${each.media.mediaFilesCount gt 1}">\r
+                                                                                                       false\r
+                                                                                               </attribute>                                            \r
+                                                                                       </image>\r
+                                                                               </cell>\r
                                                                        </row>\r
                                                                </template>\r
                                                        </rows>\r
index 893d9e3cbf63427bf0afd370685cb94fa9c2ef5a..f796582faa570359605a796bcb6d36e067213a71 100644 (file)
@@ -1,4 +1,4 @@
-version=2.3.4\r
+version=2.3.5\r
 footer=2016 © Copyright User Rendszerház Kft.\r
 \r
 login_info=Információ\r
index 9782e025c778101ab6d3236c509a02ae69eb70f6..9bb6d9eafdf250522e0c4b50f15a87e0261afb2a 100644 (file)
@@ -40,17 +40,28 @@ import user.jobengine.db.Store;
 import user.jobengine.zk.util.SessionUtil;\r
 \r
 public class SearchModel extends AsyncBaseModel {\r
+       private static final String ARG = "arg";\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 static final String AD = "Reklám";\r
+       private static final String RAW_PROMO = "Promo nyers";\r
+       private static final String PROMO = "Promo";\r
+       private static final String RAW_MATERIAL = "Műsor nyers";\r
+       private static final String MATERIAL = "Műsor";\r
+       private static final String RAW_NEWS_MATERIAL = "Hír nyers";\r
+       private static final String NEWS_MATERIAL = "Hír bejátszó";\r
        private static final Logger logger = LogManager.getLogger();\r
-       private static final String MEDIACUBEMEDIA = "mediaCubeMedia";\r
-       private static final String PAGES_RETRIEVESELECTOR_ZUL = "/pages/retrieveselector.zul";\r
        private static final String PAGES_MEDIAPLAYER = "/pages/mediaplayer.jsp?mediaurl=";\r
-       private List<String> typeFilterNames;\r
+       private String[] topTypeFilterNames;\r
+       private String[] bottomTypeFilterNames;\r
        private String searchValue = null;\r
        private CachedListModel searchResult = null;\r
        private ArchivedMedia selectedObject = null;\r
        private Validator allFilterCheckedValidator;\r
        private Validator itemSelectedValidator;\r
-       private Map<String, Object> typeFilters;\r
+       private Map<String, Boolean> typeFilters;\r
+       private Map<String, String> typeIcons;\r
        private boolean allChecked = true;\r
        private int activePage;\r
        private boolean rowsExpanded = true;\r
@@ -64,17 +75,30 @@ public class SearchModel extends AsyncBaseModel {
 \r
        public SearchModel() {\r
                typeFilters = new LinkedHashMap<>();\r
-               typeFilters.put("Hír bejátszó", true);\r
-               typeFilters.put("Hír nyersanyag", true);\r
-               typeFilters.put("Műsor", true);\r
-               typeFilters.put("Műsor nyersanyag", true);\r
-               typeFilters.put("Promo", true);\r
-               typeFilters.put("Promo nyersanyag", true);\r
-               typeFilters.put("Reklám", true);\r
-               typeFilters.put("Reklám nyersanyag", true);\r
-               typeFilters.put("Visszarögzített", true);\r
-               typeFilters.put("Egyéb", true);\r
-               typeFilterNames = new ArrayList<>(typeFilters.keySet());\r
+               typeFilters.put(NEWS_MATERIAL, true);\r
+               typeFilters.put(RAW_NEWS_MATERIAL, true);\r
+               typeFilters.put(MATERIAL, true);\r
+               typeFilters.put(RAW_MATERIAL, true);\r
+               typeFilters.put(PROMO, true);\r
+               typeFilters.put(RAW_PROMO, true);\r
+               typeFilters.put(AD, true);\r
+               typeFilters.put(RAW_AD, true);\r
+               typeFilters.put(RECORDING, true);\r
+               typeFilters.put(GENERIC, true);\r
+               topTypeFilterNames = new String[] { NEWS_MATERIAL, RAW_NEWS_MATERIAL, RECORDING, GENERIC };\r
+               bottomTypeFilterNames = new String[] { MATERIAL, RAW_MATERIAL, PROMO, RAW_PROMO, AD, RAW_AD };\r
+\r
+               typeIcons = new LinkedHashMap<>();\r
+               typeIcons.put(NEWS_MATERIAL, "ic_language_black_18dp.png");\r
+               typeIcons.put(RAW_NEWS_MATERIAL, "ic_perm_camera_mic_black_18dp.png");\r
+               typeIcons.put(MATERIAL, "ic_theaters_black_18dp.png");\r
+               typeIcons.put(RAW_MATERIAL, "ic_invert_colors_black_18dp.png");\r
+               typeIcons.put(PROMO, "ic_picture_in_picture_black_18dp.png");\r
+               typeIcons.put(RAW_PROMO, "ic_bug_report_black_18dp.png");\r
+               typeIcons.put(AD, "ic_picture_in_picture_alt_black_18dp.png");\r
+               typeIcons.put(RAW_AD, "ic_settings_brightness_black_18dp.png");\r
+               typeIcons.put(RECORDING, "ic_group_work_black_18dp.png");\r
+               typeIcons.put(GENERIC, "ic_view_quilt_black_18dp.png");\r
 \r
                allFilterCheckedValidator = new Validator() {\r
                        @Override\r
@@ -97,7 +121,7 @@ public class SearchModel extends AsyncBaseModel {
                        public void validate(ValidationContext ctx) {\r
                                try {\r
 \r
-                                       ArchivedMedia item = (ArchivedMedia) ctx.getValidatorArg("arg");\r
+                                       ArchivedMedia item = (ArchivedMedia) ctx.getValidatorArg(ARG);\r
                                        boolean select = (boolean) ctx.getProperty().getValue();\r
                                        MenuModel model = (MenuModel) SessionUtil.getAttribute(SessionUtil.MENUMODEL);\r
                                        model.selectArchivedMedia(item, select);\r
@@ -152,6 +176,10 @@ public class SearchModel extends AsyncBaseModel {
                return allFilterCheckedValidator;\r
        }\r
 \r
+       public String[] getBottomTypeFilterNames() {\r
+               return bottomTypeFilterNames;\r
+       }\r
+\r
        public boolean getHasLowresMediaFile() {\r
                boolean ret = false;\r
                Media media = getMedia();\r
@@ -220,7 +248,7 @@ public class SearchModel extends AsyncBaseModel {
                List<String> result = null;\r
                if (!allChecked) {\r
                        for (String label : typeFilters.keySet()) {\r
-                               boolean isChecked = (boolean) typeFilters.get(label);\r
+                               boolean isChecked = typeFilters.get(label);\r
                                if (!isChecked)\r
                                        continue;\r
                                if (result == null)\r
@@ -235,6 +263,10 @@ public class SearchModel extends AsyncBaseModel {
                return selectedObject;\r
        }\r
 \r
+       public String[] getTopTypeFilterNames() {\r
+               return topTypeFilterNames;\r
+       }\r
+\r
        public String getTSMMediaFilePath() throws Exception {\r
                String ret = "";\r
                Media media = getMedia();\r
@@ -249,12 +281,12 @@ public class SearchModel extends AsyncBaseModel {
                return ret;\r
        }\r
 \r
-       public List<String> getTypeFilterNames() {\r
-               return typeFilterNames;\r
+       public Map<String, Boolean> getTypeFilters() {\r
+               return typeFilters;\r
        }\r
 \r
-       public Map<String, Object> getTypeFilters() {\r
-               return typeFilters;\r
+       public Map<String, String> getTypeIcons() {\r
+               return typeIcons;\r
        }\r
 \r
        private void highlight(ArchivedMedia am, boolean highlight) {\r
@@ -325,7 +357,7 @@ public class SearchModel extends AsyncBaseModel {
                this.activePage = activePage;\r
        }\r
 \r
-       @NotifyChange("*")\r
+       @NotifyChange("typeFilters")\r
        public void setAllChecked(boolean allChecked) {\r
                this.allChecked = allChecked;\r
                for (String key : typeFilters.keySet())\r
@@ -377,14 +409,6 @@ public class SearchModel extends AsyncBaseModel {
                this.selectedObject = selectedObject;\r
        }\r
 \r
-       public void setTypeFilterNames(List<String> typeFilterNames) {\r
-               this.typeFilterNames = typeFilterNames;\r
-       }\r
-\r
-       public void setTypeFilters(Map<String, Object> typeFilters) {\r
-               this.typeFilters = typeFilters;\r
-       }\r
-\r
        public void updateAllChecked() {\r
                final boolean[] check = { true };\r
                for (String key : typeFilters.keySet()) {\r
diff --git a/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TCConverter.java b/server/user.jobengine.osgi.server/src/user/jobengine/zk/model/TCConverter.java
new file mode 100644 (file)
index 0000000..afe7f62
--- /dev/null
@@ -0,0 +1,27 @@
+package user.jobengine.zk.model;\r
+\r
+import org.zkoss.bind.BindContext;\r
+import org.zkoss.bind.Converter;\r
+import org.zkoss.zul.Label;\r
+\r
+public class TCConverter implements Converter<String, Long, Label> {\r
+\r
+       @Override\r
+       public Long coerceToBean(String text, Label label, BindContext context) {\r
+               return null;\r
+       }\r
+\r
+       @Override\r
+       public String coerceToUi(Long frames, Label label, BindContext context) {\r
+               double reminder = frames;\r
+               int hour = (int) Math.floor(reminder / (60 * 60 * 25));\r
+               reminder = reminder % (60 * 60 * 25);\r
+               int minute = (int) Math.floor(reminder / (60 * 25));\r
+               reminder = reminder % (60 * 25);\r
+               int sec = (int) Math.floor(reminder / 25);\r
+               reminder = reminder % 25;\r
+               int frame = (int) Math.floor(reminder);\r
+               return String.format("%02d:%02d:%02d:%02d", hour, minute, sec, frame);\r
+       }\r
+\r
+}\r