Nu tror jeg, det må være tid til at få udfordret mit syn på et lille hobbyprojekt, jeg har arbejdet på i den seneste tid.
•
Fotografernes Debat QinoKan du gøre Qino bedre?Det jeg håber du vil hjælpe med er, at du naturligvis opretter
en gratis profil, prøver hjemmesiden af, uploader de flotteste billeder du har taget. Herefter vil jeg meget gerne høre om dine oplevelser, og dine forslag til hvad der kan gøres bedre.
Alt hvad du finder er jeg glad for, og du kan skrive det direkte på hjemmesiden her:
http://qino.dk/community/topic/hjalp-os-kan-du-gore-qino-bedreLidt om QinoHjemmesiden er tiltænkt de fotografer der må ønske at forbedre deres kunnen indenfor fotografering. Samtidig kan de så give kritik og analysere billeder fra andre spirende fotografer, og i samarbejde dyrker alle deres interesse, og bliver inspireret af hinanden. På både amatør- og professionelt plan.
Det kan du findeQino er en hjemmeside, bestående af debatforum, galleri, samt gratis profiler med mulighed for showcase af egne billeder. Der ligger allerede nu planer om flere tiltag, der hjælper fotografer med nogle af de udfordringer, man dagligt slås med. Bl.a. at få kritik af sine værker.
Derudover kommer der andre muligheder for showcasing af billeder, samt optimering mod mobile enheder.
På forhånd tak
Eksta: Lidt inspiration til jeres egen udvikling
I starten af projektet blev der udviklet et meget simpelt koncept omkring templates. Dette basere sig lidt på idéen omkring master templates kontra de ældre header,body,footer templates - som mange sikkert stadig kæmper med på deres arbejde. Endvidere springer dette koncept over de mange smarty-features og alt muligt andet parser-gøgl, og slutter tæt omkring hvad PHP engang var - et template-sprog.
Nedestående er lidt lir til dem der måtte ønske det:
- <?php
- /**
- * Licens: Fri udnyttelse, afbenyttelse, tilpasning og hvad der ellers ønskes.
- */
-
- /**
- * @namespace
- */
- namespace Qino\System\Web\UI\TemplateEngine;
-
- /**
- * PHtml render engine
- */
- class PHtml {
- /**
- * Root path where templates is located
- *
- * @var string
- */
- protected $root = null;
-
- /**
- * Template data
- *
- * @var array
- */
- protected $data = array();
-
- /**
- * Constructor
- *
- * @param string $root
- */
- public function __construct($root) {
- $this->root = $root;
- }
-
- /**
- * Assign template variables.
- *
- * @param string|array $vars
- * @param mixed $value (optional)
- */
- public function assign($vars) {
- $args = func_get_args();
- if(func_num_args() === 1 && is_array($args[0])) {
- foreach($vars as $key => $value) {
- $this->assign($key, $value);
- }
- } else {
- $this->data[$args[0]] = $args[1];
- }
- return $this;
- }
-
- /**
- * Parse a template
- *
- * @param string $path Path to template relative to root.
- * @param array $vars (optional) add extra template variables
- * @return string
- */
- public function parse($path, array $vars = null) {
- return $this->doParse($path, $vars ? array_merge($this->data, $vars) : $this->data);
- }
-
- /**
- * Parse a template block
- *
- * @param string $path Path to template relative to root.
- * @param array $vars (optional) add extra template variables
- * @return void
- */
- protected function block($path, array $vars = null) {
- if(!is_file($path)) {
- $path = $this->root.DIRECTORY_SEPARATOR.$path;
- }
- echo $this->doParse($path, $vars ? array_merge($this->data, $vars) : $this->data);
- }
-
- /**
- * Transforms special characters into HTML entities for safe escaping.
- *
- * @param string $content
- * @return string
- */
- protected function escape($content) {
- return htmlentities($content, ENT_QUOTES, 'UTF-8');
- }
-
- /**
- * Loads and parses template into a string
- *
- * @param string $_path
- * @param array $_vars
- * @throws Exception
- */
- protected function doParse($_path, array $_vars = null) {
- try {
- extract($_vars);
- ob_start();
- include $_path;
- return ob_get_clean();
- } catch(\Exception $e) {
- ob_flush();
- throw $e;
- }
- }
- }
Ud over ovenstående har jeg faktisk en View component, der benytter denne klasse til et master/block template setup, som er i sig selv ret så enkelt:
index.php- $master = new Qino\System\Web\UI\TemplateEngine\PHtml('/path/to/views');
- $master->assign('_template', 'index.phtml')
- ->assign(array(
- 'page_title' => 'Foobar',
- 'page_content' => 'Lorem Ipsum'
- ));
- echo $master->parse('master.phtml');
master.phtml- <html>
- <head>
- <title>Master template</title>
- </head>
- <body>
- <?php echo $this->block($_template); ?>
- </body>
- </html>
index.phtml- <div>
- <h1><?php echo $page_title; ?></h1>
- <p><?php echo $page_content; ?></p>
- <?php $this->block('child-block-template.phtml'); ?>
- </div>
Indlæg senest redigeret d. 15.07.2013 22:19 af Bruger #10216