finished work on links (hopefully :-))

This commit is contained in:
Cornelius Weiß 2005-02-25 11:15:27 +00:00
parent 4057b2da43
commit 8f5ccbd557
6 changed files with 53 additions and 35 deletions

View File

@ -16,7 +16,7 @@ TODO:
-edit / add
add accessories functionality
bug: loose html and picture on tab-switch (eTemplate bug --> Ralf)
if only one cat is present --> chose it (eTemplate patch sent!)
inputvalidation on selectbox --> eTemplate --> Ralf
make some returnmessages js dialogs
accessories get inserted a second time on page-refresh

View File

@ -77,12 +77,11 @@ class admin_prefs_sidebox_hooks
function search_link($args)
{
$appname = 'resources';
return array('resources' => array(
'query' => 'resources.ui_resources.link_query',
'title' => 'resources_title',
return array( 'query' => 'resources.bo_resources.link_query',
'title' => 'resources.bo_resources.link_title',
'view' => array('menuaction' => 'resources.ui_resources.view'),
'view_id' => 'id'
));
);
}
}

View File

@ -56,7 +56,7 @@ class bo_resources
$order_by = $query['order'] ? $query['order'].' '. $query['sort'] : '';
$nr = $this->so->search($criteria,$cats,&$rows,$order_by,$offset=$query['start'],$num_rows=0);
$nr = $this->so->search($criteria,$cats,&$rows,$accessory_of=-1,$order_by,$offset=$query['start'],$num_rows=0);
foreach($rows as $num => $resource)
{
if (!$this->acl->is_permitted($resource['cat_id'],PHPGW_ACL_EDIT))
@ -187,7 +187,7 @@ class bo_resources
if($id < 1){return;}
$cat_id = $this->so->get_value('cat_id',$id);
$data[0] = array('id' => '', 'name' => '');
$this->so->search(array('accessory_only' => 1),array($cat_id => ''),&$data,$order_by='',$offset=false,$num_rows=-1);
$this->so->search(array('accessory_only' => 1),array($cat_id => ''),&$data,$accessory_of=-1,$order_by='',$offset=false,$num_rows=-1);
foreach($data as $num => $resource)
{
if($num != 0)
@ -198,31 +198,45 @@ class bo_resources
return $acc_list;
}
/*!
/*!
@function link_query
@syntax link_query( $pattern )
@author ralfbecker
@author Cornelius Weiß <egw@von-und-zu-weiss.de>
@abstract query infolog for entries matching $pattern
*/
function link_query( $pattern )
{print_r($pattern);
$query = array(
'search' => $pattern,
'start' => 0,
'subs' => true,
);
$ids = $this->search($query);
$content = array();
if (is_array($ids))
*/
function link_query( $pattern )
{
$criteria = array('name' => $pattern,'short_description' => $pattern);
$cats = $this->acl->get_cats(PHPGW_ACL_READ);
$data[0] = array('id' => '','name' => '', 'short_description' => '');
$this->so->search($criteria,$cats,&$data,$accessory_of=-1,$order_by='',$offset=false,$num_rows=-1);
foreach($data as $num => $resource)
{
if($num != 0)
{
foreach($ids as $id => $info )
{
$content[$id] = $this->link_title($id);
}
$list[$resource['id']] = $resource['name']. ($resource['short_description'] ? ', ['.$resource['short_description'].']':'');
}
return $content;
}
return $list;
}
/*!
@function link_title
@syntax link_title( $id )
@author Cornelius Weiß <egw@von-und-zu-weiss.de>
@abstract get title for an infolog entry identified by $id
*/
function link_title( $resource )
{
if (!is_array($resource))
{
$resource = $this->so->read($resource);
$title = $resource['name']. ($resource['short_description'] ? ', ['.$resource['short_description'].']':'');
}
return $title ? $title : false;
}
/*!
@function save_picture
@abstract resizes and saves an pictures in vfs

View File

@ -29,13 +29,14 @@ class so_resources
@param array $criteria array of key => value for search. (or'ed together)
@param array $cats array of cat_id => cat_name to be searched
@param &array $data reference of data array with cols to return in first row ( key => '')
@param int $accessory_of find accessories of id, default -1 = show all exept accessories
@param string $order_by fieldnames + {ASC|DESC} separated by colons ','
@param int $offset row to start from, default 0
@param int $num_rows number of rows to return (optional), default -1 = all, 0 will use $GLOBALS['phpgw_info']['user']['preferences']['common']['maxmatchs']
@return int number of matching rows
*/
function search($criteria,$cats,&$data,$order_by='',$offset=false,$num_rows=-1)
function search($criteria,$cats,&$data,$accessory_of=-1,$order_by='',$offset=false,$num_rows=-1)
{
$select = implode(',',array_keys($data[0]));
foreach($criteria as $col => $value)
@ -50,8 +51,9 @@ class so_resources
$wherecats .= ($wherecats ? " OR " : " AND ( " ) .'cat_id' . "='".$cat_id."'";
}
$wherecats .= $wherecats ? " ) " : "";
$whereacc = " AND (accessory_of ='".$accessory_of."')";
$this->db->query( 'SELECT '.$select." FROM ".$this->rs_table." WHERE ".$where.$wherecats.
$this->db->query( 'SELECT '.$select." FROM ".$this->rs_table." WHERE ".$where.$wherecats.$whereacc.
($order_by != '' ? " ORDER BY $order_by" : ''),__LINE__,__FILE__);
$nr = $this->db->nf();

View File

@ -126,6 +126,9 @@ class ui_resources
{
$resource_id = $content;
$content = array('resource_id' => $resource_id);
// some presetes
$content['quantity'] = $content['useable'] = 1;
$content['accessory_of'] = -1;
if ($resource_id > 0)
{
@ -140,11 +143,11 @@ class ui_resources
}
$content['resource_picture'] = $this->bo->get_picture($resource_id,$content['picture_src'],$size=true);
}
$sel_options = array(
'cat_id' => $this->bo->acl->get_cats(PHPGW_ACL_ADD),
'gen_src_list' => $this->bo->get_genpicturelist()
);
}
$sel_options['cat_id'] = $this->bo->acl->get_cats(PHPGW_ACL_ADD);
$sel_options['cat_id'] = count($sel_options['cat_id']) == 1 ? $sel_options['cat_id'] : array('' => lang('select one')) + $sel_options['cat_id'];
$sel_options['gen_src_list'] = $this->bo->get_genpicturelist();
$no_button = array(); // TODO: show delete button only if allowed to delete resource
$preserv = $content;
$this->tmpl->read('resources.edit');

View File

@ -1,5 +1,5 @@
<?php
// eTemplates for Application 'resources', generated by soetemplate::dump4setup() 2005-02-25 09:51
// eTemplates for Application 'resources', generated by soetemplate::dump4setup() 2005-02-25 10:45
/* $Id$ */
@ -11,7 +11,7 @@ $templ_data[] = array('name' => 'resources.edit_buttons','template' => '','lang'
$templ_data[] = array('name' => 'resources.edit_pictures','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:3:{s:2:"c1";s:3:"nmr";s:2:"c2";s:3:"nmr";s:2:"c3";s:3:"nmr";}i:1;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:26:"Use general resources icon";s:5:"align";s:5:"right";}s:1:"B";a:3:{s:4:"type";s:5:"radio";s:4:"size";s:7:"gen_src";s:4:"name";s:11:"picture_src";}s:1:"C";a:3:{s:4:"type";s:6:"select";s:7:"no_lang";s:1:"1";s:4:"name";s:12:"gen_src_list";}}i:2;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:23:"Use the category\'s icon";s:5:"align";s:5:"right";}s:1:"B";a:3:{s:4:"type";s:5:"radio";s:4:"size";s:7:"cat_src";s:4:"name";s:11:"picture_src";}s:1:"C";a:1:{s:4:"type";s:5:"label";}}i:3;a:3:{s:1:"A";a:3:{s:4:"type";s:5:"label";s:5:"label";s:15:"Use own picture";s:5:"align";s:5:"right";}s:1:"B";a:3:{s:4:"type";s:5:"radio";s:4:"size";s:7:"own_src";s:4:"name";s:11:"picture_src";}s:1:"C";a:2:{s:4:"type";s:4:"file";s:4:"name";s:8:"own_file";}}}s:4:"rows";i:3;s:4:"cols";i:3;}}','size' => '','style' => '','modified' => '1108638846',);
$templ_data[] = array('name' => 'resources.edit_tabs','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:3:{s:1:"A";s:3:"250";s:2:"c1";s:6:"row_on";s:2:"c2";s:7:"row_off";}i:1;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"text";s:5:"label";s:4:"Name";s:4:"name";s:4:"name";s:4:"help";s:16:"Name of resource";s:6:"needed";s:1:"1";}s:1:"B";a:7:{s:4:"type";s:6:"select";s:4:"size";s:10:"select one";s:5:"label";s:8:"Category";s:7:"no_lang";s:1:"1";s:4:"name";s:6:"cat_id";s:6:"needed";s:1:"1";s:4:"help";s:44:"Which category does this resource belong to?";}}i:2;a:2:{s:1:"A";a:5:{s:4:"type";s:3:"tab";s:4:"span";s:3:"all";s:5:"label";s:54:"General|Description|Picture|Accessories|Links|Calendar";s:4:"name";s:48:"general|page|pictures|accessories|links|calendar";s:4:"help";s:194:"General informations about resource|Informations about the location of resource|Prizeing information for booking or buying|Web-Page of resource|Pictures or resource|The Calendar of this resource";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:3;s:4:"cols";i:2;}}','size' => '','style' => '','modified' => '1109155739',);
$templ_data[] = array('name' => 'resources.edit_tabs','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:4:{s:4:"type";s:4:"grid";s:4:"data";a:4:{i:0;a:3:{s:1:"A";s:3:"250";s:2:"c1";s:6:"row_on";s:2:"c2";s:7:"row_off";}i:1;a:2:{s:1:"A";a:5:{s:4:"type";s:4:"text";s:5:"label";s:4:"Name";s:4:"name";s:4:"name";s:4:"help";s:16:"Name of resource";s:6:"needed";s:1:"1";}s:1:"B";a:6:{s:4:"type";s:6:"select";s:5:"label";s:8:"Category";s:7:"no_lang";s:1:"1";s:4:"name";s:6:"cat_id";s:6:"needed";s:1:"1";s:4:"help";s:44:"Which category does this resource belong to?";}}i:2;a:2:{s:1:"A";a:5:{s:4:"type";s:3:"tab";s:4:"span";s:3:"all";s:5:"label";s:54:"General|Description|Picture|Accessories|Links|Calendar";s:4:"name";s:48:"general|page|pictures|accessories|links|calendar";s:4:"help";s:194:"General informations about resource|Informations about the location of resource|Prizeing information for booking or buying|Web-Page of resource|Pictures or resource|The Calendar of this resource";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}i:3;a:2:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:4:"span";s:3:"all";}s:1:"B";a:1:{s:4:"type";s:5:"label";}}}s:4:"rows";i:3;s:4:"cols";i:2;}}','size' => '','style' => '','modified' => '1109155739',);
$templ_data[] = array('name' => 'resources.edit_tabs.general','template' => '','lang' => '','group' => '0','version' => '','data' => 'a:1:{i:0;a:5:{s:4:"type";s:4:"grid";s:4:"data";a:7:{i:0;a:1:{s:1:"C";s:2:"10";}i:1;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:19:"Description (short)";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:6:"50,100";s:4:"name";s:17:"short_description";s:4:"help";s:29:"Short description of resource";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:29:"Short description of resource";}}i:2;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"Location";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:6:"50,100";s:4:"name";s:8:"location";s:4:"help";s:20:"Location of resource";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:28:"Where to find this resource?";}}i:3;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"Quantity";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,10";s:4:"name";s:8:"quantity";s:4:"help";s:20:"Quantity of resource";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:20:"Quantity of resource";}}i:4;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Useable";}s:1:"B";a:4:{s:4:"type";s:4:"text";s:4:"size";s:4:"5,10";s:4:"name";s:7:"useable";s:4:"help";s:29:"How many of them are useable?";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:38:"How many of the resources are useable?";}}i:5;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:8:"Bookable";}s:1:"B";a:3:{s:4:"type";s:8:"checkbox";s:4:"name";s:8:"bookable";s:4:"help";s:21:"Is resource bookable?";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:26:"Is this resource bookable?";}}i:6;a:4:{s:1:"A";a:2:{s:4:"type";s:5:"label";s:5:"label";s:7:"Buyable";}s:1:"B";a:3:{s:4:"type";s:8:"checkbox";s:4:"name";s:7:"buyable";s:4:"help";s:20:"Is resource buyable?";}s:1:"C";a:1:{s:4:"type";s:5:"label";}s:1:"D";a:2:{s:4:"type";s:5:"label";s:5:"label";s:25:"Is this resource buyable?";}}}s:4:"rows";i:6;s:4:"cols";i:4;s:4:"size";s:4:"100%";}}','size' => '100%','style' => '','modified' => '1093597682',);