]> git.mjollnir.org Git - s9y.git/commitdiff
Finalize
authorgarvinhicking <garvinhicking>
Mon, 24 Apr 2006 17:42:26 +0000 (17:42 +0000)
committergarvinhicking <garvinhicking>
Mon, 24 Apr 2006 17:42:26 +0000 (17:42 +0000)
docs/NEWS
include/admin/images.inc.php
include/functions_images.inc.php
serendipity_admin_image_selector.php
templates/default/admin/media_choose.tpl
templates/default/admin/media_items.tpl
templates/default/admin/media_pane.tpl

index 4ac252bea60900c60f944efb45c3643c70356d70..9486865d94411ae9002ab6fc7522461f131d81b3 100644 (file)
--- a/docs/NEWS
+++ b/docs/NEWS
@@ -51,12 +51,9 @@ Version 1.1-alpha4()
             &serendipity[resizeWidth]=X&serendipity[resizeHeight]=Y
          - Track referrers by image selector and show them on detail
            page
-
-     TODO:
-         - Move/rename images/directories (browse serendipity_entries to
-           fix up image paths [using <img src="..." />]. Also move ALL
-           images of a directory, like when moving s9y installations. Put
-           this into "Sync Thumbs" or "Manage Directories" panel.
+         - Allow to move directories with files and updating all links
+           in your entries to those moved items. (MySQL only!)
+         - Allow to move single images.
      (garvinhicking)
 
    * Create a new index on the plugin DB table, optimize fetching config
index a32f9ac943099ed1361665830a1e3b4fe051f722..b07a69ca3075beae12803ee9745f56e046e8a20e 100644 (file)
@@ -67,6 +67,7 @@ switch ($serendipity['GET']['adminAction']) {
         break;
 
     case 'rename':
+        $serendipity['GET']['fid'] = (int)$serendipity['GET']['fid'];
         $file = serendipity_fetchImageFromDatabase($serendipity['GET']['fid']);
         $serendipity['GET']['newname'] = serendipity_uploadSecure($serendipity['GET']['newname'], true);
 
@@ -74,52 +75,12 @@ switch ($serendipity['GET']['adminAction']) {
             return;
         }
 
-        if (serendipity_isActiveFile(basename($serendipity['GET']['newname']))) {
-            printf(ERROR_FILE_FORBIDDEN, htmlspecialchars($serendipity['GET']['newname']));
-            return;
-        }
-
-        if ($file['hotlink']) {
-            serendipity_updateImageInDatabase(array('name' => $serendipity['GET']['newname']), $serendipity['GET']['fid']);
-        } else {
-            $newfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $serendipity['GET']['newname'] . '.' . $file['extension'];
-            $oldfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] . '.'. $file['extension'];
-            if ($serendipity['GET']['newname'] != '' && file_exists($oldfile) && !file_exists($newfile)) {
-                $renameValues = array(array(
-                    'from'   => $oldfile,
-                    'to'     => $newfile,
-                    'thumb'  => $serendipity['thumbSuffix'],
-                    'fthumb' => $file['thumbnail_name']
-                ));
-
-                serendipity_plugin_api::hook_event('backend_media_rename', $renameValues);
-
-                // Rename file
-                rename($renameValues[0]['from'], $renameValues[0]['to']);
-
-                foreach($renameValues as $renameData) {
-                    // Rename thumbnail
-                    rename($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] . (!empty($renameData['fthumb']) ? '.' . $renameData['fthumb'] : '') . '.' .  $file['extension'],
-                           $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $serendipity['GET']['newname'] . '.' . $renameData['thumb'] . '.' . $file['extension']);
-                }
-
-                serendipity_updateImageInDatabase(array('thumbnail_name' => $renameValues[0]['thumb'], 'name' => $serendipity['GET']['newname']), $serendipity['GET']['fid']);
-
-                // Forward user to overview (we don't want the user's back button to rename things again)
-            } else {
-                if (!file_exists($oldfile)) {
-                    echo ERROR_FILE_NOT_EXISTS;
-                } elseif (file_exists($newfile)) {
-                    echo ERROR_FILE_EXISTS;
-                } else {
-                    echo ERROR_SOMETHING;
-                }
+        if (!serendipity_moveMediaDirectory(null, $serendipity['GET']['newname'], 'file', $serendipity['GET']['fid'], $file)) {
     ?>
         <br />
         <input type="button" onclick="history.go(-1);" value="<?php echo BACK; ?>" class="serendipityPrettyButton" />
     <?php
                 break;
-            }
         }
 
         // if we successfully rename
@@ -370,6 +331,13 @@ switch ($serendipity['GET']['adminAction']) {
         }
 
         if (!empty($serendipity['POST']['save'])) {
+            $newDir   = serendipity_uploadSecure($serendipity['POST']['newDir']);
+            $oldDir   = serendipity_uploadSecure($serendipity['POST']['oldDir']);
+
+            if ($oldDir != $newDir) {
+                serendipity_moveMediaDirectory($oldDir, $newDir);
+                $use_dir = $newDir;
+            }
             serendipity_ACLGrant(0, 'directory', 'read', $serendipity['POST']['read_authors'], $use_dir);
             serendipity_ACLGrant(0, 'directory', 'write', $serendipity['POST']['write_authors'], $use_dir);
             echo '<div>' . sprintf(SETTINGS_SAVED_AT, serendipity_strftime('%H:%M:%S')) . '</div>';
@@ -543,7 +511,7 @@ switch ($serendipity['GET']['adminAction']) {
     <br />
     <table id="image_directory_listing" border="0" cellspacing="0" cellpadding="4" width="100%">
         <tr>
-            <td colspan="3"><strong><?php echo BASE_DIRECTORY ?></strong></td>
+            <td colspan="4"><strong><?php echo BASE_DIRECTORY ?></strong></td>
         </tr>
         <?php foreach ($folders as $folder) { ?>
         <tr>
index 557b536dc7fc80da1c624457e006b338693631a3..a9ee2e8fb7504bac1eec1fb6286e59401e159f14 100644 (file)
@@ -2112,6 +2112,7 @@ function serendipity_showPropertyForm(&$new_media, $keywordsPerBlock = 3, $is_ed
         'keywords'          => $keywords,
         'dprops'            => $dprops
     );
+    
     return serendipity_showMedia(
         $show,
         $mirror,
@@ -2379,6 +2380,14 @@ function serendipity_parsePropertyForm() {
             'authorid' => $serendipity['authorid']
         );
         serendipity_insertMediaProperty('base_hidden', '', $media['image_id'], $s9y_img['hidden']);
+        
+        if ($serendipity['POST']['oldDir'][$id] != $serendipity['POST']['newDir'][$id]) {
+            serendipity_moveMediaDirectory(
+                serendipity_uploadSecure($serendipity['POST']['oldDir'][$id]), 
+                serendipity_uploadSecure($serendipity['POST']['newDir'][$id]), 
+                'filedir', 
+                $media['image_id']);
+        }
     }
 
     foreach($serendipity['POST']['mediaKeywords'] AS $id => $keywords) {
@@ -2612,7 +2621,11 @@ function serendipity_showMedia(&$file, &$paths, $url = '', $manage = false, $lin
 
     $media = array_merge($media, $smarty_vars);
     $media['files'] =& $file;
-    $media['paths'] =& $paths;
+    if (count($paths) > 0) {
+        $media['paths'] =& $paths;
+    } else {
+        $media['paths'] =& serendipity_getMediaPaths();
+    }
 
     $serendipity['smarty']->assign('media', $media);
 
@@ -2997,4 +3010,221 @@ function serendipity_checkMediaSize($file) {
     }
 
     return true;
+}
+
+/**
+ * Moves a media directory
+ *
+ * @param  string   The old directory
+ * @param  string   The new directory
+ * @param  string   The type of what to remove (dir|file|filedir)
+ * @param  string   An item id of a file
+ * @return boolean  
+ *
+ */
+function serendipity_moveMediaDirectory($oldDir, $newDir, $type = 'dir', $item_id = null, $file = null) {
+    global $serendipity;
+
+    $real_oldDir = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $oldDir;
+    $real_newDir = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $newDir;
+
+    if ($type == 'dir') {
+        if (!is_dir($real_oldDir)) {
+            printf(ERROR_FILE_NOT_EXISTS . '<br />', $oldDir);
+            return false;
+        }
+    
+        if (is_dir($real_newDir)) {
+            printf(ERROR_FILE_EXISTS . '<br />', $newDir);
+            return false;
+        }
+    
+        if (!rename($real_oldDir, $real_newDir)) {
+            printf(MEDIA_DIRECTORY_MOVE_ERROR . '<br />', $newDir);
+            return false;
+        }
+    
+        printf(MEDIA_DIRECTORY_MOVED . '<br />', $newDir);
+    
+        $dirs = serendipity_db_query("SELECT id, path 
+                                        FROM {$serendipity['dbPrefix']}images 
+                                       WHERE path LIKE '" . serendipity_db_escape_string($oldDir) . "%'", false, 'assoc');
+        if (is_array($dirs)) {
+            foreach($dirs AS $dir) {
+                $old = $dir['path'];
+                $new = preg_replace('@^(' . preg_quote($oldDir) . ')@i', $newDir, $old);
+                serendipity_db_query("UPDATE {$serendipity['dbPrefix']}images 
+                                         SET path = '" . serendipity_db_escape_string($new) . "' 
+                                       WHERE id = {$dir['id']}");
+            }
+        }
+    
+        $dirs = serendipity_db_query("SELECT groupid, artifact_id, artifact_type, artifact_mode, artifact_index
+                                        FROM {$serendipity['dbPrefix']}access 
+                                       WHERE artifact_type = 'directory' 
+                                         AND artifact_index LIKE '" . serendipity_db_escape_string($oldDir) . "%'", false, 'assoc');
+        if (is_array($dirs)) {
+            foreach($dirs AS $dir) {
+                $old = $dir['artifact_index'];
+                $new = preg_replace('@^(' . preg_quote($oldDir) . ')@i', $newDir, $old);
+                serendipity_db_query("UPDATE {$serendipity['dbPrefix']}access 
+                                         SET artifact_index = '" . serendipity_db_escape_string($new) . "' 
+                                       WHERE groupid        = '" . serendipity_db_escape_string($dir['groupid']) . "'
+                                         AND artifact_id    = '" . serendipity_db_escape_string($dir['artifact_id']) . "'
+                                         AND artifact_type  = '" . serendipity_db_escape_string($dir['artifact_type']) . "'
+                                         AND artifact_mode  = '" . serendipity_db_escape_string($dir['artifact_mode']) . "'
+                                         AND artifact_index = '" . serendipity_db_escape_string($dir['artifact_index']) . "'");
+            }
+        }
+    }
+    
+    if ($type == 'file') {
+        if (serendipity_isActiveFile(basename($newDir))) {
+            printf(ERROR_FILE_FORBIDDEN, htmlspecialchars($newDir));
+            return false;
+        }
+
+        if ($file['hotlink']) {
+            serendipity_updateImageInDatabase(array('name' => $newDir), $item_id);
+        } else {
+            $file_new = $file['path'] . $newDir . '.';
+            $file_old = $file['path'] . $file['name'] . '.';
+
+            $newfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file_new . $file['extension'];
+            $oldfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file_old . $file['extension'];
+            if ($newDir != '' && file_exists($oldfile) && !file_exists($newfile)) {
+                $renameValues = array(array(
+                    'from'   => $oldfile,
+                    'to'     => $newfile,
+                    'thumb'  => $serendipity['thumbSuffix'],
+                    'fthumb' => $file['thumbnail_name']
+                ));
+
+                serendipity_plugin_api::hook_event('backend_media_rename', $renameValues);
+
+                // Rename file
+                rename($renameValues[0]['from'], $renameValues[0]['to']);
+
+                foreach($renameValues as $renameData) {
+                    // Rename thumbnail
+                    rename($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $file['name'] . (!empty($renameData['fthumb']) ? '.' . $renameData['fthumb'] : '') . '.' .  $file['extension'],
+                           $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $file['path'] . $newDir . '.' . $renameData['thumb'] . '.' . $file['extension']);
+                }
+
+                serendipity_updateImageInDatabase(array('thumbnail_name' => $renameValues[0]['thumb'], 'name' => $newDir), $item_id);
+                $oldDir = $file_old;
+                $newDir = $file_new;
+                $real_oldDir = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $oldDir;
+                $real_newDir = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $newDir;
+                // Forward user to overview (we don't want the user's back button to rename things again)
+            } else {
+                if (!file_exists($oldfile)) {
+                    echo ERROR_FILE_NOT_EXISTS;
+                } elseif (file_exists($newfile)) {
+                    echo ERROR_FILE_EXISTS;
+                } else {
+                    echo ERROR_SOMETHING;
+                }
+
+                return false;
+            }
+        }
+    }
+
+    if ($type == 'filedir') {
+        serendipity_db_query("UPDATE {$serendipity['dbPrefix']}images 
+                                 SET path = '" . serendipity_db_escape_string($newDir) . "'
+                               WHERE id   = " . (int)$item_id);
+        $pick = serendipity_db_query("SELECT * FROM  {$serendipity['dbPrefix']}images 
+                               WHERE id   = " . (int)$item_id, true, 'assoc');
+
+        // Move thumbs
+        $oldfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $oldDir . $pick['name'] . '.' . $pick['extension'];
+        $newfile = $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $newDir . $pick['name'] . '.' . $pick['extension'];
+
+        $renameValues = array(array(
+            'from'   => $oldfile,
+            'to'     => $newfile,
+            'thumb'  => $serendipity['thumbSuffix'],
+            'fthumb' => $pick['thumbnail_name']
+        ));
+
+        serendipity_plugin_api::hook_event('backend_media_rename', $renameValues);
+
+        // Rename file
+        rename($renameValues[0]['from'], $renameValues[0]['to']);
+
+        foreach($renameValues as $renameData) {
+            // Rename thumbnail
+            rename($serendipity['serendipityPath'] . $serendipity['uploadPath'] . $oldDir . $pick['name'] . (!empty($renameData['fthumb']) ? '.' . $renameData['fthumb'] : '') . '.' .  $pick['extension'],
+                   $serendipity['serendipityPath'] . $serendipity['uploadPath'] . $newDir . $pick['name'] . '.' . $renameData['thumb'] . '.' . $pick['extension']);
+        }
+
+        $oldDir .= $pick['name'];
+        $newDir .= $pick['name'];
+    }
+
+    // Only MySQL supported, since I don't know how to use REGEXPs differently.
+    if ($serendipity['dbType'] != 'mysql' && $serendipity['dbType'] != 'mysqli') {
+        echo MEDIA_DIRECTORY_MOVE_ENTRY . '<br />';
+        return true;
+    }
+
+    $q = "SELECT id, body, extended
+            FROM {$serendipity['dbPrefix']}entries 
+           WHERE body     REGEXP '(src|href)=(\'|\")" . serendipity_db_escape_string($serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $oldDir) . "'
+              OR extended REGEXP '(src|href)=(\'|\")" . serendipity_db_escape_string($serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $oldDir) . "'
+    ";
+    
+    $dirs = serendipity_db_query($q);
+    if (is_array($dirs)) {
+        foreach($dirs AS $dir) {
+            $dir['body']     = preg_replace('@(src|href)=(\'|")' . preg_quote($serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $oldDir) . '@', '\1=\2' . $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $newDir, $dir['body']);
+            $dir['extended'] = preg_replace('@(src|href)=(\'|")' . preg_quote($serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $oldDir) . '@', '\1=\2' . $serendipity['serendipityHTTPPath'] . $serendipity['uploadHTTPPath'] . $newDir, $dir['extended']);
+
+            $uq = "UPDATE {$serendipity['dbPrefix']}entries 
+                                     SET body     = '" . serendipity_db_escape_string($dir['body']) . "' ,
+                                         extended = '" . serendipity_db_escape_string($dir['extended']) . "'
+                                   WHERE id       = " . serendipity_db_escape_string($dir['id']);
+            serendipity_db_query($uq);
+        }
+
+        printf(MEDIA_DIRECTORY_MOVE_ENTRIES . '<br />', count($dirs));
+    }
+    
+    return true;
+}
+
+/**
+ * Gets all available media directories
+ *
+ * @return array 
+ *
+ */
+function &serendipity_getMediaPaths() {
+    global $serendipity;
+    
+       $aExclude = array("CVS" => true, ".svn" => true);
+       serendipity_plugin_api::hook_event('backend_media_path_exclude_directories', $aExclude);
+       $paths        = array();
+
+       $aResultSet   = serendipity_traversePath(
+           $serendipity['serendipityPath'] . $serendipity['uploadPath'],
+           '',
+           false,
+           NULL,
+           1,
+           NULL,
+           FALSE,
+           $aExclude
+       );
+
+       foreach ($aResultSet AS $sKey => $sFile) {
+               if ($sFile['directory']) {
+                       array_push($paths, $sFile);
+               }
+               unset($aResultSet[$sKey]);
+       }
+    serendipity_directoryACL($paths, 'read');
+    return $paths;
 }
\ No newline at end of file
index 5dc595664c36e2e389235e1fad9d9c823faf8312..174dc54578f6aac92b4566b85c200e7251d37bfd 100644 (file)
@@ -56,7 +56,8 @@ $media = array(
     'token_url'  => serendipity_setFormToken('url'),
     'imgID'      => (int)$serendipity['GET']['image'],
     'from'       => $serendipity['GET']['from'],
-    'GET_STRING' => serendipity_build_query($import_vars, 'serendipity', '&')
+    'GET_STRING' => serendipity_build_query($import_vars, 'serendipity', '&'),
+    'paths'      => &serendipity_getMediaPaths()
 );
 
 switch ($serendipity['GET']['step']) {
@@ -143,30 +144,7 @@ switch ($serendipity['GET']['step']) {
         break;
 
     case 'tree':
-        $media['case'] = 'tree';
-       $aExclude = array("CVS" => true, ".svn" => true);
-       serendipity_plugin_api::hook_event('backend_media_path_exclude_directories', $aExclude);
-       $paths        = array();
-
-       $aResultSet   = serendipity_traversePath(
-           $serendipity['serendipityPath'] . $serendipity['uploadPath'],
-           '',
-           false,
-           NULL,
-           1,
-           NULL,
-           FALSE,
-           $aExclude
-       );
-
-       foreach ($aResultSet AS $sKey => $sFile) {
-               if ($sFile['directory']) {
-                       array_push($paths, $sFile);
-               }
-               unset($aResultSet[$sKey]);
-       }
-        serendipity_directoryACL($paths, 'read');
-        $media['paths'] =& $paths;
+        $media['case']  = 'tree';
         break;
 
     case 'showItem':
index 24e4fbd521d746084a4aae97551d592a3e0231af..ce9006ee9815206b658ce65a79d1c526ecf3603d 100644 (file)
     <div id="footerContainer">
         <div id="footer">
             <p><a id="newdirlink" target="media" class="serendipityPrettyButton" href="{$serendipityHTTPPath}serendipity_admin_image_selector.php?serendipity[step]=directoryCreate">{$CONST.WORD_NEW}</a></p>
+            <p><a id="managedirlink" target="media" class="serendipityPrettyButton" href="{$serendipityHTTPPath}serendipity_admin_image_selector.php?serendipity[step]=default&amp;serendipity[adminModule]=images&amp;serendipity[adminAction]=directorySelect">{$CONST.MANAGE_DIRECTORIES}</a></p>
         </div>
     </div>
 
index 0a1135399dc79fbe00fa8677b2eb17fca9c93f40..bc6c05353e0ffeb647349cc5ef0e0d37f4597c71 100644 (file)
@@ -11,7 +11,7 @@
                 <td valign="top" width="16" rowspan="3">
                 {if $file.is_editable}
                     <img class="serendipityImageButton" title="{$CONST.MEDIA_FULLSIZE}" alt="{$CONST.MEDIA_FULLSIZE}" src="{$media.zoomIMG}"   border="0" onclick="F1 = window.open('{if $file.hotlink}{$file.path}{else}{$file.full_file}{/if}', 'Zoom', 'height={$file.popupHeight},width={$file.popupWidth},top='+ (screen.height-{$file.popupHeight})/2 +',left='+ (screen.width-{$file.popupWidth})/2 +',toolbar=no,menubar=no,location=no,resize=1,resizable=1{if NOT $file.is_image},scrollbars=yes{/if}');" /><br />
-                    <img class="serendipityImageButton" title="{$CONST.MEDIA_RENAME}"   alt="{$CONST.MEDIA_RENAME}"   src="{$media.renameIMG}" border="0" onclick="rename('{$file.id}', '{$file.name|escape:javascript}'')" /><br />
+                    <img class="serendipityImageButton" title="{$CONST.MEDIA_RENAME}"   alt="{$CONST.MEDIA_RENAME}"   src="{$media.renameIMG}" border="0" onclick="rename('{$file.id}', '{$file.name|escape:javascript}')" /><br />
                     {if $file.is_image AND NOT $file.hotlink}<img class="serendipityImageButton" title="{$CONST.IMAGE_RESIZE}"   alt="{$CONST.IMAGE_RESIZE}" src="{$media.resizeIMG}" border="0" onclick="location.href='?serendipity[adminModule]=images&amp;serendipity[adminAction]=scaleSelect&amp;serendipity[fid]={$file.id}';" /><br />{/if}
                     {if $file.is_image AND NOT $file.hotlink}<a href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=rotateCCW&amp;serendipity[fid]={$file.id}"><img class="serendipityImageButton" title="{$CONST.IMAGE_ROTATE_LEFT}"  alt="{$CONST.IMAGE_ROTATE_LEFT}"  src="{$media.rotateccwIMG}" border="0" /></a><br />{/if}
                     {if $file.is_image AND NOT $file.hotlink}<a href="?serendipity[adminModule]=images&amp;serendipity[adminAction]=rotateCW&amp;serendipity[fid]={$file.id}"><img  class="serendipityImageButton" title="{$CONST.IMAGE_ROTATE_RIGHT}" alt="{$CONST.IMAGE_ROTATE_RIGHT}" src="{$media.rotatecwIMG}" border="0" /></a><br />{/if}
             {/if}
             </div>
         {/foreach}
+            <label for="newDir{$mediakey}">{$CONST.FILTER_DIRECTORY}</label><br />
+            <div>
+                <input type="hidden" name="serendipity[oldDir][{$mediakey}]" value="{$file.path|@escape}" />
+                <select id="newDir{$mediakey}" name="serendipity[newDir][{$mediakey}]">
+                {foreach from=$media.paths item="folder"}
+                <option {if ($file.path == $folder.relpath)}selected="selected"{/if} value="{$folder.relpath}">{'&nbsp;'|str_repeat:$folder.depth*2}{$folder.name}</option>
+                {/foreach}
+                </select>
+            </div>
         </div>
 
         <h3>{$CONST.MEDIA_KEYWORDS}</h3>
index 4a814119a5624b4ef3d0e29ce4cc5441ee93b2a1..cae0b822422f0f4f534bf5d036dd23fd758c8e46 100644 (file)
                             </td>
                         </tr>
                         {foreach from=$media.sort_order item="so_val" key="so_key"}
-                            {if $media.filter[$so_key] != ''}{assign var="show_filter" value="true"}{/if}
                         <tr>
                             <td valign="top"><span style="white-space: nowrap">{$so_val.desc}</span></td>
                             {if $so_val.type == 'date'}
+                                {if $media.filter[$so_key].from != '' OR $media.filter[$so_key].to != ''}{assign var="show_filter" value=$media.filter[$so_key]}{/if}
                             <td>
                                 <input type="text" name="serendipity[filter][{$so_key}][from]" value="{$media.filter[$so_key].from|@escape}" />
                             </td>
@@ -69,6 +69,7 @@
                                 - <input type="text" name="serendipity[filter][{$so_key}][to]" value="{$media.filter[$so_key].to|@escape}" /> (DD.MM.YYYY | YYYY-MM-DD | MM/DD/YYYY)
                             </td>
                             {elseif $so_val.type == 'intrange'}
+                                {if $media.filter[$so_key].from != '' OR $media.filter[$so_key].to != ''}{assign var="show_filter" value=$media.filter[$so_key]}{/if}
                             <td>
                                 <input type="text" name="serendipity[filter][{$so_key}][from]" value="{$media.filter[$so_key].from|@escape}" />
                             </td>
@@ -76,6 +77,7 @@
                                 - <input type="text" name="serendipity[filter][{$so_key}][to]" value="{$media.filter[$so_key].to|@escape}" />
                             </td>
                             {elseif $so_val.type == 'authors'}
+                                {if $media.filter[$so_key] != ''}{assign var="show_filter" value=$media.filter[$so_key]}{/if}
                             <td>
                                 <select name="serendipity[filter][{$so_key}]">
                                 <option value="">{$CONST.ALL_AUTHORS}</option>
@@ -85,6 +87,7 @@
                                 </select>
                             </td>
                             {else}
+                                {if $media.filter[$so_key] != ''}{assign var="show_filter" value=$media.filter[$so_key]}{/if}
                             <td>
                                 <input type="text" name="serendipity[filter][{$so_key}]" value="{$media.filter[$so_key]|@escape}" />
                             </td>
                 </div>
                 <script type="text/javascript" language="javascript">
                 {if $media.keywords_selected != '' OR $show_filter}showFilters();{/if}
+                // {$show_filter}
                 </script>
             </td>
         </tr>