<div dir="ltr">„cut-paste” în loc de „cut-delete” în comment. Greșeala mea. </div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Aug 21, 2013 at 9:52 PM,  <span dir="ltr"><<a href="mailto:automailer@dexonline.ro" target="_blank">automailer@dexonline.ro</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Author: grigoroiualex<br>
Date: Wed Aug 21 21:52:39 2013<br>
New Revision: 950<br>
<br>
Log:<br>
Creates and deletes thumbnails for uploaded visual images. TODO: rename, copy-paste, copy-delete<br>
<br>
Modified:<br>
   phplib/models/Visual.php<br>
   wwwbase/ajax/visualTag.php<br>
   wwwbase/elfinder-connector/elFinderModToDB.class.php<br>
   wwwbase/elfinder-connector/visual_connector.php<br>
   wwwbase/js/visualTag.js<br>
<br>
Modified: phplib/models/Visual.php<br>
==============================================================================<br>
--- phplib/models/Visual.php    Wed Aug 21 18:39:17 2013        (r949)<br>
+++ phplib/models/Visual.php    Wed Aug 21 21:52:39 2013        (r950)<br>
@@ -3,6 +3,8 @@<br>
 class Visual extends BaseObject implements DatedObject {<br>
   public static $_table = 'Visual';<br>
   public static $parentDir = 'visual';<br>
+  public static $thumbDir = '.thumb';<br>
+  public static $cmd, $altPath;<br>
<br>
   /** Retrieves the path relative to the visual folder */<br>
   public static function getPath($givenPath) {<br>
@@ -12,10 +14,64 @@<br>
     return $matches[0];<br>
   }<br>
<br>
+  /** Creates the absolute path of the thumb directory based on the $path parameter */<br>
+  static function thumbDirPath($path) {<br>
+    preg_match('/[^\/]+$/', $path, $name);<br>
+    $path = str_replace($name[0], '', $path);<br>
+<br>
+    return util_getRootPath() . 'wwwbase/img/' . $path . self::$thumbDir;<br>
+  }<br>
+<br>
+  /** Creates the absolute path of the thumbnail file based on the $path parameter */<br>
+  static function thumbPath($path) {<br>
+    preg_match('/[^\/]+$/', $path, $name);<br>
+    $path = str_replace($name[0], '', $path);<br>
+<br>
+    return util_getRootPath() . 'wwwbase/img/' . $path . self::$thumbDir . '/' . $name[0];<br>
+  }<br>
+<br>
+  /** Checks if the directory specified in $path is empty */<br>
+  static function isDirEmpty($path) {<br>
+    $files = scandir($path);<br>
+    if(count($files) == 2) {<br>
+      return true;<br>
+    } else {<br>
+      return false;<br>
+    }<br>
+  }<br>
+<br>
+  /** Extended by deleting removed image thumbnails */<br>
   function delete() {<br>
     VisualTag::deleteByImageId($this->id);<br>
+<br>
+    $thumbPath = self::thumbPath($this->path);<br>
+    $thumbDirPath = self::thumbDirPath($this->path);<br>
+<br>
+    if(file_exists($thumbPath)) {<br>
+      unlink($thumbPath);<br>
+    }<br>
+<br>
+    if(file_exists($thumbDirPath) && self::isDirEmpty($thumbDirPath)) {<br>
+      rmdir($thumbDirPath);<br>
+    }<br>
<br>
     parent::delete();<br>
   }<br>
+<br>
+  /** Extended by creating uploaded image thumbnail */<br>
+  function save() {<br>
+    $thumbDirPath = self::thumbDirPath($this->path);<br>
+<br>
+    if(!file_exists($thumbDirPath)) {<br>
+      mkdir($thumbDirPath);<br>
+    }<br>
+<br>
+    $thumbPath = self::thumbPath($this->path);<br>
+    $thumb = new Imagick(util_getRootPath() . 'wwwbase/img/' . $this->path);<br>
+    $thumb->thumbnailImage(200, 200, true);<br>
+    $thumb->writeImage( $thumbPath);<br>
+<br>
+    parent::save();<br>
+  }<br>
 }<br>
 ?><br>
<br>
Modified: wwwbase/ajax/visualTag.php<br>
==============================================================================<br>
--- wwwbase/ajax/visualTag.php  Wed Aug 21 18:39:17 2013        (r949)<br>
+++ wwwbase/ajax/visualTag.php  Wed Aug 21 21:52:39 2013        (r950)<br>
@@ -9,7 +9,7 @@<br>
<br>
 $resp = array('more' => 'false', 'results' => array());<br>
 foreach($lexems as $lexem) {<br>
-  $resp['results'][] = array('id' => $lexem->id, 'text' => (string)$lexem->formUtf8General);<br>
+  $resp['results'][] = array('id' => $lexem->id, 'text' => (string)$lexem->formUtf8General, 'description' => (string)$lexem->description);<br>
 }<br>
<br>
 echo json_encode($resp);<br>
<br>
Modified: wwwbase/elfinder-connector/elFinderModToDB.class.php<br>
==============================================================================<br>
--- wwwbase/elfinder-connector/elFinderModToDB.class.php        Wed Aug 21 18:39:17 2013        (r949)<br>
+++ wwwbase/elfinder-connector/elFinderModToDB.class.php        Wed Aug 21 21:52:39 2013        (r950)<br>
@@ -1,6 +1,8 @@<br>
 <?php<br>
<br>
-include_once '../../phplib/models/Visual.php';<br>
+autoloadModelsClass('Visual');<br>
+autoloadModelsClass('BaseObject');<br>
+autoloadModelsClass('DatedObject');<br>
<br>
 class elFinderModToDB extends Visual {<br>
<br>
@@ -17,6 +19,7 @@<br>
     if(!empty($result['added'])) {<br>
       foreach($result['added'] as $file) {<br>
         $path = Visual::getPath($elfinder->realpath($file['hash']));<br>
+        Visual::$cmd = $cmd;<br>
<br>
         $line = Model::factory('Visual')->create();<br>
         $line->path = $path;<br>
@@ -50,6 +53,7 @@<br>
         $oldPath = Visual::getPath($result['removed'][0]['realpath']);<br>
         $newPath = Visual::getPath($elfinder->realpath($result['added'][0]['hash']));<br>
         $entries = Model::factory('Visual')->where_like('path', "{$oldPath}/%")->find_many();<br>
+        Visual::$cmd = $cmd;<br>
<br>
         if(!empty($entries)) {<br>
           /** Directory was renamed **/<br>
@@ -63,7 +67,6 @@<br>
           $line = Visual::get_by_path($oldPath);<br>
<br>
           if(!empty($line)) {<br>
-            $line->path = $newPath;<br>
             $line->save();<br>
           }<br>
         }<br>
<br>
Modified: wwwbase/elfinder-connector/visual_connector.php<br>
==============================================================================<br>
--- wwwbase/elfinder-connector/visual_connector.php     Wed Aug 21 18:39:17 2013        (r949)<br>
+++ wwwbase/elfinder-connector/visual_connector.php     Wed Aug 21 21:52:39 2013        (r950)<br>
@@ -1,6 +1,6 @@<br>
 <?php<br>
<br>
-error_reporting(0); // Set E_ALL for debuging<br>
+error_reporting(E_ALL); // Set E_ALL for debuging<br>
<br>
 include_once __DIR__ . '/elFinderConnector.class.php';<br>
 include_once __DIR__ . '/elFinder.class.php';<br>
@@ -50,7 +50,7 @@<br>
       'uploadAllow'   => array('image'), // mimetypes allowed to upload<br>
       'disabled'      => array('resize', 'mkfile', 'duplicate'), // list of not allowed commands<br>
       'imgLib'        => 'gd', // image manipulation library (imagick, mogrify, gd)<br>
-      'tmbPath'       => '.tmb', // directory name for image thumbnails. Set to "" to avoid thumbnails generation<br>
+      'tmbPath'       => '.elfTmb', // directory name for image thumbnails. Set to "" to avoid thumbnails generation<br>
     )<br>
   )<br>
 );<br>
<br>
Modified: wwwbase/js/visualTag.js<br>
==============================================================================<br>
--- wwwbase/js/visualTag.js     Wed Aug 21 18:39:17 2013        (r949)<br>
+++ wwwbase/js/visualTag.js     Wed Aug 21 21:52:39 2013        (r950)<br>
@@ -46,8 +46,6 @@<br>
   $('#clrSel').click(function(e) {<br>
     jcrop_api.release();<br>
<br>
-    alert($('#lexem').select2('data').text);<br>
-<br>
     resetCoords();<br>
   });<br>
<br>
@@ -88,12 +86,14 @@<br>
       data: function(term, page) { return {term: term}; },<br>
       results: function(data, page) { return { results: data.results }; },<br>
     },<br>
-    formatResult: function(data) {<br>
+    formatResult: select2Format,<br>
+    /*function(data) {<br>
       return data.text;<br>
-    },<br>
-    formatSelection: function(data) {<br>
+    },*/<br>
+    formatSelection: select2Format,<br>
+    /*function(data) {<br>
       return data.text;<br>
-    },<br>
+    },*/<br>
     width: '200px',<br>
<br>
   }).on('change', function(e) {<br>
@@ -106,22 +106,26 @@<br>
 });<br>
<br>
 function validateTag() {<br>
-  var lexem = document.getElementById('lexem').value;<br>
-  var xImg = document.getElementById('xImg').value;<br>
-  var yImg = document.getElementById('yImg').value;<br>
-  var xTag = document.getElementById('xTag').value;<br>
-  var yTag = document.getElementById('yTag').value;<br>
+  var lexeme = $('#lexeme').val();<br>
+  var xImg = $('#xImg').val();<br>
+  var yImg = $('#yImg').val();<br>
+  var xTag = $('#xTag').val();<br>
+  var yTag = $('#yTag').val();<br>
<br>
-  if(!lexem) {<br>
+  if(!lexeme) {<br>
     alert('Ai uitat să completezi câmpul Cuvânt');<br>
     return false;<br>
<br>
-  } else if(!xImg || !yImg) {<br>
+  } else if(!xTag || !yTag) {<br>
     alert('Ai uitat să completezi câmpurile Coordonatele centrului etichetei');<br>
     return false;<br>
<br>
-  } else if(!xTag || !yTag) {<br>
+  } else if(!xImg || !yImg) {<br>
     alert('Ai uitat să completezi câmpurile Coordonatele zonei etichetate');<br>
     return false;<br>
   }<br>
 };<br>
+<br>
+function select2Format(lex) {<br>
+  return lex.text + '  ' + lex.description;<br>
+}<br>
_______________________________________________<br>
Dev mailing list<br>
<a href="mailto:Dev@dexonline.ro">Dev@dexonline.ro</a><br>
<a href="http://list.dexonline.ro/listinfo/dev" target="_blank">http://list.dexonline.ro/listinfo/dev</a><br>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div dir="ltr"><div><span style="font-family:georgia,serif">Toate cele bune,</span><br></div><div><font face="georgia, serif">Grigoroiu Marian Alexandru</font></div>
</div>
</div>