Symfony: Le ultime 2 settimane
Lo sviluppo di Symfony procede senza sosta, mentre tutti eravamo in fierie (o quasi..), il team e tutto la comunità che gli gira intorno hanno prodotto in ogni campo, nuovi Blogger, nuovi Plugin e un continuo refactoring del codice in previsione dell’imminente rilascio della versione 1.1
Comunque, proprio oggi l’annuncio di Fabien Potencier di delegare il branch 1.0.x a Noël Guilbert and Grégoire Hubert (per concentrarsi completamente sullo sviluppo della nuova revisione) che avranno (l’ingrato) compito di mantenere viva questa versione con bugfix e aggiornamenti di sicurezza, ma senza l’introduzione di nuove features.
Mentre per quanto riguarda il versante Plugin, molte sono le novità:
- sfCssTabsPlugin: Generazione di Tab in stile “Wordpress admin”
- sfPropelZSLSearchPlugin: Integrare Symfony, Propel e Zend Search Lucene insieme per aggiungere funzionalità di ricerca alle applicazioni
- sfPropelTextOutputBehaviorPlugin: Implementa metodi per generare in output da oggetti Propel Xml e Json
- sfTextReplacementPlugin: provides different methods to replace text with anti-aliased images which are generated on-the-fly (based on the article “Dynamic Text Replacement” at http://www.alistapart.com/articles/dynatext)
- sfLightWindowPlugin: Helper per la libreria lightwindow 2.0
- sfFLVPlayerPlugin: provides a player for flash “flv” movies. The player has been developed by Neolao and is available at http://flv-player.net/
Questi invece quelli aggiornati:
- sfSimpleCMSPlugin: released 0.7.1 version (better test data, added a
sfSimpleBlog/latestsPagescomponent, improved default CSS, fixed unpublished pages appear in main navigation when not editing) - sfDoctrinePlugin: updated externals for Doctrine to latest revision
- sfTextilePlugin: released 0.2.0 version
- sfModalBoxPlugin: released 0.3.0 version with bug fixes
- sfThumbnailCachePlugin: added
getWidthandgetHeightmethods - sfSimpleBlogPlugin: fixed number of comments displayed in post list, split the configuration into an application-wide and a project-wide file
- sfSimpleCMSPlugin: fixed non-working default page for sfSimpleCMS module, fixed wrong token name for culture, removed editor CSS from pages in View mode
- sfPokaYokePlugin: released 0.1.6 version (corrected a spelling error in the config handler)
Inoltre in Maling-list, si sta discutendo sulla creazione di un editor Rad proprio sulle librerie di Symfony (una specie di Rad-rails) quindi un plugin per Eclipse.
Una mia piccola soddisfazione, sono stato aggiunto nella lista di blogger che parlano di Symfony
Che aspettate a provarlo ?
Wordpress Plugin: Wp-image-dropshadow (ombre sulle immagini)

Ho appena creato un prototipo di un plugin, al momento sono solo poche righe di codice (giusto delle inclusioni), che permette di aggiungere dinamicamente con css e Javascript le ombre sulle immagini (come questa che vedi nel post).
Non so se gia esiste un plugin che faccia questo lavoro, ma non l’ho trovato (non è che ci abbia perso molto tempo), quindi non ho perso tempo e ne ho creato uno.
Non ho avuto tempo di creare una piccola interfaccia di amministrazione, ma nei prossimi giorni lo farò senz’altro, per adesso il funzionamento è molto semplice, basta copiarlo nella dir dei plugin ed attivarlo.
Poi, bisogno modificare il file js/shadyhotness.js:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | Behaviour.register({ '.PostContent img' : function(element) { var wrap1 = document.createElement("div"); wrap1.className = "wrap1"; wrap1.setAttribute("class", "wrap1"); var wrap2 = document.createElement("div"); wrap2.className = "wrap2"; wrap2.setAttribute("class", "wrap2"); var wrap3 = document.createElement("div"); wrap3.className = "wrap3"; wrap3.setAttribute("class", "wrap3"); var outerNode = element.parentNode; outerNode.insertBefore(wrap1, element); wrap1.appendChild(wrap2); wrap2.appendChild(wrap3); outerNode.removeChild(element); wrap3.appendChild(element); } }); |
La riga incriminata è la 2, esattamente “.Postcontent img”, cioè tutte le immagini che sono dentro la classe .PostContent (che rispecchia il mio CSS), quindi cambiare “.Postcontent” con la tua classe CSS che racchiude i post.
Vi prometto che farò un interfaccina di amministrazione al più presto.
Il codice è stato preso da: http://sporkmonger.com/2006/01/15/the-shady-hotness
Il plugin utilizza lo script Behaviour.js. dove potete trovare tutta la documentazione.
Potete scaricare il plugin qui: wp-image-dropshadow.tar.gz
Attendo vostri feedback
Come realizzare un clone di Youtube in PHP

Se vi siete mai chiesti come realizzare un clone di youtube totalmente in PHP (magari con Symfony), non vi resta che leggere quest’articolo da Vexxblog, che ci spiega passo passo come convertire e codificare i video nel blasonato formato FLV.
Il processo richiede alcuni passaggi, prima di tutto l’installazione del modulo ffmpeg-php, che farà tutto il lavoro sporco di conversione/codifica, passare il file in input (magari inviato da un utente appunto) allo script con php-ffmpeg e infine (ovviamente) salvare il file in formato FLV nel DB o su filesystem.
Putroppo gli script richiedono l’utilizzo della funzione exec(), che in molti shared hosting (buona pratica) è disabilitato, proprio per evitare spiacevoli situazioni e gli script come sono pubblicati non hanno un minimo controllo sugli errori.
Quando avrò un po di tempo, vedrò di riproporre lo stesso codice, ma come modulo Symfony, utilizzando al meglio le Best Practices.
Se volete dare un occhio al codice, andate qui.
Update: Ho trovato anche questa classe, completamente ad oggetti PHP5, direttamente la descrizione ufficiale:
This class is a wrapper around the ffmpeg program to manipulate and convert video files.
Currently it can perform several types of manipulation operations that include video format conversion, extract video frames into separate image files and assemble a video stream from a set of separate video images.
Several parameters can also be configured like the output video file format (which can be Flash video or any other supported by ffmpeg), video and audio bit rate and sample rate, video dimensions and aspect ratio.
Non l’ho ancora provata, ma ci farò un pensierino.
[Symfony]: YUI Tooltip helper
Avevo bisogno di una libreria solida che mi permettesse di avere dei tooltip e anche altri effetti javascript, era da tempo che volevo provare la YUI (Yahoo User Interface), una libreria immensa di codice, molto documentata e facile da utilizzare, cosi non ho perso tempo e ho creato subito un piccolo Helper per Symfony (si adoro questo framework ogni giorno di più)
Questo è il codice:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | _addYahooResources(); function tooltip($element_id, $text, $delay = 250, $options = array()) { $options['context'] = $element_id; $options['text'] = $text; $options['delay'] = $delay; $code = 'myTooltip = new YAHOO.widget.Tooltip("myTooltip",'._my_options_for_javascript($options).');'; return javascript_tag($code); } function _addYahooResources() { $response = sfContext::getInstance()->getResponse(); /* Stylesheet */ $response->addStylesheet('http://yui.yahooapis.com/2.3.0/build/container/assets/container.css'); /* Javascript */ $response->addJavascript('http://yui.yahooapis.com/2.3.0/build/yahoo-dom-event/yahoo-dom-event.js'); $response->addJavascript('http://yui.yahooapis.com/2.3.0/build/animation/animation-min.js'); $response->addJavascript('http://yui.yahooapis.com/2.3.0/build/container/container-min.js'); } function _my_options_for_javascript($options) { $opts = array(); foreach ($options as $key => $value) { $value = '"'.$value.'"'; $opts[] = "$key:$value"; } sort($opts); return '{'.join(', ', $opts).'}'; } |
L’utilizzo è molto semplice, basta copiare questo helper in app/{APPLICAZIONE}/lib/helper/chiamalocomevuoiHelper.php
E poi chiamare la funzione quando ne avete bisogno nei template, in questo modo:
1 | < ?php echo tooltip('id_elemento','testo'); ?> |
L’helper supporta anche tutti i parametri della libreria originale, basta passarli in un array come terzo parametro.
Symfony si preoccuperà di caricare la libreria automaticamente, non vi resta che utilizzarla.
Per la documentazione del codice YUI Tooltip fate riferimento a questo sito:
http://developer.yahoo.com/yui/container/tooltip/ (documentazione ufficiale)
Per ora è tutto, ci sentiamo al prossimo helper ![]()