[dev] [commit] r950 - phplib/models wwwbase/ajax wwwbase/elfinder-connector wwwbase/js

Cătălin Frâncu cata at francu.com
Fri Aug 23 16:43:44 EEST 2013


Răspund cu un pic de întârziere, scuze. Fac acum un mic commit cu ce am 
de corectat la r950 și r951.

- isDirEmpty: o mut în OS.php, că e utilă în general. Evident, va fi 
apelată cu OS::isDirEmpty($path).

- tot acolo scriu, mai scurt,

return count($files) == 2;

- elFinderModToDB.class.php: ideea de a seta câmpuri statice pe Visual 
este cam neortodoxă, în sensul că introduce un mecanism cam arbitrar 
prin care controllerul îi spune modelului „vezi că suferi operația 
asta”. În loc de asta, am modificat funcția Visual::save() ca să încarce 
varianta originală a obiectului. Prin comparație, își dă imediat seama 
dacă este upload / copy-paste (originalul nu există) sau rename / 
cut-paste (originalul are o cale diferită). Nici asta nu e ideal, dar 
parcă îmi place mai mult că obiectul nu necesită operații externe 
(setarea lui $cmd) ca să salveze ca lumea.

- Visual.php: am făcut metodele getThumbDir și get ThumbPath nestatice. 
Cred că e o încapsulare mai bună, căci acele valori aparțin de fiecare 
obiect.

- De asemenea, am folosit basename() și dirname(), care sunt mai 
intuitive decât un regexp.

Cătălin


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


More information about the Dev mailing list