/
CustomColumn.php
111 lines (94 loc) · 2.85 KB
/
CustomColumn.php
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
namespace Concrete\Core\Area\Layout;
use HtmlObject\Element;
use Loader;
class CustomColumn extends Column
{
/**
* @var int;
*/
public $arLayoutColumnWidth;
/**
* @param int $arLayoutColumnID
*
* @return static
*/
public static function getByID($arLayoutColumnID)
{
$db = Loader::db();
$row = $db->GetRow('select * from AreaLayoutCustomColumns where arLayoutColumnID = ?', array($arLayoutColumnID));
if (is_array($row) && $row['arLayoutColumnID']) {
$al = new static();
$al->loadBasicInformation($arLayoutColumnID);
$al->setPropertiesFromArray($row);
return $al;
}
}
/**
* @param Column $newAreaLayout
*
* @return CustomColumn
*/
public function duplicate($newAreaLayout)
{
$areaLayoutColumnID = parent::duplicate($newAreaLayout);
$db = Loader::db();
$v = array($areaLayoutColumnID, $this->arLayoutColumnWidth);
$db->Execute('insert into AreaLayoutCustomColumns (arLayoutColumnID, arLayoutColumnWidth) values (?, ?)', $v);
$newAreaLayoutColumn = self::getByID($areaLayoutColumnID);
return $newAreaLayoutColumn;
}
/**
* @param \SimpleXMLElement $node
*/
public function exportDetails($node)
{
$node->addAttribute('width', $this->arLayoutColumnWidth);
}
public function getAreaLayoutColumnClass()
{
return 'ccm-layout-column';
}
protected function getColumnElement($contents)
{
$element = new Element('div');
$element->addClass($this->getAreaLayoutColumnClass())->id('ccm-layout-column-'.$this->arLayoutColumnID);
$inner = new Element('div');
$inner->addClass('ccm-layout-column-inner');
$inner->setValue($contents);
$element->appendChild($inner);
return $element;
}
public function getColumnHtmlObject()
{
$contents = $this->getContents();
return $this->getColumnElement($contents);
}
public function getColumnHtmlObjectEditMode()
{
$contents = $this->getContents(true);
return $this->getColumnElement($contents);
}
/**
* @return int
*/
public function getAreaLayoutColumnWidth()
{
return $this->arLayoutColumnWidth;
}
/**
* @param int $width
*/
public function setAreaLayoutColumnWidth($width)
{
$this->arLayoutColumnWidth = $width;
$db = Loader::db();
$db->Execute('update AreaLayoutCustomColumns set arLayoutColumnWidth = ? where arLayoutColumnID = ?', array($width, $this->arLayoutColumnID));
}
public function delete()
{
$db = Loader::db();
$db->Execute("delete from AreaLayoutCustomColumns where arLayoutColumnID = ?", array($this->arLayoutColumnID));
parent::delete();
}
}