forked from extern/egroupware
Added basic support for the egw_action framework in the nextmatch widget (currently not active)
This commit is contained in:
parent
8d81db64af
commit
f6d0edbdc1
@ -945,6 +945,72 @@ class etemplate extends boetemplate
|
|||||||
$div_style=' style="'.($width?"width: $width; ":'').($height ? "height: $height; ":'')."overflow: $overflow;\"";
|
$div_style=' style="'.($width?"width: $width; ":'').($height ? "height: $height; ":'')."overflow: $overflow;\"";
|
||||||
$html = html::div($html,$div_style);
|
$html = html::div($html,$div_style);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* if ($options[3] == 'action')
|
||||||
|
{
|
||||||
|
// JS action objects generated for this widget are prefixed with the
|
||||||
|
// prefix given here
|
||||||
|
$prefix = "egw_";
|
||||||
|
|
||||||
|
$html .= '
|
||||||
|
<script type="text/javascript">
|
||||||
|
//Temporary function called on onExecute
|
||||||
|
function alertClicked(_action, _senders)
|
||||||
|
{
|
||||||
|
var ids = "";
|
||||||
|
for (var i = 0; i < _senders.length; i++)
|
||||||
|
ids += _senders[i].id + ((i < _senders.length - 1) ? ", " : "");
|
||||||
|
|
||||||
|
alert("Action \'" + _action.caption + "\' executed on elements \'"
|
||||||
|
+ ids + "\'");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$(document).ready(function() {
|
||||||
|
// Initialize the action manager and add some actions to it
|
||||||
|
'.$prefix.'actionManager = new egwActionManager();
|
||||||
|
'.$prefix.'objectManager = new egwActionObjectManager("", '.$prefix.'actionManager);
|
||||||
|
|
||||||
|
// Add some dummy actions to the actionManager
|
||||||
|
'.$prefix.'actionManager.updateActions(
|
||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "folder_open",
|
||||||
|
"iconUrl": "imgs/folder.png",
|
||||||
|
"caption": "Open folder",
|
||||||
|
"onExecute": "javaScript:alertClicked",
|
||||||
|
"allowOnMultiple": false,
|
||||||
|
"type": "popup",
|
||||||
|
"default": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "file_view",
|
||||||
|
"iconUrl": "imgs/view.png",
|
||||||
|
"caption": "View",
|
||||||
|
"onExecute": "javaScript:alertClicked",
|
||||||
|
"allowOnMultiple": false,
|
||||||
|
"type": "popup",
|
||||||
|
"default": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
);
|
||||||
|
|
||||||
|
var actionLinks = ["folder_open", "file_view"];
|
||||||
|
|
||||||
|
// Create a new action object for each table row
|
||||||
|
// TODO: only apply function to outer level
|
||||||
|
$("table.action>tbody >tr").each(function(index, elem) {
|
||||||
|
|
||||||
|
console.log(elem);
|
||||||
|
// Create a new action object
|
||||||
|
var obj = '.$prefix.'objectManager.addObject(elem.id, new nextmatchRowAOI(elem));
|
||||||
|
|
||||||
|
obj.updateActionLinks(actionLinks);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
</script>';
|
||||||
|
}*/
|
||||||
|
|
||||||
return "\n\n<!-- BEGIN grid $grid[name] -->\n$html<!-- END grid $grid[name] -->\n\n";
|
return "\n\n<!-- BEGIN grid $grid[name] -->\n$html<!-- END grid $grid[name] -->\n\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,6 +245,20 @@ class nextmatch_widget
|
|||||||
$extension_data['old_value'] = $value;
|
$extension_data['old_value'] = $value;
|
||||||
return $extra_label;
|
return $extra_label;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Load some JS files needed for the egw_action framework
|
||||||
|
egw_framework::includeCSS('/phpgwapi/js/egw_action/test/skins/dhtmlxmenu_egw.css');
|
||||||
|
|
||||||
|
egw_framework::validate_file('dhtmlxtree','dhtmlxMenu/codebase/dhtmlxcommon');
|
||||||
|
egw_framework::validate_file('dhtmlxtree','dhtmlxMenu/codebase/dhtmlxmenu');
|
||||||
|
egw_framework::validate_file('dhtmlxtree','dhtmlxMenu/codebase/ext/dhtmlxmenu_ext');
|
||||||
|
egw_framework::validate_file('egw_action','egw_action');
|
||||||
|
egw_framework::validate_file('egw_action','egw_action_common');
|
||||||
|
egw_framework::validate_file('egw_action','egw_action_popup');
|
||||||
|
egw_framework::validate_file('egw_action','egw_menu');
|
||||||
|
egw_framework::validate_file('egw_action','egw_menu_dhtmlx');
|
||||||
|
egw_framework::validate_file('.', 'nextmatch_action', 'etemplate');
|
||||||
|
|
||||||
// does NOT work with php5.2.6+
|
// does NOT work with php5.2.6+
|
||||||
if (version_compare(PHP_VERSION,'5.2.6','>='))
|
if (version_compare(PHP_VERSION,'5.2.6','>='))
|
||||||
{
|
{
|
||||||
|
45
etemplate/js/nextmatch_action.js
Normal file
45
etemplate/js/nextmatch_action.js
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
|
||||||
|
// An action object interface for the listbox - "inherits" from
|
||||||
|
// egwActionObjectInterface
|
||||||
|
function nextmatchRowAOI(_node)
|
||||||
|
{
|
||||||
|
var aoi = new egwActionObjectInterface();
|
||||||
|
|
||||||
|
aoi.node = _node;
|
||||||
|
|
||||||
|
aoi.checkBox = ($(":checkbox", aoi.node))[0];
|
||||||
|
aoi.checkBox.checked = false;
|
||||||
|
|
||||||
|
aoi.doGetDOMNode = function() {
|
||||||
|
return aoi.node;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Now append some action code to the node
|
||||||
|
$(_node).click(function(e) {
|
||||||
|
if (e.target != aoi.checkBox)
|
||||||
|
{
|
||||||
|
var selected = egwBitIsSet(aoi.getState(), EGW_AO_STATE_SELECTED);
|
||||||
|
var state = egwGetShiftState(e);
|
||||||
|
|
||||||
|
aoi.updateState(EGW_AO_STATE_SELECTED,
|
||||||
|
!egwBitIsSet(state, EGW_AO_SHIFT_STATE_MULTI) || !selected,
|
||||||
|
state);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
$(aoi.checkBox).change(function() {
|
||||||
|
aoi.updateState(EGW_AO_STATE_SELECTED, this.checked, EGW_AO_SHIFT_STATE_MULTI);
|
||||||
|
});
|
||||||
|
|
||||||
|
aoi.doSetState = function(_state) {
|
||||||
|
var selected = egwBitIsSet(_state, EGW_AO_STATE_SELECTED);
|
||||||
|
this.checkBox.checked = selected;
|
||||||
|
$(this.node).toggleClass('focused',
|
||||||
|
egwBitIsSet(_state, EGW_AO_STATE_FOCUSED));
|
||||||
|
$(this.node).toggleClass('selected',
|
||||||
|
selected);
|
||||||
|
}
|
||||||
|
|
||||||
|
return aoi;
|
||||||
|
}
|
||||||
|
|
@ -154,3 +154,21 @@
|
|||||||
overflow: auto;
|
overflow: auto;
|
||||||
padding-right: 15px;
|
padding-right: 15px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* CSS styles for egw_action */
|
||||||
|
|
||||||
|
table.action tr.row_off.selected {
|
||||||
|
background-color: #2b5d9b;
|
||||||
|
color: white;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.action tr.row_on.selected {
|
||||||
|
background-color: #234b7d !important;
|
||||||
|
}
|
||||||
|
|
||||||
|
table.action .focused {
|
||||||
|
border: 1px dotted black;
|
||||||
|
padding: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user