Skip to content

Commit 42977d6

Browse files
committed
Updates
* Fix of missing module constructor call (PHP8) * Fix of scenes slider * Devices: new group filter (inactive devices) * Devices: light sensor min value remove
1 parent efcb1f3 commit 42977d6

14 files changed

+81
-92
lines changed

js/easySlider1.7.js

Lines changed: 16 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -60,24 +60,25 @@
6060

6161
this.each(function() {
6262
var obj = $(this);
63-
var s = $("li", obj).length;
64-
var w = $("li", obj).width();
65-
var h = $("li", obj).height();
63+
var s = $("li.scenes_li", obj).length;
64+
var w = $("li.scenes_li", obj).width();
65+
var h = $("li.scenes_li", obj).height();
6666
var clickable = true;
6767
obj.width(w);
6868
obj.height(h);
6969
obj.css("overflow","hidden");
7070
var ts = s-1;
7171
var t = 0;
72-
$("ul", obj).css('width',s*w);
73-
72+
$("ul.scenes_ul", obj).css('width',s*w);
73+
74+
7475
if(options.continuous){
75-
$("ul", obj).prepend($("ul li:last-child", obj).clone().css("margin-left","-"+ w +"px"));
76-
$("ul", obj).append($("ul li:nth-child(2)", obj).clone());
77-
$("ul", obj).css('width',(s+1)*w);
76+
$("ul.scenes_ul", obj).prepend($("ul.scenes_ul li:last-child", obj).clone().css("margin-left","-"+ w +"px"));
77+
$("ul.scenes_ul", obj).append($("ul.scenes_ul li:nth-child(2)", obj).clone());
78+
$("ul.scenes_ul", obj).css('width',(s+1)*w);
7879
};
7980

80-
if(!options.vertical) $("li", obj).css('float','left');
81+
if(!options.vertical) $("li.scenes_li", obj).css('float','left');
8182

8283
if(options.controlsShow){
8384
var html = options.controlsBefore;
@@ -121,17 +122,17 @@
121122

122123
function setCurrent(i){
123124
i = parseInt(i)+1;
124-
$("li", "#" + options.numericId).removeClass("current");
125-
$("li#" + options.numericId + i).addClass("current");
125+
$("li.scenes_li", "#" + options.numericId).removeClass("current");
126+
$("li.scenes_li#" + options.numericId + i).addClass("current");
126127
};
127128

128129
function adjust(){
129130
if(t>ts) t=0;
130131
if(t<0) t=ts;
131132
if(!options.vertical) {
132-
$("ul",obj).css("margin-left",(t*w*-1));
133+
$("ul.scenes_ul",obj).css("margin-left",(t*w*-1));
133134
} else {
134-
$("ul",obj).css("margin-left",(t*h*-1));
135+
$("ul.scenes_ul",obj).css("margin-left",(t*h*-1));
135136
}
136137
clickable = true;
137138
if(options.numeric) setCurrent(t);
@@ -162,13 +163,13 @@
162163
var speed = diff*options.speed;
163164
if(!options.vertical) {
164165
p = (t*w*-1);
165-
$("ul",obj).animate(
166+
$("ul.scenes_ul",obj).animate(
166167
{ marginLeft: p },
167168
{ queue:false, duration:speed, complete:adjust }
168169
);
169170
} else {
170171
p = (t*h*-1);
171-
$("ul",obj).animate(
172+
$("ul.scenes_ul",obj).animate(
172173
{ marginTop: p },
173174
{ queue:false, duration:speed, complete:adjust }
174175
);

languages/default.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1399,6 +1399,7 @@
13991399
'FAVORITE_DEVICE' => 'Favorite device',
14001400
'SYSTEM_DEVICE' => 'System device',
14011401
'ARCHIVED_DEVICE' => 'Archived device',
1402+
'INACTIVE_DEVICE' => 'Inactive device',
14021403

14031404
'ROOMS' => 'Rooms',
14041405
'APPEARANCE' => 'Appearance',

languages/ru.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1396,6 +1396,7 @@
13961396
'FAVORITE_DEVICE' => 'В списке быстрого доступа',
13971397
'SYSTEM_DEVICE' => 'Системное устройство',
13981398
'ARCHIVED_DEVICE' => 'Архивное утройство',
1399+
'INACTIVE_DEVICE' => 'Неактивное устройство',
13991400

14001401
'ROOMS' => 'Комнаты',
14011402
'APPEARANCE' => 'Внешний вид',

lib/jTemplate.class.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -52,8 +52,6 @@ class jTemplate
5252
public function __construct($template, &$data, &$owner = '')
5353
{
5454

55-
$this->phpversion = (float)phpversion();
56-
5755
// set current directory for template includes
5856
if (strpos($template, "/") !== false) {
5957
$root = preg_replace("/\/[^\/]*?$/", "", $template) . "/";
@@ -607,10 +605,6 @@ function parseModules(&$res, &$hash, $dir)
607605
$code = "";
608606
$code .= "$obj=new " . $module_data["name"] . "();\n";
609607

610-
if ($this->phpversion >= 8) {
611-
$code .= "if (method_exists($obj,'" . $module_data["name"] . "')) $obj->" . $module_data["name"] . "();\n";
612-
}
613-
614608
$code .= $obj . "->owner=&\$this->owner;\n";
615609

616610
// setting module parameters from module including directive

lib/module.class.php

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,13 @@ class module
8282
*/
8383
public function __construct()
8484
{
85+
$php_version = (float)phpversion();
86+
if ($php_version >= 8) {
87+
$class_name = get_class($this);
88+
if (method_exists($this, $class_name)) {
89+
$this->$class_name();
90+
}
91+
}
8592
}
8693

8794
/**

modules/devices/SLightSensors_periodMinValueUpdated.php

Lines changed: 0 additions & 2 deletions
This file was deleted.

modules/devices/SLightSensors_valueUpdated.php

Lines changed: 0 additions & 16 deletions
This file was deleted.

modules/devices/devices_search.inc.php

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,23 @@
3030
$qry .= " AND devices.ARCHIVED=1";
3131
} elseif ($group_name == 'is:system') {
3232
$qry .= " AND devices.SYSTEM_DEVICE=1";
33+
} elseif ($group_name == 'is:inactive') {
34+
$object_names = getObjectsByProperty('alive');
35+
if (!is_array($object_names)) {
36+
$object_names = array(0);
37+
}
38+
$total = count($object_names);
39+
if ($total > 0) {
40+
for ($i = 0; $i < $total; $i++) {
41+
$val = getGlobal($object_names[$i].'.alive');
42+
if (!$val) {
43+
$res_object_names[] = "'" . $object_names[$i] . "'";
44+
}
45+
}
46+
$qry .= " AND devices.LINKED_OBJECT IN (" . implode(',', $res_object_names) . ")";
47+
} else {
48+
$qry .= " AND 0";
49+
}
3350
} elseif ($group_name == 'is:battery') {
3451
$object_names = getObjectsByProperty('batteryOperated', 1);
3552
if (!is_array($object_names)) {
@@ -99,7 +116,7 @@
99116
if ($res[0]['ID']) {
100117
//paging($res, 100, $out); // search result paging
101118
$total = count($res);
102-
$out['TOTAL_FOUND']=$total;
119+
$out['TOTAL_FOUND'] = $total;
103120
for ($i = 0; $i < $total; $i++) {
104121
// some action for every record if required
105122
if ($res[$i]['LOCATION_TITLE'] != $loc_title) {

modules/devices/devices_structure.inc.php

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -490,13 +490,7 @@
490490
'CLASS'=>'SLightSensors',
491491
'PROPERTIES'=>array(
492492
'unit'=>array('DESCRIPTION'=>LANG_DEVICES_UNIT,'_CONFIG_TYPE'=>'text'),
493-
'periodMinValue'=>array('DESCRIPTION'=>'Minimum value for period','ONCHANGE'=>'periodMinValueUpdated','KEEP_HISTORY'=>365),
494-
'periodTime'=>array('DESCRIPTION'=>'Period to calculate minimum value (seconds)','_CONFIG_TYPE'=>'num','_CONFIG_HELP'=>'SdSensorPeriodTime'),
495493
),
496-
'METHODS'=>array(
497-
'valueUpdated'=>array('DESCRIPTION'=>'Value Updated','CALL_PARENT'=>1),
498-
'periodMinValueUpdated'=>array('DESCRIPTION'=>'Period Min value updated'),
499-
),
500494
),
501495
);
502496

modules/scenes/scenes.class.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -563,11 +563,12 @@ function clone_scene($id)
563563
function usual(&$out)
564564
{
565565

566+
566567
if ($this->owner->action == 'apps') {
567568
$this->redirect(ROOTHTML . "popup/scenes.html");
568569
}
569570

570-
global $ajax;
571+
$ajax = gr('ajax');
571572
if ($ajax) {
572573
global $op;
573574
header("HTTP/1.0: 200 OK\n");

templates/classes/views/SLightSensors.html

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
<div class="device-widget sensor %.alive|"offline;online"%" onclick="var url=('<#ROOTHTML#>pChart/?p[]=%.object_title%'+'.value&p[]=%.object_title%'+'.periodMinValue&op=log&subop=24h');parent.$.fancybox.open({ src: url, type: 'iframe',iframe:{preload:false} });return false;">
1+
<div class="device-widget sensor %.alive|"offline;online"%" onclick="var url=('<#ROOTHTML#>pChart/?p[]=%.object_title%'+'.value&op=log&subop=24h');parent.$.fancybox.open({ src: url, type: 'iframe',iframe:{preload:false} });return false;">
22
<div class="device-icon light-sensor"></div>
3-
<div class="device-header">%.value% %.unit% <sub>(min: %.periodMinValue% )</sub>
3+
<div class="device-header">%.value% %.unit%
44
<span>%.direction|"-1=&#9660;1=&#9650;0=&#8801"%</span>
55
</div>
66
<div class="device-details">%.object_description%

templates/devices/devices_search_admin.html

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
<option value="is:battery_low"[#if GROUP_NAME="is:battery_low"#] selected[#endif#]>(*) <#LANG_DEVICES_BATTERY_WARNING#></option>
5050
<option value="is:archived"[#if GROUP_NAME="is:archived"#] selected[#endif#]>(*) <#LANG_ARCHIVED_DEVICE#></option>
5151
<option value="is:system"[#if GROUP_NAME="is:system"#] selected[#endif#]>(*) <#LANG_SYSTEM_DEVICE#></option>
52+
<option value="is:inactive"[#if GROUP_NAME="is:inactive"#] selected[#endif#]>(*) <#LANG_INACTIVE_DEVICE#></option>
5253
<option value="manage_groups">[ <#LANG_ADD#> / <#LANG_EDIT#> ]</option>
5354
</select>
5455
</div>

templates/scenes/scenes.tpl

Lines changed: 29 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -676,12 +676,9 @@ $(".draggable" ).draggable({ cursor: "move", snap: true , snapTolerance: 5, grid
676676
677677
678678
<div id="scenes_body">
679-
<table border="0" cellpadding="0" cellspacing="0">
680-
<tr>
681-
<td valign="top">
682679
<div style="{if $TOTAL_SCENES!="1"}width:{$smarty.const.SETTINGS_SCENES_WIDTH}px;{/if};position:relative;" class="context-menu-one">
683680
<div id="slider">
684-
{if $TOTAL_SCENES!="1"}<ul>{/if}
681+
{if $TOTAL_SCENES!="1"}<ul class='scenes_ul'>{/if}
685682
{foreach $RESULT as $SCENE}
686683
<style>
687684
{if $SCENE.DEVICES_BACKGROUND=="dark"}
@@ -695,7 +692,7 @@ $(".draggable" ).draggable({ cursor: "move", snap: true , snapTolerance: 5, grid
695692
}
696693
{/if}
697694
</style>
698-
{if $TOTAL_SCENES!="1"}<li id='scene_{$ID}' style="width:{$smarty.const.SETTINGS_SCENES_WIDTH}px;">{/if}
695+
{if $TOTAL_SCENES!="1"}<li class='scenes_li' id='scene_{$SCENE.ID}' style="width:{$smarty.const.SETTINGS_SCENES_WIDTH}px;">{/if}
699696
{if isset($SCENE.VIDEO_WALLPAPER)}
700697
<video autoplay muted loop id="myVideo" style="position: fixed;
701698
right: 0;
@@ -708,11 +705,10 @@ $(".draggable" ).draggable({ cursor: "move", snap: true , snapTolerance: 5, grid
708705
<div id="scene_wallpaper_{$SCENE.ID}" style="{if $SCENE.WALLPAPER!=""}background-image:url({$SCENE.WALLPAPER});{if $SCENE.WALLPAPER_FIXED=="1"}background-attachment: fixed;{/if}{if $SCENE.WALLPAPER_NOREPEAT=="1"}background-repeat: no-repeat;{/if}{/if};">
709706
<div id="scene_background_{$SCENE.ID}" style="position:relative;">
710707
{function name=elements}
711-
712708
{foreach $items as $ELEMENT}
713709
<!-- element {$ID} -->
714710
{if isset($ELEMENT.ELEMENTS)}
715-
<div
711+
<div
716712
class="element_{$ELEMENT.ID} type_{$ELEMENT.TYPE}{if $ELEMENT.CSS_STYLE!=""} style_{$ELEMENT.CSS_STYLE}{/if}{if $ELEMENT.BACKGROUND=="1"} container_background{/if}{if isset($DRAGGABLE)} draggable{/if}"
717713
style="{if $ELEMENT.POSITION_TYPE=="0"}position:absolute;left:{$ELEMENT.LEFT}px;top:{$ELEMENT.TOP}px;{/if}
718714
{if $ELEMENT.ZINDEX!=""}z-index:{$ELEMENT.ZINDEX};{/if}
@@ -724,9 +720,8 @@ $(".draggable" ).draggable({ cursor: "move", snap: true , snapTolerance: 5, grid
724720
{elements items=$ELEMENT.ELEMENTS}
725721
</div>
726722
{else}
727-
728723
{if $ELEMENT.TYPE=="s3d"}
729-
<div
724+
<div
730725
class="element_{$ELEMENT.ID} type_{$ELEMENT.TYPE}{if $ELEMENT.CSS_STYLE!=""} style_{$ELEMENT.CSS_STYLE}{/if} state_{$TITLE}{if $ELEMENT.BACKGROUND=="1"} html_background{/if}{if $ELEMENT.POSITION_TYPE=="1"} inlineblock{/if}{if isset($DRAGGABLE) && $ELEMENT.POSITION_TYPE=="0"} draggable{/if}"
731726
id='canvas_{$ELEMENT.ID}'
732727
style="
@@ -776,20 +771,10 @@ loader.load(
776771
objects.push(loaded.objects[obj]);
777772
}
778773
if (loaded.currentCamera) {
779-
780774
loaded.currentCamera.aspect = {$ELEMENT.WIDTH}/{$ELEMENT.HEIGHT};
781775
loaded.currentCamera.updateProjectionMatrix();
782776
default_camera=loaded.currentCamera;
783777
camera = default_camera.clone();
784-
/*
785-
var old_position = new THREE.Vector3();
786-
old_position.setFromMatrixPosition( camera.matrix );
787-
camera.matrixAutoUpdate = true;
788-
camera.position.setX(old_position.x);
789-
camera.position.setY(old_position.y);
790-
camera.position.setZ(old_position.z);
791-
*/
792-
793778
}
794779
795780
}
@@ -819,7 +804,7 @@ function onDocumentMouseDown( event ) {
819804
mouse.y = - ( (event.clientY-{$ELEMENT.TOP}) / renderer.domElement.height ) * 2 + 1;
820805
raycaster.setFromCamera( mouse, camera );
821806
822-
var intersects = raycaster.intersectObjects( objects );
807+
var intersects = raycaster.intersectObjects( objects );
823808
824809
if ( intersects.length > 0 ) {
825810
console.log('Clicked on '+intersects[0].object.name);
@@ -831,7 +816,7 @@ function onDocumentMouseDown( event ) {
831816
{/foreach}
832817
}
833818
}
834-
819+
835820
836821
</script>
837822
<div style="display:none">
@@ -846,23 +831,31 @@ function onDocumentMouseDown( event ) {
846831
{else}
847832
848833
{foreach $ELEMENT.STATES as $STATE}
849-
<div
850-
class="element_{$ELEMENT.ID} type_{$ELEMENT.TYPE}{if $ELEMENT.CSS_STYLE!=""} style_{$ELEMENT.CSS_STYLE}{/if} state_{$STATE.TITLE}{if $ELEMENT.BACKGROUND=="1"} html_background{/if}{if $ELEMENT.POSITION_TYPE=="1"} inlineblock{/if}{if isset($DRAGGABLE) && $ELEMENT.POSITION_TYPE=="0"} draggable {if $ELEMENT.RESIZABLE=="1"} resizable {$ELEMENT.RESIZABLE}{/if}{/if}"
851-
id="state_{$STATE.ID}"
852-
{if $STATE.SCRIPT_ID!="0" || $STATE.HOMEPAGE_ID!="0" || $STATE.OPEN_SCENE_ID!="0" || $STATE.EXT_URL!="" || $STATE.MENU_ITEM_ID!="0" || $STATE.ACTION_METHOD!="" || $STATE.CODE!=""}
853-
{if !isset($DRAGGABLE)}
854-
onClick="stateClicked('{$STATE.ID}');"
855-
{/if}
856-
{/if}
857-
style="
858-
{if $ELEMENT.POSITION_TYPE=="0"}position:absolute;left:{$ELEMENT.LEFT}px;top:{$ELEMENT.TOP}px;{/if}
859-
{if $ELEMENT.ZINDEX!=""}z-index:{$ELEMENT.ZINDEX};{/if}
860-
{if $ELEMENT.WIDTH!="0"}width:{$ELEMENT.WIDTH}px;{/if}{if $ELEMENT.HEIGHT!="0"}height:{$ELEMENT.HEIGHT}px;{/if}
861-
{if $STATE.SCRIPT_ID!="0" || $STATE.MENU_ITEM_ID!="0" || $STATE.ACTION_METHOD!="" || $STATE.EXT_URL!="" || $STATE.HOMEPAGE_ID!="0" || $STATE.OPEN_SCENE_ID!="0" || $STATE.CODE!=""}cursor:pointer;{/if}
862-
{if $STATE.STATE!="1"}display:none;{else}display:inline-block;{/if}">{if $ELEMENT.TYPE=="img"}<img src="{$STATE.IMAGE}" border="0">{/if}<span>{$STATE.HTML}</span></div>
834+
<div
835+
class="element_{$ELEMENT.ID}
836+
type_{$ELEMENT.TYPE}
837+
{if $ELEMENT.CSS_STYLE!=""} style_{$ELEMENT.CSS_STYLE}{/if}
838+
state_{$STATE.TITLE}
839+
{if $ELEMENT.BACKGROUND=="1"} html_background{/if}
840+
{if $ELEMENT.POSITION_TYPE=="1"} inlineblock{/if}
841+
{if isset($DRAGGABLE) && $ELEMENT.POSITION_TYPE=="0"} draggable
842+
{if $ELEMENT.RESIZABLE=="1"} resizable {$ELEMENT.RESIZABLE}{/if}
843+
{/if}"
844+
id="state_{$STATE.ID}"
845+
{if $STATE.SCRIPT_ID!="0" || $STATE.HOMEPAGE_ID!="0" || $STATE.OPEN_SCENE_ID!="0" || $STATE.EXT_URL!="" || $STATE.MENU_ITEM_ID!="0" || $STATE.ACTION_METHOD!="" || $STATE.CODE!=""}
846+
{if !isset($DRAGGABLE)}
847+
onClick="stateClicked('{$STATE.ID}');"
848+
{/if}
849+
{/if}
850+
style="
851+
{if $ELEMENT.POSITION_TYPE=="0"}position:absolute;left:{$ELEMENT.LEFT}px;top:{$ELEMENT.TOP}px;{/if}
852+
{if $ELEMENT.ZINDEX!=""}z-index:{$ELEMENT.ZINDEX};{/if}
853+
{if $ELEMENT.WIDTH!="0"}width:{$ELEMENT.WIDTH}px;{/if}{if $ELEMENT.HEIGHT!="0"}height:{$ELEMENT.HEIGHT}px;{/if}
854+
{if $STATE.SCRIPT_ID!="0" || $STATE.MENU_ITEM_ID!="0" || $STATE.ACTION_METHOD!="" || $STATE.EXT_URL!="" || $STATE.HOMEPAGE_ID!="0" || $STATE.OPEN_SCENE_ID!="0" || $STATE.CODE!=""}cursor:pointer;{/if}
855+
{if $STATE.STATE!="1"}display:none;{else}display:inline-block;{/if}">{if $ELEMENT.TYPE=="img"}<img src="{$STATE.IMAGE}" border="0">{/if}<span>{$STATE.HTML}</span></div>
863856
{/foreach}
864-
{/if}
865857
858+
{/if}
866859
{/if}
867860
868861
{if $ELEMENT.CSS!=""}
@@ -890,8 +883,5 @@ function onDocumentMouseDown( event ) {
890883
{if $TOTAL_SCENES!="1"}</ul>{/if}
891884
</div>
892885
</div> <!-- /slider -->
893-
</td>
894-
</tr>
895-
</table>
896886
</div>
897887

templates/scenes/slider.css

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
{literal}
22
/* Easy Slider */
3-
#slider ul, #slider li,
4-
#slider2 ul, #slider2 li{
3+
#slider ul.scenes_ul, #slider li.scenes_li,
4+
#slider2 ul.scenes_ul, #slider2 li.scenes_li {
55
margin:0;
66
padding:0;
77
list-style:none;
88
}
9-
#slider2{margin-top:1em;}
10-
#slider li, #slider2 li{
9+
#slider2 {margin-top:1em;}
10+
#slider li.scenes_li, #slider2 li.scenes_li {
1111
/*
1212
define width and height of list item (slide)
1313
entire slider area will adjust according to the parameters provided here

0 commit comments

Comments
 (0)