More changes to get category list working using etemplate2

This commit is contained in:
Nathan Gray 2013-12-10 00:03:36 +00:00
parent 3f531a29c0
commit 7c33488596
4 changed files with 46 additions and 62 deletions

View File

@ -143,6 +143,7 @@ class admin_categories
{
case 'save':
case 'apply':
if(is_array($content['owner'])) $content['owner'] = implode(',',$content['owner']);
if($content['owner'] == '') $content['owner'] = 0;
if ($content['id'] && self::$acl_edit)
{
@ -160,6 +161,10 @@ class admin_categories
!$content['parent'] && self::$acl_add))
{
$content['id'] = $cats->add($content);
if ($button == 'save')
{
egw_framework::window_close();
}
$msg = lang('Category saved.');
}
else
@ -174,6 +179,9 @@ class admin_categories
{
$cats->delete($content['id'],$delete_subs,!$delete_subs);
$msg = lang('Category deleted.');
egw_framework::refresh_opener($msg, $appname, $content['id']);
egw_framework::window_close();
return;
}
else
{
@ -182,18 +190,7 @@ class admin_categories
}
break;
}
$link = egw::link('/index.php',array(
'menuaction' => $this->list_link,
'appname' => $appname,
'msg' => $msg,
));
$js = "window.opener.location='$link';";
if ($button == 'save' || $button == 'delete')
{
echo "<html><head><script>\n$js;\nwindow.close();\n</script></head></html>\n";
common::egw_exit();
}
if (!empty($js)) $GLOBALS['egw']->js->set_onload($js);
egw_framework::refresh_opener($msg, $appname, $content['id']);
}
$content['msg'] = $msg;
if(!$content['appname']) $content['appname'] = $appname;
@ -255,12 +252,7 @@ class admin_categories
}
egw_framework::validate_file('.','global_categories','admin');
egw_framework::set_onload('$j(document).ready(function() {
cat_original_owner = [' . ($content['owner'] ? $content['owner'] : ($content['id'] ? '0' : '')) .'];
permission_prompt = \'' . lang('Removing access for groups may cause problems for data in this category. Are you sure? Users in these groups may no longer have access:').'\';
change_icon();
});');
$readonlys['button[delete]'] = !$content['id'] || !self::$acl_delete || // cant delete not yet saved category
$appname != $content['appname'] || // Can't edit a category from a different app
($this->appname != 'admin' && $content['owner'] != $GLOBALS['egw_info']['user']['account_id']);

View File

@ -9,45 +9,45 @@ var permission_prompt;
/**
* Check to see if admin has taken away access to a category
*/
function check_owner(element_id) {
var checkboxes = $j(':checkbox', document.getElementById(element_id));
var all_users = $j(document.getElementById(element_id + '[0]'));
function check_owner(button) {
var select_owner = button.getRoot().getWidgetById('owner')
var owner = select_owner.get_value();
if(typeof owner != 'object')
{
owner = [owner];
}
var all_users = owner.indexOf('0') >= 0;
// If they checked all users, uncheck the others
if(all_users.length > 0 && all_users.prop("checked")) {
checkboxes.prop("checked",false);
all_users.prop("checked", true);
checkboxes = $j(':checkbox', document.getElementById(element_id)).filter(':checked');
if(all_users) {
select_owner.set_value(['0']);
return true;
}
// Find out what changed
var seen = [], diff = [], labels = [];
var cat_original_owner = select_owner.getArrayMgr('content').getEntry('owner');
if(typeof cat_original_owner != "object")
{
cat_original_owner = [cat_original_owner];
}
for ( var i = 0; i < cat_original_owner.length; i++) {
var checkbox = checkboxes.filter('[value="'+cat_original_owner[i]+'"]');
if(checkbox.filter(':checked').length == 0 && checkbox.get(0) != undefined) {
if(owner.indexOf(cat_original_owner[i]) < 0)
{
var checkbox = $j('input[value="'+cat_original_owner[i]+'"]',select_owner.node);
diff.push(cat_original_owner[i]);
labels.push($j(checkbox.get(0).nextSibling).text());
}
}
// Single selection?
if(checkboxes.length == 0) {
var new_group = $j('input#'+element_id);
if(new_group.length > 0 && new_group.attr('value') != 0 && cat_original_owner.length > 0) {
diff.push(cat_original_owner[0]);
var selector = 'option[value="'+cat_original_owner[0]+'"]';
labels.push("\n"+$j(selector, new_group).text());
}
}
// Somebody will lose permission, give warning.
if(diff.length > 0) {
var msg = permission_prompt;
var msg = egw.lang('Removing access for groups may cause problems for data in this category. Are you sure? Users in these groups may no longer have access:');
for( var i = 0; i < labels.length; i++) {
msg += labels[i];
}
return confirm(msg);
return et2_dialog.confirm(button,msg);
}
return true;
}
@ -55,21 +55,12 @@ function check_owner(element_id) {
/**
* Show icon based on icon-selectbox, hide placeholder (broken image), if no icon selected
*/
function change_icon(_icon)
function change_icon(widget)
{
var img = document.getElementById('exec[icon_url]') || document.getElementById('icon_url');
var img = widget.getRoot().getWidgetById('icon_url');
if (typeof _icon == 'undefined')
if (img)
{
_icon = document.getElementById('exec[data][icon]') || document.getElementById('data[icon]');
}
if (_icon && _icon.value)
{
img.src = img.src.replace(/\/[^\/]*$/,'\/'+_icon.value);
img.style.display = 'block';
}
else if (img)
{
img.style.display = 'none';
img.set_src(widget.getValue());
}
}

View File

@ -87,7 +87,7 @@
<description value="Icon" for="data[icon]"/>
<hbox options="0,0">
<menulist>
<menupopup id="data[icon]" onchange="change_icon(this);" options="None"/>
<menupopup id="data[icon]" onchange="change_icon(widget);" options="None"/>
</menulist>
<image src="icon_url" id="icon_url" class="leftPad5"/>
</hbox>
@ -108,12 +108,12 @@
</row>
<row>
<hbox>
<button label="Save" id="button[save]" onclick="return check_owner(form::name('owner'));"/>
<button label="Apply" id="button[apply]" onclick="return check_owner(form::name('owner'));"/>
<button label="Save" id="button[save]" onclick="return check_owner(widget,form::name('owner'));"/>
<button label="Apply" id="button[apply]" onclick="return check_owner(widget,form::name('owner'));"/>
</hbox>
<hbox>
<buttononly label="Cancel" id="button[cancel]" onclick="window.close();"/>
<buttononly align="right" statustext="Delete this category" label="Delete" id="button[delete]" onclick="set_style_by_class('tr','confirmSubs','visibility','$cont[children]'?'visible':'collapse'); set_style_by_class('fieldset','confirmDelete','display','block');"/>
<buttononly align="right" statustext="Delete this category" label="Delete" id="button[delete]" onclick="et2_dialog.confirm(widget,'Are you sure you want to delete this category ?'); return false;"/>
</hbox>
</row>
</rows>

View File

@ -1,6 +1,11 @@
<?xml version="1.0"?>
<!-- $Id$ -->
<overlay>
<template id="admin.categories.index.right" template="" lang="" group="0" version="1.9.001">
<hbox>
<buttononly align="right" label="Add" id="add" onclick="window.open(egw::link('/index.php','menuaction=$cont[add_link]&amp;cat_id=&amp;appname=$cont[nm][appname]'),'_blank','dependent=yes,width=600,height=380,scrollbars=yes,status=yes'); return false;"/>
</hbox>
</template>
<template id="admin.categories.index.rows" template="" lang="" group="0" version="1.9.002">
<grid width="100%">
<columns>
@ -66,14 +71,10 @@
<description/>
</row>
<row>
<nextmatch id="nm" options="admin.categories.index.rows" span="all"/>
<description/>
</row>
<row>
<buttononly label="Add" id="add" onclick="window.open(egw::link('/index.php','menuaction=$cont[add_link]&amp;cat_id=&amp;appname=$cont[nm][appname]'),'_blank','dependent=yes,width=600,height=380,scrollbars=yes,status=yes'); return false;"/>
<hbox align="right" span="all">
<buttononly statustext="Select action" label="Select action" id="legacy_actions" onclick="if (!egw_globalObjectManager.getObjectById('admin.categories.index.rows').executeActionImplementation(this, 'popup')) alert(egw::lang('You need to select some entries first!')); return false;;"/>
<button statustext="Check all" label="Check all" id="check_all" needed="1" onclick="egw_globalObjectManager.getObjectById('admin.categories.index.rows').toggleAllSelected(); return false;" image="arrow_ltr" class="checkAllArrow"/>
</hbox>
<nextmatch id="nm" options="admin.categories.index.rows" span="all" header_right="admin.categories.index.right"/>
</row>
</rows>
</grid>