PluginProbe
Depicter — Popup & Slider Builder / trunk
Depicter — Popup & Slider Builder vtrunk
4.8.1 trunk 1.0.0 1.1.0 1.1.2 1.1.4 1.1.6 1.1.7 1.1.8 1.1.9 1.2.0 1.3.0 1.3.1 1.3.2 1.3.3 1.3.5 1.3.8 1.5.0 1.5.1 1.5.2 1.5.5 1.6.0 1.6.1 1.6.2 1.7.0 All 76 releases
depicter / app / src / Document / Models / Elements / Group.php

Group.php in Depicter — Popup & Slider Builder trunk, at app/src/Document/Models/Elements/Group.php

102 lines 2.6 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 namespace Depicter\Document\Models\Elements;
3
4 use Averta\Core\Utility\Arr;
5 use Depicter\Document\Models;
6 use Depicter\Html\Html;
7
8 class Group extends Models\Element
9 {
10
11 public function render() {
12
13 if ( empty( $this->childrenObjects ) ) {
14 return '';
15 }
16
17 $args = $this->getDefaultAttributes();
18
19 $div = Html::div( $args, "\n" );
20 foreach ( $this->childrenObjects as $element ) {
21 // if dataSheet is available for current group, assign it elements of this group as well
22 if( $this->getDataSheet() ){
23 $element->prepare()->setDataSheet( $this->getDataSheet() );
24 }
25
26 $div->nest( $element->prepare()->render() );
27 }
28
29 if ( false !== $a = $this->getLinkTag() ) {
30 return $a->nest( $div );
31 }
32
33 return $div . "\n";
34 }
35
36 /**
37 * Get list of selector and CSS for element and belonging child elements
38 *
39 * @return array
40 * @throws \JsonMapper_Exception
41 */
42 public function getSelectorAndCssList(){
43 parent::getSelectorAndCssList();
44
45 foreach ( $this->childrenObjects as $element ) {
46 $element->isChild = true;
47 $this->selectorCssList = Arr::merge( $this->selectorCssList, $element->prepare()->getSelectorAndCssList() );
48 }
49
50 return $this->selectorCssList;
51 }
52
53 /**
54 * Retrieves list of fonts used in typography options
55 *
56 * @return array
57 * @throws \JsonMapper_Exception
58 */
59 public function getFontsList()
60 {
61 $fontsList = parent::getFontsList();
62 if ( empty( $this->childrenObjects ) ) {
63 return '';
64 }
65
66 foreach ( $this->childrenObjects as $element ) {
67 if ( $element->type == 'group' ) {
68 $elementFontsList = $this->getGroupFonts($element);
69 $fontsList = Arr::merge( $elementFontsList, $fontsList);
70 continue;
71 }
72
73 $elementFontsList = ! empty( $element->prepare()->styles ) ? $element->prepare()->styles->getFontsList() : [];
74 \Depicter::app()->documentFonts()->addFonts( $element->getDocumentID(), $elementFontsList, 'google' );
75 $fontsList = Arr::merge( $elementFontsList, $fontsList);
76 }
77
78 return $fontsList;
79 }
80
81 public function getGroupFonts($element) {
82 $fontsList = [];
83 $element = $element->prepare();
84 if ( empty( $element->childrenObjects ) ) {
85 return '';
86 }
87
88 foreach ( $element->childrenObjects as $innerElement ) {
89 if ( $innerElement->type == 'group') {
90 $innerElementFontsList = $this->getGroupFonts($innerElement);
91 $fontsList = Arr::merge( $innerElementFontsList, $fontsList);
92 continue;
93 }
94
95 $innerElementFontsList = ! empty( $innerElement->prepare()->styles ) ? $innerElement->prepare()->styles->getFontsList() : [];
96 \Depicter::app()->documentFonts()->addFonts( $innerElement->getDocumentID(), $innerElementFontsList, 'google' );
97 }
98
99 return $fontsList;
100 }
101 }
102