diff options
Diffstat (limited to 'public/app/views/components')
| -rw-r--r-- | public/app/views/components/footer.php | 240 | ||||
| -rw-r--r-- | public/app/views/components/lessons_list.php | 49 |
2 files changed, 264 insertions, 25 deletions
diff --git a/public/app/views/components/footer.php b/public/app/views/components/footer.php new file mode 100644 index 0000000..7cd4a5a --- /dev/null +++ b/public/app/views/components/footer.php @@ -0,0 +1,240 @@ +<?php + +use app\extends\Cache_service; + + +/** DESIGNERS + * ----------------------------------------------------------------------------- + * + * structures that combine several design information + * in a json structrure and parses inta a quite complicated view; + * + * co-operate with pages + * + * can be used to rended menus, sections like header or footer etc; + * + * TODO: + * + embed it as a core \Render method + * + dynamic designers + * + recursive designers + * + * Here we implement a simplified version of the consept + * where entities shall always be `pages` + * + * + * PARAMETRES + * --- -- -- - - - + * + * primary properties of designer structure are 2 properties + * + * @var class (string): container class name + * @var struct (json array): representatoion of the "to-be-designed" structure + * + * TODO: support more complx `class` strings ex. `.container>#footer>row` + * + * + * Each sub-structure has 2-5 properties: + * + * @var title (string) : title of the sub-section + * @var entity (string) : type of entity (ex: page/lesson/etc; TODO: method of CMS_model?) + * @var list (array) : list of entity id(s) + * @var template (string) : template that is used to draw the listed pages' info + * @var width (string) : class that relates to sub-structure's width + * + * NOTE: + * designer parsing and rendering can be a quite expensive proccess + * thus it is strongly recommented to use cached entities + * + * + * Example structure: + { + "class" : "row", # container class + "struct" : [ + { # block 1 + "title" : "", + "entity" : "page", + "list" : [2, 1, 3], # pages to be listed + "template" : "list", # list page titles with link to the pages + "width" : "col-md-4" + }, + { + "template" : "null", # list nothing + "width" : "col-md-3" + }, + { + "entity" : "page", + "list" : [4], # list content of page 4; + "template" : "content", # set title to page-title + "width" : "col-md-5" + } + + TODO: (wish) + ,{ + "template": "struct", + "struct" : [ + { + title, entity, list, template, width + }, + ... + ] + } + ] + } + * + * brainstormin: (TODO:) + * use some document-describe stucture like the one on the pdfmake js-library + * ----------------------------------------------------------------------------- + */ + + +/** check imported variables / data + * ----------------------------------------------------------------------------- + */ +if (!isset($designer)) { + + // default designer (and first case-study) + $designer = '{ + "class" : "row", + "struct" : [ + { + "title" : "Πληροφορίες", + "entity" : "page", + "list" : [2, 1, 3, 4], + "template" : "list", + "width" : "col-md-4 no-list-mark" + }, + { + "entity" : "page", + "list" : [6], + "template" : "content", + "width" : "col-md-3 no-list-mark" + }, + { + "entity" : "page", + "list" : [5], + "template" : "content", + "width" : "col-md-5 no-list-mark" + } + ] + }'; +} + +// $entity list shall be passed +// entity link url shall be passed + + +/** templating functions + * ----------------------------------------------------------------------------- + */ + +/** List template + * --- -- -- - - - + * + * lists entity titles with links + * in a `ul>li` html-structure + * + * @param $title + * @param $list + * @param $container + */ +function list_template($title, $list, $container, $entity) { + + $result = '<div class="'. $container .'"> + <h4>'. $title .'</h4> + <ul>'; + + foreach($list as $id) { + + if ($entity[$id]['status'] == 1) { // if entity is published + $result .= ' + <li> + <a href="/page/'. $id . '"> + ' . $entity[$id]['title'] .' + </a> + </li>'; + } + + } + return $result . '</ul></div>'; +} + +/** content_template + * + * lists whole title and content of entity + * + * @param $list + * @param $container + */ +function content_template($list, $container, $entity) { + + $parsedown = new Parsedown(); + + $result = '<div class="'. $container .'"><ul>'; + + foreach($list as $id) { + + if ($entity[$id]['status'] == 1) { // if entity is published + + $result .= ' + <li> + <h4>'. $entity[$id]['title'] .'</h4> + <div>'. $parsedown->text($entity[$id]['body']) .'</div> + </li>'; + } + + } + return $result .'</ul></div>'; +} + + +/** ready to start the proccessing + * ----------------------------------------------------------------------------- + */ + +// decode ... +$parse = json_decode($designer); + +/** then start parse-proccessing ... + * ----------------------------------------------------------------------------- + */ +?> + + + +<div class="<?=$parse->class?>"> + + <?php + foreach( $parse->struct as $section ) { + + switch ($section->template) { + + case 'list': + echo list_template( + $section->title, + $section->list, + $section->width, + $entity + ); + break; + + case 'content': + echo content_template( + $section->list, + $section->width, + $entity + ); + break; + + default: // ex. 'null' + + echo '<div class="'. $section->width .'"> + <h4>'. $section->title.'</h4> + </div>'; + } + + } + ?> + +</div> + + diff --git a/public/app/views/components/lessons_list.php b/public/app/views/components/lessons_list.php index 46c1f7e..a778d59 100644 --- a/public/app/views/components/lessons_list.php +++ b/public/app/views/components/lessons_list.php @@ -16,40 +16,39 @@ * ----------------------------------------------------------------------------- */ ?> -<div class="row"> - <?php foreach($lessons as $post) : ?> - <!-- <div class="col-xl-4 col-lg-6"> --> - <div class="post-card"> +<?php foreach($lessons as $post) : ?> - <?php if (in_array('date', $fieldset)) : ?> - <?=$post['date']?> - <?php endif; ?> + <!-- <div class="col-xl-4 col-lg-6"> --> + <div class="post-card"> - <div class="post-card--content"> + <?php if (in_array('date', $fieldset)) : ?> + <?=$post['date']?> + <?php endif; ?> - <h3> - <a href="/lesson/<?=$post['id']?>"><?=$post['title']?></a> - </h3> + <div class="post-card--content"> - <?php if (in_array('level', $fieldset)) : ?> - <p class="getegory">(επίπεδο πρόσβασης <?=$post['privilege_id']?>)</p> - <?php endif; ?> + <h3> + <a href="/lesson/<?=$post['id']?>"><?=$post['title']?></a> + </h3> - <?php if (in_array('category', $fieldset)) : ?> - <p class="category"><?=$post['course_id']?></p> - <?php endif; ?> + <?php if (in_array('level', $fieldset)) : ?> + <p class="getegory">(επίπεδο πρόσβασης <?=$post['privilege_id']?>)</p> + <?php endif; ?> - <?php if (in_array('intro', $fieldset) && $post['intro']) : ?> - <p class="intro"><?=$post['intro']?></p> - <?php endif; ?> + <?php if (in_array('category', $fieldset)) : ?> + <p class="category"><?=$post['course_id']?></p> + <?php endif; ?> + + <?php if (in_array('intro', $fieldset) && $post['intro']) : ?> + <p class="intro"><?=$post['intro']?></p> + <?php endif; ?> - </div> + </div> - </div> - <!-- </div> --> + </div> + <!-- </div> --> - <?php endforeach; ?> +<?php endforeach; ?> -</div>
\ No newline at end of file |
