[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Fmsystem-commits] [9106] registration
From: |
Sigurd Nes |
Subject: |
[Fmsystem-commits] [9106] registration |
Date: |
Mon, 09 Apr 2012 17:07:12 +0000 |
Revision: 9106
http://svn.sv.gnu.org/viewvc/?view=rev&root=fmsystem&revision=9106
Author: sigurdne
Date: 2012-04-09 17:07:12 +0000 (Mon, 09 Apr 2012)
Log Message:
-----------
registration
Modified Paths:
--------------
trunk/registration/inc/class.bopending.inc.php
trunk/registration/inc/class.boreg.inc.php
trunk/registration/inc/class.sopending.inc.php
trunk/registration/inc/class.soreg.inc.php
trunk/registration/inc/class.uicommon.inc.php
trunk/registration/inc/class.uipending.inc.php
trunk/registration/inc/hook_logout.inc.php
trunk/registration/js/yahoo/pending.index.js
trunk/registration/main.php
trunk/registration/setup/default_records.inc.php
trunk/registration/setup/setup.inc.php
trunk/registration/setup/tables_current.inc.php
trunk/registration/setup/tables_update.inc.php
trunk/registration/templates/base/common.xsl
trunk/registration/templates/base/pending_users.xsl
trunk/registration/templates/base/user_edit.xsl
Added Paths:
-----------
trunk/registration/js/yahoo/common.js
Modified: trunk/registration/inc/class.bopending.inc.php
===================================================================
--- trunk/registration/inc/class.bopending.inc.php 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/inc/class.bopending.inc.php 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -295,7 +295,7 @@
HTML;
try
{
- $info['email'] =
'address@hidden';
+// $info['email'] =
'address@hidden';
$rcpt =
$smtp->msg('email',$info['email'],$subject,nl2br($body),'','','',$noreply,'','html');
}
catch(Exception $e)
@@ -306,8 +306,12 @@
if($rcpt)
{
phpgwapi_cache::message_set("Confirmation sent to {$info['email']}", 'message');
+ $so->delete_reg_info($reg_id);
}
- $so->delete_reg_info($reg_id);
+ else
+ {
+
phpgwapi_cache::message_set("Confirmation NOT sent to {$info['email']}",
'error');
+ }
}
}
}
@@ -351,9 +355,8 @@
return $receipt;
}
- function delete()
+ function delete($id)
{
- //$location_code =
phpgw::get_var('location_code','string','GET');
- //$this->so->delete($location_code);
+ $this->so->delete($id);
}
}
Modified: trunk/registration/inc/class.boreg.inc.php
===================================================================
--- trunk/registration/inc/class.boreg.inc.php 2012-04-04 12:05:27 UTC (rev
9105)
+++ trunk/registration/inc/class.boreg.inc.php 2012-04-09 17:07:12 UTC (rev
9106)
@@ -313,7 +313,6 @@
//
function lostpw2()
{
-// global $reg_id;
$reg_id = phpgw::get_var('reg_id');
$so = createobject('registration.soreg');
@@ -337,11 +336,11 @@
//
function lostpw3()
{
-// global $r_reg;
$r_reg = phpgw::get_var('r_reg');
$lid =
$GLOBALS['phpgw']->session->appsession('loginid','registration');
- if(!$lid) {
+ if(!$lid)
+ {
$error[] = lang('Wrong session');
}
@@ -354,6 +353,18 @@
{
$errors[] = lang('You must enter a password');
}
+ else
+ {
+ $account = new phpgwapi_user();
+ try
+ {
+
$account->validate_password($r_reg['passwd']);
+ }
+ catch(Exception $e)
+ {
+ $errors[] = $e->getMessage();
+ }
+ }
if(! is_array($errors))
{
Modified: trunk/registration/inc/class.sopending.inc.php
===================================================================
--- trunk/registration/inc/class.sopending.inc.php 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/inc/class.sopending.inc.php 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -60,9 +60,9 @@
$ordermethod = " ORDER BY {$order} {$sort}";
- $where= 'WHERE';
- $filtermethod = '';
+ $filtermethod = 'WHERE reg_info IS NOT NULL';
+ $where= 'AND';
switch ($status_id)
{
case '1':
@@ -167,18 +167,47 @@
{
throw new
Exception("registration_sopending::update_pending_user() - missing 'id' in
valueset");
}
-
$ret = false;
$this->db->transaction_begin();
- if (isset($values['location']) && $values['location'])
+// if (isset($values['location']) && $values['location'])
{
$this->db->query("SELECT reg_info FROM
phpgw_reg_accounts WHERE reg_id = '{$values['id']}'",__LINE__,__FILE__);
if ($this->db->next_record())
{
$reg_info =
unserialize(base64_decode($this->db->f('reg_info')));
$reg_info['location_code'] =
implode('-', $values['location']);
+
+ if($values['account_permissions'] &&
is_array($values['account_permissions']))
+ {
+ foreach
($values['account_permissions'] as $_app => $_selected)
+ {
+ if($_selected)
+ {
+
$reg_info['account_permissions'][] = $_app;
+ }
+
+ }
+ unset($_app);
+ unset($_selected);
+ }
+ if($values['account_permissions_admin']
&& is_array($values['account_permissions_admin']))
+ {
+ foreach
($values['account_permissions_admin'] as $_app => $_selected)
+ {
+ if($_selected)
+ {
+
$reg_info['account_permissions_admin'][] = $_app;
+ }
+
+ }
+ unset($_app);
+ unset($_selected);
+ }
+
+ $reg_info['account_groups'] =
$values['account_groups'] ? $values['account_groups'] : array();
+
+ $this->db->query("UPDATE
phpgw_reg_accounts SET reg_info='" . base64_encode(serialize($reg_info)) . "'
WHERE reg_id='{$values['id']}'",__LINE__,__FILE__);
}
- $this->db->query("UPDATE phpgw_reg_accounts SET
reg_info='" . base64_encode(serialize($reg_info)) . "' WHERE
reg_id='{$values['id']}'",__LINE__,__FILE__);
}
$value_set['reg_approved'] = $values['approve'];
@@ -188,4 +217,9 @@
$this->db->transaction_commit();
return $ret;
}
+
+ public function delete($id)
+ {
+ $this->db->query("DELETE FROM phpgw_reg_accounts WHERE
reg_id = '{$id}'",__LINE__,__FILE__);
+ }
}
Modified: trunk/registration/inc/class.soreg.inc.php
===================================================================
--- trunk/registration/inc/class.soreg.inc.php 2012-04-04 12:05:27 UTC (rev
9105)
+++ trunk/registration/inc/class.soreg.inc.php 2012-04-09 17:07:12 UTC (rev
9106)
@@ -48,7 +48,7 @@
else
{
// To prevent race conditions, reserve the
account_lid
- $this->db->query("insert into
phpgw_reg_accounts values ('','$account_lid','','" . time() .
"')",__LINE__,__FILE__);
+ $this->db->query("INSERT INTO
phpgw_reg_accounts (reg_id, reg_lid, reg_info, reg_dla) VALUES
('','$account_lid', NULL,'" . time() . "')",__LINE__,__FILE__);
$this->db->transaction_commit();
$GLOBALS['phpgw']->session->appsession('loginid','registration',$account_lid);
return false;
@@ -122,13 +122,14 @@
// Remember md5 string sent by mail
//
$reg_id = md5(time() . $account_lid .
$GLOBALS['phpgw']->common->randomstring(32));
- $this->db->query("INSERT INTO phpgw_reg_accounts VALUES
('$reg_id','$account_lid','','" . time() . "')",__LINE__,__FILE__);
+ $this->db->query("INSERT INTO phpgw_reg_accounts
(reg_id, reg_lid, reg_info, reg_dla) VALUES ('$reg_id','$account_lid',NULL,'" .
time() . "')",__LINE__,__FILE__);
//
// Send the mail that will allow to change the password
//
$user_id =
$GLOBALS['phpgw']->accounts->name2id($account_lid);
+
$account_info =
$GLOBALS['phpgw']->accounts->get($user_id);
$contacts = CreateObject('phpgwapi.contacts');
@@ -164,6 +165,12 @@
'email' =>
$comms[$account_info->person_id]['work email']
);
+ if(!$info['email'])
+ {
+
$GLOBALS['phpgw']->preferences->set_account_id($user_id, true);
+ $info['email'] =
isset($GLOBALS['phpgw']->preferences->data['property']['email']) &&
$GLOBALS['phpgw']->preferences->data['property']['email'] ?
$GLOBALS['phpgw']->preferences->data['property']['email'] : '';
+ }
+
if ($info['email'])
{
$smtp = createobject('phpgwapi.send');
@@ -180,7 +187,15 @@
$subject = $this->config['subject_lostpw'] ?
lang($this->config['subject_lostpw']) : lang('Account password retrieval');
$noreply = $this->config['mail_nobody'] ? ('No
reply <' . $this->config['mail_nobody'] . '>') : ('No reply <noreply@' .
$GLOBALS['phpgw_info']['server']['hostname'] . '>');
-
$smtp->msg('email',$info['email'],$subject,$GLOBALS['phpgw']->template->fp('out','message'),'','','',$noreply,'',
'html');
+ try
+ {
+
$smtp->msg('email',$info['email'],$subject,$GLOBALS['phpgw']->template->fp('out','message'),'','','',$noreply,'',
'html');
+ }
+ catch(Exception $e)
+ {
+ $error = $e->getMessage();
+ // $error =
$GLOBALS['phpgw']->template->fp('out','message');
+ }
}
else
{
@@ -248,6 +263,35 @@
$group_id = $default_group_id ? $default_group_id :
$GLOBALS['phpgw']->accounts->name2id('default');
+ $groups = isset($fields['account_groups']) &&
$fields['account_groups'] ? $fields['account_groups'] : array();
+ if($group_id && !in_array($group_id , $groups))
+ {
+ $groups = array_merge ($groups,
array($group_id));
+ }
+
+
+ $apps_admin = $fields['account_permissions_admin'] ?
$fields['account_permissions_admin'] : array();
+ $acls = array();
+
+ $acls[] = array
+ (
+ 'appname' => 'preferences',
+ 'location' => 'changepassword',
+ 'rights' => 1
+ );
+
+ foreach ($apps_admin as $app_admin)
+ {
+ $acls[] = array
+ (
+ 'appname' => $app_admin,
+ 'location' => 'admin',
+ 'rights' => phpgwapi_acl::ADD
+ );
+ }
+
+ $apps = $fields['account_permissions'] ?
$fields['account_permissions'] : array();
+
$contacts = createobject('phpgwapi.contacts');
$primary = array
@@ -328,7 +372,7 @@
$account->expires = -1;
}
- $account_id =
$GLOBALS['phpgw']->accounts->create($account, array($group_id), array(),
array(), $contact_data);
+ $account_id =
$GLOBALS['phpgw']->accounts->create($account, $groups, $acls, $apps,
$contact_data);
if($account_id)
{
$GLOBALS['phpgw']->log->write(array('text'=>'I-Notification, user created
%1','p1'=> $account_lid));
Modified: trunk/registration/inc/class.uicommon.inc.php
===================================================================
--- trunk/registration/inc/class.uicommon.inc.php 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/inc/class.uicommon.inc.php 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -159,7 +159,7 @@
self::add_stylesheet('phpgwapi/js/yahoo/paginator/assets/skins/sam/paginator.css');
self::add_stylesheet('phpgwapi/js/yahoo/treeview/assets/skins/sam/treeview.css');
//self::add_stylesheet('registration/templates/base/css/base.css');
- self::add_javascript('controller', 'yahoo',
'common.js');//Use this one for now
+ self::add_javascript('registration', 'yahoo',
'common.js');//Use this one for now
$this->tmpl_search_path = array();
array_push($this->tmpl_search_path, PHPGW_SERVER_ROOT .
'/phpgwapi/templates/base');
array_push($this->tmpl_search_path, PHPGW_SERVER_ROOT .
'/phpgwapi/templates/' . $GLOBALS['phpgw_info']['server']['template_set']);
Modified: trunk/registration/inc/class.uipending.inc.php
===================================================================
--- trunk/registration/inc/class.uipending.inc.php 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/inc/class.uipending.inc.php 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -28,12 +28,7 @@
phpgw::import_class('phpgwapi.yui');
phpgw::import_class('registration.uicommon');
-/*
- include_class('registration', 'check_list', 'inc/model/');
- include_class('registration', 'date_generator', 'inc/component/');
- include_class('registration', 'status_checker', 'inc/helper/');
- include_class('registration', 'date_helper', 'inc/helper/');
-*/
+
class registration_uipending extends registration_uicommon
{
var $cat_id;
@@ -45,6 +40,7 @@
var $currentapp;
var $type_id;
var $location_code;
+ var $config;
private $so_control_area;
private $so_control;
@@ -66,6 +62,10 @@
$this->bo =
CreateObject('registration.bopending',true);
$this->bocommon =
CreateObject('property.bocommon');
+ $c = createobject('phpgwapi.config','registration');
+ $c->read();
+ $this->config = $c->config_data;
+
$this->start =
$this->bo->start;
$this->query =
$this->bo->query;
$this->sort =
$this->bo->sort;
@@ -185,9 +185,6 @@
phpgwapi_yui::load_widget('paginator');
self::add_javascript('registration', 'yahoo',
'pending.index.js');
-// self::add_javascript('registration',
'registration', 'jquery.js');
-// self::add_javascript('registration',
'registration', 'ajax.js');
-
self::render_template_xsl(array('pending_users', 'common'), $data);
}
}
@@ -213,9 +210,17 @@
}
}
+
+ $values['account_permissions']
= phpgw::get_var('account_permissions');
+ $values['account_permissions_admin'] =
phpgw::get_var('account_permissions_admin');
+ $values['account_groups']
= phpgw::get_var('account_groups');
+
$values =
$this->bocommon->collect_locationdata($values,$insert_record);
$values['id'] = $id;
+
+//_debug_array($account_permissions);
+//_debug_array($account_permissions_admin);
//_debug_array($values);die();
if($this->bo->update_pending_user($values))
{
@@ -236,6 +241,12 @@
$GLOBALS['phpgw']->redirect_link('/index.php',
array('menuaction' => 'registration.uipending.index'));
}
+ if (isset($_POST['delete']) && $id) // The user has
pressed the delete button
+ {
+ $this->bo->delete($id);
+ $GLOBALS['phpgw']->redirect_link('/index.php',
array('menuaction' => 'registration.uipending.index'));
+ }
+
if($id)
{
$user = $bo->get_pending_user($id);
@@ -275,13 +286,115 @@
'entity_data' => false
));
+ /* groups */
+ $group_list = array();
+ $all_groups
=$GLOBALS['phpgw']->accounts->get_list('groups');
+
+ //FIXME!!
+ /*
+ if(!$GLOBALS['phpgw']->acl->check('run',
phpgwapi_acl::READ, 'admin'))
+ {
+ $available_apps =
$GLOBALS['phpgw_info']['apps'];
+ $valid_groups = array();
+ foreach($available_apps as $_app => $dummy)
+ {
+
if($GLOBALS['phpgw']->acl->check('admin', phpgwapi_acl::ADD, $_app))
+ {
+ $valid_groups =
array_merge($valid_groups,$GLOBALS['phpgw']->acl->get_ids_for_location('run',
phpgwapi_acl::READ, $_app));
+ }
+ }
+
+ $valid_groups = array_unique($valid_groups);
+ }
+ else
+ {
+ $valid_groups = array_keys($all_groups);
+ }
+ */
+
+ $valid_groups = array_keys($all_groups);
+
+ $user['reg_info']['account_groups'] =
isset($user['reg_info']['account_groups']) &&
$user['reg_info']['account_groups'] ? $user['reg_info']['account_groups'] :
array();
+ if($this->config['default_group_id'] &&
!in_array($this->config['default_group_id'] ,
$user['reg_info']['account_groups']))
+ {
+ $user['reg_info']['account_groups'] =
array_merge ($user['reg_info']['account_groups'],
array($this->config['default_group_id']));
+ }
+
+ foreach ( $all_groups as $group )
+ {
+ $group_list[] = array
+ (
+ 'account_id' => $group->id,
+ 'account_lid' => $group->__toString(),
+ 'i_am_admin' => in_array($group->id,
$valid_groups) ? 1 : 0,
+ 'checked' =>
in_array($group->id, $user['reg_info']['account_groups']) ? 1 : 0
+ );
+ }
+
+
+ /* create list of available apps */
+
+ $available_apps = $GLOBALS['phpgw_info']['apps'];
+ asort($available_apps);
+
+ if(!$GLOBALS['phpgw']->acl->check('run',
phpgwapi_acl::READ, 'admin'))
+ {
+ $valid_apps =
$GLOBALS['phpgw']->acl->get_app_list_for_id('admin', phpgwapi_acl::ADD,
$GLOBALS['phpgw_info']['user']['account_id']);
+ }
+ else
+ {
+ $valid_apps = array_keys($available_apps);
+ }
+
+ foreach ( $available_apps as $key => $application )
+ {
+ if ($application['enabled'] &&
$application['status'] != 3)
+ {
+ $perm_display[] = array
+ (
+ 'app_name'
=> $key,
+ 'translated_name' =>
lang($key)
+ );
+ }
+ }
+ asort($perm_display);
+
+ $app_list = array();
+ foreach ( $perm_display as $perm )
+ {
+ $app_list[] = array
+ (
+ 'app_title'
=> $perm['translated_name'],
+ 'checkbox_name' =>
"account_permissions[{$perm['app_name']}]",
+ 'checked'
=> in_array($perm['app_name'], $user['reg_info']['account_permissions']) ? 1 :
0,
+ 'checkbox_name_admin' =>
"account_permissions_admin[{$perm['app_name']}]",
+ 'checked_admin' =>
in_array($perm['app_name'], $user['reg_info']['account_permissions_admin']) ? 1
: 0,
+ 'i_am_admin' =>
in_array($perm['app_name'], $valid_apps) ? 1 : 0,
+ );
+ }
+
+//_debug_array($app_list);die();
+
+ $tabs = array
+ (
+ 'main' => array('label' =>
lang('user'), 'link' => '#main'),
+ 'groups' => array('label' =>
lang('groups'), 'link' => '#groups'),
+ 'apps' => array('label' =>
lang('applications'), 'link' => '#apps'),
+ );
+ $active_tab = 'main';
+
+ phpgwapi_yui::tabview_setup('edit_user_tabview');
+
$data = array
(
+ 'tabs' =>
phpgwapi_yui::tabview_generate($tabs, $active_tab),
'value_id' => $id,
'user_data' =>
$user_data,
'location_data' =>
$location_data,
- 'value_approved' =>
$user['reg_approved']
+ 'value_approved' =>
$user['reg_approved'],
+ 'app_list' =>
$app_list,
+ 'group_list' => $group_list,
);
$GLOBALS['phpgw_info']['flags']['app_header'] =
lang('registration') . '::' . lang('edit user');
@@ -309,7 +422,7 @@
$results['sort'] = 'location_code';
$results['dir'] = $this->bo->sort ? $this->bo->sort :
'ASC';
- array_walk($results['results'], array($this,
'add_links'), array($type));
+// array_walk($results['results'], array($this,
'add_links'), array($type));
return $this->yui_results($results);
}
Modified: trunk/registration/inc/hook_logout.inc.php
===================================================================
--- trunk/registration/inc/hook_logout.inc.php 2012-04-04 12:05:27 UTC (rev
9105)
+++ trunk/registration/inc/hook_logout.inc.php 2012-04-09 17:07:12 UTC (rev
9106)
@@ -17,8 +17,13 @@
$c = createobject('phpgwapi.config','registration');
$c->read();
- if(!$c->config_data['activate_account'] == 'pending_approval')
+ if($c->config_data['activate_account'] == 'pending_approval')
{
$GLOBALS['phpgw']->db->query("DELETE FROM phpgw_reg_accounts
WHERE reg_dla <= '"
+ . (time() - 7200) . "' AND reg_info IS
NULL",__LINE__,__FILE__);
+ }
+ else
+ {
+ $GLOBALS['phpgw']->db->query("DELETE FROM phpgw_reg_accounts
WHERE reg_dla <= '"
. (time() - 7200) . "'",__LINE__,__FILE__);
}
Added: trunk/registration/js/yahoo/common.js
===================================================================
--- trunk/registration/js/yahoo/common.js (rev 0)
+++ trunk/registration/js/yahoo/common.js 2012-04-09 17:07:12 UTC (rev
9106)
@@ -0,0 +1,776 @@
+YAHOO.namespace('portico');
+
+YAHOO.portico.js_alias_method_chain = function(constructor_func, func_name,
new_feature_name, feature_impl_func) {
+ constructor_func.prototype[func_name+'_without_'+new_feature_name] =
constructor_func.prototype[func_name];
+ constructor_func.prototype[func_name+'_with_'+new_feature_name] =
feature_impl_func;
+ constructor_func.prototype[func_name] =
constructor_func.prototype[func_name+'_with_'+new_feature_name];
+};
+
+YAHOO.portico.lang = function(section, config) {
+ config = config || {};
+ if (YAHOO && YAHOO.portico && YAHOO.portico.i18n &&
YAHOO.portico.i18n[section]) {
+ YAHOO.portico.i18n[section](config);
+ }
+ return config;
+};
+
+/** Hook widgets to translations **/
+YAHOO.portico.js_alias_method_chain(YAHOO.widget.Calendar, 'init', 'i18n',
function(id, container, config) {
+ YAHOO.portico.lang('Calendar', config);
+ return this.init_without_i18n(id, container, config);
+});
+
+YAHOO.portico.js_alias_method_chain(YAHOO.widget.DataTable, '_initConfigs',
'i18n', function(config) {
+ YAHOO.portico.lang('DataTable', config);
+ return this._initConfigs_without_i18n(config);
+});
+
+function y2k(number) { return (number < 1000) ? number + 1900 : number; }
+YAHOO.portico.weeknumber = function(when) {
+ var year = when.getFullYear();
+ var month = when.getMonth();
+ var day = when.getDate();
+
+ var newYear = new Date(year,0,1);
+ var modDay = newYear.getDay();
+ if (modDay == 0) modDay=6; else modDay--;
+
+ var daynum = ((Date.UTC(y2k(year),when.getMonth(),when.getDate(),0,0,0)
- Date.UTC(y2k(year),0,1,0,0,0)) /1000/60/60/24) + 1;
+
+ if (modDay < 4 ) {
+ var weeknum = Math.floor((daynum+modDay-1)/7)+1;
+ } else {
+ var weeknum = Math.floor((daynum+modDay-1)/7);
+ if (weeknum == 0) {
+ year--;
+ var prevNewYear = new Date(year,0,1);
+ var prevmodDay = prevNewYear.getDay();
+ if (prevmodDay == 0) prevmodDay = 6; else prevmodDay--;
+ if (prevmodDay < 4) weeknum = 53; else weeknum = 52;
+ }
+ }
+ return + weeknum;
+}
+
+parseISO8601 = function (string) {
+ var regexp = "(([0-9]{4})(-([0-9]{1,2})(-([0-9]{1,2}))))?(
)?(([0-9]{1,2}):([0-9]{1,2}))?";
+ var d = string.match(new RegExp(regexp));
+ var year = d[2] ? (d[2] * 1) : 0;
+ date = new Date(year, (d[4]||1)-1, d[6]||0);
+ if(d[9])
+ date.setHours(d[9]);
+ if(d[10])
+ date.setMinutes(d[10]);
+ return date;
+};
+
+YAHOO.portico.serializeForm = function(formID) {
+ var form = YAHOO.util.Dom.get(formID);
+ var values = [];
+ for(var i=0; i < form.elements.length; i++) {
+ var e = form.elements[i];
+ if(e.type=='checkbox' || e.type=='radio') {
+ if(e.checked) {
+ values.push(e.name + '=' +
encodeURIComponent(e.value));
+ }
+ }
+ else if(e.name) {
+ values.push(e.name + '=' + encodeURIComponent(e.value));
+ }
+ }
+ return values.join('&');
+};
+
+YAHOO.portico.fillForm = function(formID, params) {
+ var form = YAHOO.util.Dom.get(formID);
+ var values = [];
+ for(var i=0; i < form.elements.length; i++) {
+ var e = form.elements[i];
+ if((e.type=='checkbox' || e.type=='radio') && params[e.name]) {
+ e.checked = true;
+ }
+ else if(e.name && params[e.name] != undefined) {
+ e.value = params[e.name];
+ if(e._update) { // Is this connected to a date picker?
+ e._update();
+ }
+ }
+ }
+ return values.join('&');
+};
+
+YAHOO.portico.parseQS = function(qs) {
+ qs = qs.replace(/\+/g, ' ');
+ var args = qs.split('&');
+ var params = {};
+ for (var i = 0; i < args.length; i++) {
+ var pair = args[i].split('=');
+ var name = decodeURIComponent(pair[0]);
+ var value = (pair.length==2) ? decodeURIComponent(pair[1]) :
name;
+ params[name] = value;
+ }
+ return params;
+}
+
+YAHOO.portico.formatLink = function(elCell, oRecord, oColumn, oData) {
+ var name = oRecord.getData(oColumn.key);
+ var link = oRecord.getData('link');
+ elCell.innerHTML = '<a href="' + link + '">' + name + '</a>';
+};
+
+YAHOO.portico.formatGenericLink = function(elCell, oRecord, oColumn, oData)
+{
+ var data = oRecord.getData(oColumn.key);
+ //console.log(data['href']);
+ var link = data['href'];
+ var name = data['label'];
+
+ elCell.innerHTML = '<a href="' + link + '">' + name + '</a>';
+};
+
+/*
+YAHOO.portico.formatGenericLink = function() {
+ var links = [];
+ var nOfLinks = arguments.length;
+
+ for (var i=0; i < nOfLinks; i++) { links[i] = arguments[i]; }
+
+ return function(elCell, oRecord, oColumn, oData)
+ {
+ var nOfLinks = links.length;
+ var data = oRecord.getData(oColumn.key);
+
+ var linksHtml = '';
+ if (nOfLinks > 0) {
+ //Use specified link names
+ for (var i=0; i < nOfLinks; i++) {
+ if (data[i])
+ {
+ linksHtml += '<div><a href="' + data[i]
+ '">' + links[i] + '</a></div>';
+ }
+ }
+ } else {
+ //Get label from embedded data
+ if (data['href'] != undefined && data['label'] !=
undefined) {
+ linksHtml += '<div><a href="' + data['href'] +
'">' + data['label'] + '</a></div>';
+ } else if(data['href'] == undefined && data['label'] !=
undefined) {
+ linksHtml += '<div>'+data['label']+'</div>';
+ }
+ }
+
+ elCell.innerHTML = linksHtml;
+ };
+};
+*/
+YAHOO.portico.autocompleteHelper = function(url, field, hidden, container,
label_attr) {
+ label_attr = label_attr || 'name';
+ var myDataSource = new YAHOO.util.DataSource(url);
+ myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ myDataSource.connXhrMode = "queueRequests";
+ myDataSource.responseSchema = {
+ resultsList: "ResultSet.Result",
+ fields: [label_attr, 'id']
+ };
+ myDataSource.maxCacheEntries = 5;
+ var ac = new YAHOO.widget.AutoComplete(field, container, myDataSource);
+ ac.queryQuestionMark = false;
+ ac.resultTypeList = false;
+ ac.forceSelection = true;
+ ac.itemSelectEvent.subscribe(function(sType, aArgs) {
+ YAHOO.util.Dom.get(hidden).value = aArgs[2].id;
+ });
+ return ac;
+};
+
+YAHOO.portico.setupInlineTablePaginator = function(container) {
+ var paginatorConfig = {
+ rowsPerPage: 10,
+ alwaysVisible: false,
+ template: "{PreviousPageLink}
<strong>{CurrentPageReport}</strong> {NextPageLink}",
+ pageReportTemplate: "Showing items {startRecord} - {endRecord}
of {totalRecords}",
+ containers: [YAHOO.util.Dom.get(container)]
+ };
+
+ YAHOO.portico.lang('setupPaginator', paginatorConfig);
+ var pag = new YAHOO.widget.Paginator(paginatorConfig);
+ pag.render();
+ return pag;
+};
+
+YAHOO.portico.inlineTableHelper = function(container, url, colDefs, options,
disablePagination) {
+ var Dom = YAHOO.util.Dom;
+
+ var container = Dom.get(container);
+ if(!disablePagination) {
+ var paginatorContainer =
container.appendChild(document.createElement('div'));
+ var dataTableContainer =
container.appendChild(document.createElement('div'));
+ }
+ else {
+ dataTableContainer = container;
+ }
+ options = options || {};
+ options.dynamicData = true;
+
+ if(!disablePagination) {
+ options.paginator =
YAHOO.portico.setupInlineTablePaginator(paginatorContainer);
+ url += '&results=' + options.paginator.getRowsPerPage() + '&';
+ }
+ var myDataSource = new YAHOO.util.DataSource(url);
+ myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ myDataSource.connXhrMode = "queueRequests";
+ myDataSource.responseSchema = {
+ resultsList: "ResultSet.Result",
+ metaFields : { totalResultsAvailable:
"ResultSet.totalResultsAvailable", actions: 'Actions' }
+ };
+
+ var myDataTable = new YAHOO.widget.DataTable(dataTableContainer,
colDefs, myDataSource, options);
+
+ myDataTable.handleDataReturnPayload = function(oRequest, oResponse,
oPayload) {
+ oPayload.totalRecords = oResponse.meta.totalResultsAvailable;
+ return oPayload;
+ }
+
+ myDataTable.doBeforeLoadData = function(nothing, data) {
+ if (!data.meta.actions) return data;
+
+ actions = data.meta.actions;
+
+ for (var key in actions) {
+ var actionLink = document.createElement('a');
+ actionLink.href = actions[key].href.replace(/&/gi,
'&');
+ actionLink.innerHTML = actions[key].text;
+ YAHOO.util.Dom.insertAfter(actionLink, container);
+ };
+
+ return data;
+ };
+ return {dataTable: myDataTable, dataSource: myDataSource};
+};
+
+YAHOO.portico.inlineImages = function(container, url, options)
+{
+ options = options || {};
+ var myDataSource = new YAHOO.util.DataSource(url);
+ myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ myDataSource.connXhrMode = "queueRequests";
+ myDataSource.responseSchema = {
+ resultsList: "ResultSet.Result",
+ metaFields : { totalResultsAvailable:
"ResultSet.totalResultsAvailable", actions: 'Actions' }
+ };
+
+ myDataSource.sendRequest('', {success: function(sRequest, oResponse,
oPayload) {
+ var dlImages = new
YAHOO.util.Element(document.createElement('dl'));
+ dlImages.addClass('proplist images');
+
+ var displayContainer = false;
+
+ for(var key in oResponse.results) {
+ displayContainer = true;
+ var imgEl =
dlImages.appendChild(document.createElement('dd')).appendChild(document.createElement('img'));
+ var captionEl =
dlImages.appendChild(document.createElement('dt'));
+ imgEl.src =
oResponse.results[key].src.replace(/&/gi, '&');
+
captionEl.appendChild(document.createTextNode(oResponse.results[key].description));
+ }
+
+ if (displayContainer)
+ {
+ new YAHOO.util.Element(container).appendChild(dlImages);
+ } else {
+ new YAHOO.util.Element(container).setStyle('display',
'none');
+ }
+ }});
+};
+
+YAHOO.portico.radioTableHelper = function(container, url, name, selection) {
+ return YAHOO.portico.checkboxTableHelper(container, url, name,
selection, {type: 'radio'});
+};
+
+YAHOO.portico.checkboxTableHelper = function(container, url, name, selection,
options) {
+ options = YAHOO.lang.isObject(options) ? options : {};
+
+ options = YAHOO.lang.merge(
+ {type: 'checkbox', selectionFieldOptions: {}, nameFieldOptions:
{}, defaultChecked: false},
+ options
+ );
+
+ var type = options['type'] || 'checkbox';
+ selection = selection || [];
+ var myDataSource = new YAHOO.util.DataSource(url);
+ myDataSource.responseType = YAHOO.util.DataSource.TYPE_JSON;
+ myDataSource.connXhrMode = "queueRequests";
+ myDataSource.responseSchema = {
+ resultsList: "ResultSet.Result",
+ metaFields : { totalResultsAvailable:
"ResultSet.totalResultsAvailable" }
+ };
+
+ var lang = {LBL_NAME: 'Name'};
+ YAHOO.portico.lang('common', lang);
+
+ var changeListener = false;
+
+ if (options.onSelectionChanged) {
+ changeListener = function(e) {
+ var selectedItems = [];
+ var items =
YAHOO.util.Dom.getElementsBy(function(i){return i.checked;}, 'input',
container);
+
+ YAHOO.util.Dom.batch(items, function(e, selectedItems) {
+ selectedItems.push(e.value);
+ }, selectedItems);
+
+ options.onSelectionChanged(selectedItems);
+ };
+ }
+
+ var checkboxFormatter = function(elCell, oRecord, oColumn, oData) {
+ var checked = false;
+ var newInput;
+ for(var i=0; i < selection.length; i++) {
+ if (selection[i] == oData) {
+ checked = true;
+ break;
+ }
+ }
+
+ newInput = document.createElement('input');
+ newInput.setAttribute('type', type);
+ newInput.setAttribute('name', name);
+ newInput.setAttribute('value', oData);
+ if (checked || options.defaultChecked) {
+ newInput.setAttribute('checked', 'checked');
+ newInput.setAttribute('defaultChecked', true); //Needed
for IE compatibility
+ }
+
+ if (changeListener != false) {
+ //Using 'click' event on IE as the change event does
not work as expected there.
+ YAHOO.util.Event.addListener(newInput, (YAHOO.env.ua.ie
> 0 ? 'click' : 'change'), changeListener);
+ }
+
+ elCell.appendChild(newInput);
+
+ };
+ var colDefs = [
+ YAHOO.lang.merge({key: "id", formatter: checkboxFormatter,
label: ''}, options.selectionFieldOptions),
+ YAHOO.lang.merge({key: "name", label: lang['LBL_NAME'],
sortable: true}, options.nameFieldOptions)
+ ];
+
+ if (options['additional_fields'] &&
YAHOO.lang.isArray(options['additional_fields'])) {
+ for (var i=0; i < options['additional_fields'].length; i++) {
+ colDefs.push(options['additional_fields'][i]);
+ }
+ }
+
+ var myDataTable = new YAHOO.widget.DataTable(container, colDefs,
myDataSource, {
+ sortedBy: {key: 'name', dir: YAHOO.widget.DataTable.CLASS_ASC}
+ });
+};
+
+YAHOO.portico.setupDatePickers = function() {
+ YAHOO.util.Dom.getElementsByClassName('date-picker', null, null,
YAHOO.portico.setupDatePickerHelper, [true, false]);
+ YAHOO.util.Dom.getElementsByClassName('time-picker', null, null,
YAHOO.portico.setupDatePickerHelper, [false, true]);
+ YAHOO.util.Dom.getElementsByClassName('datetime-picker', null, null,
YAHOO.portico.setupDatePickerHelper, [true, true]);
+};
+
+YAHOO.portico.setupDatePickerHelper = function(field, args) {
+ if (!YAHOO.portico.setupDatePickerHelper.groups) {
+ YAHOO.portico.setupDatePickerHelper.groups = {};
+ }
+
+ var groups = YAHOO.portico.setupDatePickerHelper.groups;
+ var Dom = YAHOO.util.Dom;
+
+ if(field._converted)
+ return;
+ field._converted = true;
+ var date = args[0];
+ var time = args[1];
+ var Dom = YAHOO.util.Dom;
+ var Event = YAHOO.util.Event;
+ var oCalendarMenu = new YAHOO.widget.Overlay(Dom.generateId(), {
visible: false});
+ var oButton = new YAHOO.widget.Button({type: "menu", id:
Dom.generateId(), menu: oCalendarMenu, container: field});
+
+ oButton.with_time = time;
+ oButton.with_date = date;
+
+ var lang = {LBL_CHOOSE_DATE: 'Choose a date'};
+ YAHOO.portico.lang('setupDatePickerHelper', lang);
+
+ oButton._calendarMenu = oCalendarMenu;
+ oButton._input = field._input = Dom.getElementsBy(function(){return
true;}, 'input', field)[0];
+
+ oButton.hasDateSection = function() { return this.with_date; };
+ oButton.hasTimeSection = function() { return this.with_time; };
+
+ oButton.fireUpdateEvent = function() {
+ if (oButton.on_update) {
+ oButton.on_update.func.call(oButton.on_update.context,
oButton);
+ }
+ };
+
+ oButton.on("appendTo", function () {
+ this._calendarMenu.setBody(" ");
+ this._calendarMenu.body.id = Dom.generateId();
+ });
+ if(!date)
+ oButton.setStyle('display', 'none');
+ //oButton._input.setAttribute('type', 'hidden');
+ oButton._input.style.display = 'none';
+ if(oButton._input.value)
+ oButton._date = parseISO8601(oButton._input.value);
+ else
+ oButton._date = new Date(1, 1, 1);
+ oButton._input._update = function() {
+ if(oButton._input.value)
+ oButton._date = parseISO8601(oButton._input.value);
+ else
+ oButton._date = new Date(1, 1, 1);
+ oButton._update(false);
+ };
+ oButton._update = function(fire_update_event) {
+ var year = this._date.getFullYear();
+ var month = this._date.getMonth() + 1;
+ var day = this._date.getDate();
+ var hours = this._date.getHours();
+ var minutes = this._date.getMinutes();
+ var month = month < 10 ? '0' + month : '' + month;
+ var day = day < 10 ? '0' + day : '' + day;
+ var hours = hours < 10 ? '0' + hours : '' + hours;
+ var minutes = minutes < 10 ? '0' + minutes : '' + minutes;
+ var dateValue = year + '-' + month + '-' + day;
+ var timeValue = hours + ':' + minutes;
+ if(year == 1901) {
+ this.set('label', lang.LBL_CHOOSE_DATE);
+ } else {
+ this.set('label', dateValue);
+ }
+ if(time) {
+ this._hours.set('value', parseInt(hours, 10));
+ this._minutes.set('value', parseInt(minutes, 10));
+ this._hours.update();
+ this._minutes.update();
+ }
+ if(year != 1901 && date && time)
+ this._input.value = dateValue + ' ' + timeValue;
+ else if (year != 1901 && date)
+ this._input.value = dateValue;
+ else if(!date && time)
+ this._input.value = timeValue;
+
+ if (fire_update_event) {
+ oButton.fireUpdateEvent();
+ }
+ };
+
+ oButton.getDate = function() {
+ return this._date;
+ };
+
+ oButton.on("click", function () {
+ YAHOO.widget.DateMath.WEEK_ONE_JAN_DATE = 4;
+ var oCalendar = new YAHOO.widget.Calendar(Dom.generateId(),
this._calendarMenu.body.id, {START_WEEKDAY: 1,SHOW_WEEK_HEADER:true});
+ oCalendar._button = this;
+ if(this._date.getFullYear() == 1901) {
+ var d = new Date();
+ oCalendar.cfg.setProperty("pagedate", (d.getMonth()+1)
+ "/" + d.getFullYear());
+ } else {
+ oCalendar.select(this._date);
+ oCalendar.cfg.setProperty("pagedate",
(this._date.getMonth()+1) + "/" + this._date.getFullYear());
+ }
+
+ oCalendar.render();
+ // Hide date picker on ESC
+ Event.on(this._calendarMenu.element, "keydown", function
(p_oEvent) {
+ if (Event.getCharCode(p_oEvent) === 27) {
+ this._calendarMenu.hide();
+ this.focus();
+ }
+ }, null, this);
+ oCalendar.selectEvent.subscribe(function (p_sType, p_aArgs) {
+ if (p_aArgs) {
+ var aDate = p_aArgs[0][0];
+ this._date.setFullYear(aDate[0]);
+ this._date.setMonth(aDate[1]-1);
+ this._date.setDate(aDate[2]);
+ this._update(true);
+ //this._input.value = value;
+ }
+ this._calendarMenu.hide();
+ }, this, true);
+ });
+ if(time) {
+ oButton._hours = new YAHOO.portico.InputNumberRange({min: 0,
max:23});
+ oButton._minutes = new YAHOO.portico.InputNumberRange({min: 0,
max:59});
+
+ oButton._hours.on('updateEvent', function() {
+ oButton._date.setHours(this.get('value'));
+ oButton._update(true);
+ });
+
+ oButton._minutes.on('updateEvent', function() {
+ oButton._date.setMinutes(this.get('value'));
+ oButton._update(true);
+ });
+
+ oButton.on("appendTo", function () {
+ var timePicker =
Dom.get(field).appendChild(document.createElement('span'));
+ Dom.addClass(timePicker, 'time-picker-inputs');
+ timePicker.appendChild(document.createTextNode(' '));
+ oButton._hours.render(timePicker);
+ timePicker.appendChild(document.createTextNode(' : '));
+ oButton._minutes.render(timePicker);
+ oButton._update(false);
+ });
+ }
+ oButton._update(false);
+
+ var id = Dom.getAttribute(oButton._input, 'id');
+ var matches = /^([a-zA-Z][\w0-9\-_.:]+)_(from|to)$/.exec(id);
+
+ var group_name = matches ? matches[1] : false;
+ var from_to = matches ? matches[2] : false;
+
+ if (group_name && from_to && oButton.hasDateSection()) {
+ if (!groups[group_name]) { groups[group_name] = {}; }
+
+ groups[group_name][from_to] = oButton;
+
+ if (groups[group_name]['from'] && groups[group_name]['to']) {
+ groups[group_name]['from'].on_update = {
+ context: groups[group_name]['to'],
+ func: function(fromDateButton) {
+ var fromDate = fromDateButton.getDate();
+ var currentYear =
this._date.getFullYear();
+
+ if (this._date.getFullYear() == 1901) {
+
this._date.setFullYear(fromDate.getFullYear());
+
this._date.setMonth(fromDate.getMonth());
+
this._date.setDate(fromDate.getDate());
+ } else if (fromDate.getFullYear() <=
this._date.getFullYear() && fromDate.getMonth() <= this._date.getMonth() &&
fromDate.getDate() <= this._date.getDate()) {
+ //this._date.
+ }
+
+ this._update(false);
+ }
+ };
+
+ delete groups[group_name];
+ }
+ }
+};
+
+// Executed on all portico.uicommon-based pages
+YAHOO.util.Event.addListener(window, "load", function() {
+ YAHOO.portico.setupDatePickers();
+});
+var showIfNotEmpty = function(event, fieldname) {
+ if (document.getElementById(fieldname).value.length > 1) {
+ YAHOO.util.Dom.replaceClass(fieldname + "_edit", "hideit",
"showit");
+ } else {
+ YAHOO.util.Dom.replaceClass(fieldname + "_edit", "showit",
"hideit");
+ }
+};
+
+YAHOO.portico.rtfEditorHelper = function(textarea_id, options) {
+ options = YAHOO.lang.merge({width:522, height:300}, (options || {}));
+ var descEdit = new YAHOO.widget.SimpleEditor(textarea_id, {
+ height: options.height+'px',
+ width: options.width+'px',
+ dompath: true,
+ animate: true,
+ handleSubmit: true
+ });
+ descEdit.render();
+ return descEdit;
+};
+
+YAHOO.portico.postToUrl = function(path, params, method) {
+ method = method || "post"; // Set method to post by default, if not
specified.
+ var form = document.createElement("form");
+ form.setAttribute("method", method);
+ form.setAttribute("action", path);
+
+ for(var key in params) {
+ var hiddenField = document.createElement("input");
+ hiddenField.setAttribute("type", "hidden");
+ hiddenField.setAttribute("name", params[key][0]);
+ hiddenField.setAttribute("value", params[key][1]);
+ form.appendChild(hiddenField);
+ }
+ document.body.appendChild(form); // Not entirely sure if this is
necessary
+ form.submit();
+};
+
+(function(){
+ var Dom = YAHOO.util.Dom,
+ Event = YAHOO.util.Event,
+ Panel = YAHOO.widget.Panel,
+ Lang = YAHOO.lang;
+
+ var CSS_PREFIX = 'portico_number_range_';
+
+ var InputNumberRange = function(oConfigs) {
+ InputNumberRange.superclass.constructor.call(this,
document.createElement('span'), oConfigs);
+ this.createEvent('updateEvent');
+ this.refresh(['id'],true);
+ };
+
+ YAHOO.portico.InputNumberRange = InputNumberRange;
+
+ Lang.extend(InputNumberRange, YAHOO.util.Element, {
+ initAttributes: function (oConfigs) {
+ InputNumberRange.superclass.initAttributes.call(this,
oConfigs);
+
+ var container = this.get('element');
+
+ this.setAttributeConfig('inputEl', {
+ readOnly: true,
+ value:
container.appendChild(document.createElement('span'))
+ });
+
+ this.setAttributeConfig('id', {
+ writeOnce: true,
+ validator: function (value) {
+ return
/^[a-zA-Z][\w0-9\-_.:]*$/.test(value);
+ },
+ value: Dom.generateId(),
+ method: function (value) {
+ this.get('inputEl').id = value;
+ }
+ });
+
+ this.setAttributeConfig('value', {
+ value: 0,
+ validator: Lang.isNumber
+ });
+
+ this.setAttributeConfig('input', {
+ value: null
+ });
+
+ this.setAttributeConfig('min', {
+ validator: Lang.isNumber,
+ value: 100
+ });
+
+ this.setAttributeConfig('max', {
+ validator: Lang.isNumber,
+ value: 0
+ });
+
+ this.setAttributeConfig('input_length', {
+ validator: Lang.isNumber,
+ value: null
+ });
+ },
+
+ destroy: function () {
+ var el = this.get('element');
+ Event.purgeElement(el, true);
+ el.parentNode.removeChild(el);
+ },
+
+ _padValue: function(value)
+ {
+ value = value.toString('10');
+ var padding = this.get('input_length') - value.length;
+ if (padding > 0) {
+ return ((new Array(padding+1).join('0')) +
value);
+ }
+ return value;
+ },
+
+ _updateValue: function() {
+ var input = this.get('input');
+ var value;
+
+ if (input.value.length > 0) {
+ value = parseInt(input.value, 10);
+ } else {
+ value = 0;
+ }
+
+ if (isNaN(value)) {
+ value = this.get('min');
+ }
+
+ if (value < this.get('min')) {
+ value = this.get('min');
+ }
+
+ if (value > this.get('max')) {
+ value = this.get('max');
+ }
+
+ this.set('value', value);
+ },
+
+ _fireUpdateEvent: function()
+ {
+ this._updateValue();
+ this.update();
+
+ this.fireEvent('updateEvent');
+ },
+
+ update: function() {
+ if (!this.get('input')) { return; }
+ this.get('input').value =
this._padValue(this.get('value'));
+ },
+
+ render: function (parentEl) {
+ parentEl = Dom.get(parentEl);
+
+ if (!parentEl) {
+ YAHOO.log('Missing mandatory argument in
YAHOO.portico.InputNumberRange.render: parentEl','error','Field');
+ return null;
+ }
+
+ var containerEl = this.get('element');
+ this.addClass(CSS_PREFIX + 'container');
+
+ var inputEl = this.get('inputEl');
+ Dom.addClass(inputEl, CSS_PREFIX + 'input');
+
+ this._renderInputEl(inputEl);
+
+ parentEl.appendChild(containerEl); //Appends to
document to show the component
+ },
+
+ _renderInputEl: function (containerEl) {
+ var input =
containerEl.appendChild(document.createElement('input'));
+
+ if (!this.get('input_length')) {
+ this.set('input_length',
this.get('max').toString().length);
+ }
+
+ var size = this.get('input_length');
+ input.setAttribute('size', size);
+ input.setAttribute('maxlength', size);
+
+ if (YAHOO.env.ua.ie > 6) {
+ YAHOO.util.Dom.setStyle(input, 'width', '2em');
+ }
+
+ input.value = this._padValue(this.get('value'));
+
+ this.set('input', input);
+
+ Event.on(input,'keyup', function (oArgs) {
+ this._updateValue();
+ }, this, true);
+
+ Event.on(input, 'change', function(oArgs) {
+ this._fireUpdateEvent();
+ }, this, true);
+
+ oForm = input.form;
+
+ if (oForm) {
+ Event.on(oForm, "submit", function() {
+ this._fireUpdateEvent();
+ }, null, this);
+ }
+
+ }
+ });
+
+})();
Modified: trunk/registration/js/yahoo/pending.index.js
===================================================================
--- trunk/registration/js/yahoo/pending.index.js 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/js/yahoo/pending.index.js 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -4,7 +4,7 @@
formatLinkPending = function(elCell, oRecord, oColumn, oData)
{
var id = oRecord.getData(oColumn.key);
- elCell.innerHTML = '<a href="' + edit_Url + '&id=' + id +
'">Link</a>';
+ elCell.innerHTML = '<a href="' + edit_Url + '&id=' + id + '">'
+ lang['edit'] + '</a>';
};
Modified: trunk/registration/main.php
===================================================================
--- trunk/registration/main.php 2012-04-04 12:05:27 UTC (rev 9105)
+++ trunk/registration/main.php 2012-04-09 17:07:12 UTC (rev 9106)
@@ -35,6 +35,31 @@
'noapi' => true // this stops header.inc.php to
include phpgwapi/inc/function.inc.php
);
+
+ $legal_anonymous_access = array
+ (
+ 'registration' => array
+ (
+ 'uireg' => array
+ (
+ 'step1' => true,
+ 'tos' => true,
+ 'ready_to_activate' => true,
+ 'email_sent_lostpw' => true
+ ),
+ 'boreg' => array
+ (
+ 'step1' => true,
+ 'step2' => true,
+ 'step4' => true,
+ 'lostpw1' => true,
+ 'lostpw2' => true,
+ 'lostpw3' => true
+ )
+ )
+ );
+
+
$GLOBALS['phpgw_info']['flags']['session_name'] = 'registration_session';
$GLOBALS['phpgw_remote_user_fallback'] = 'sql';
include_once('../header.inc.php');
@@ -208,7 +233,22 @@
}
$GLOBALS[$class] = CreateObject("{$app}.{$class}");
- $invalid_data = false; //FIXME consider whether this should be computed
as in the main index.php
+ $invalid_data = false;
+
+ if(!isset($legal_anonymous_access[$app][$class][$method]))
+ {
+ $invalid_data = true;
+
+ $GLOBALS['phpgw']->log->message(array(
+ 'text' => "W-BadmenuactionVariable, attempted to access
private method as anonymous: {$app}.{$class}.{$method}",
+ 'line' => __LINE__,
+ 'file' => __FILE__
+ ));
+ $GLOBALS['phpgw']->log->commit();
+ echo "This method is not alloved from this application as
anonymous: {$app}.{$class}.{$method}";
+
+ }
+
if ( !$invalid_data
&& is_object($GLOBALS[$class])
&& isset($GLOBALS[$class]->public_functions)
@@ -234,4 +274,4 @@
$GLOBALS['phpgw']->common->phpgw_footer();
}
}
-
+ $GLOBALS['phpgw']->common->phpgw_footer();
Modified: trunk/registration/setup/default_records.inc.php
===================================================================
--- trunk/registration/setup/default_records.inc.php 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/setup/default_records.inc.php 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -26,4 +26,3 @@
$GLOBALS['phpgw_setup']->oProc->query ("INSERT INTO phpgw_config
(config_app, config_name, config_value) VALUES
('registration','activate_account','email')");
$GLOBALS['phpgw_setup']->oProc->query ("INSERT INTO phpgw_config
(config_app, config_name, config_value) VALUES
('registration','username_is','choice')");
$GLOBALS['phpgw_setup']->oProc->query ("INSERT INTO phpgw_config
(config_app, config_name, config_value) VALUES
('registration','password_is','choice')");
-?>
Modified: trunk/registration/setup/setup.inc.php
===================================================================
--- trunk/registration/setup/setup.inc.php 2012-04-04 12:05:27 UTC (rev
9105)
+++ trunk/registration/setup/setup.inc.php 2012-04-09 17:07:12 UTC (rev
9106)
@@ -16,7 +16,7 @@
/* Basic information about this app */
$setup_info['registration']['name'] =
'registration';
- $setup_info['registration']['version'] = '0.8.3';
+ $setup_info['registration']['version'] = '0.8.4';
$setup_info['registration']['app_order'] = '90';
$setup_info['registration']['enable'] = 2;
$setup_info['registration']['app_group'] = 'other';
Modified: trunk/registration/setup/tables_current.inc.php
===================================================================
--- trunk/registration/setup/tables_current.inc.php 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/setup/tables_current.inc.php 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -21,7 +21,7 @@
'fd' => array(
'reg_id' => array('type' => 'varchar',
'precision' => 32,'nullable' => False),
'reg_lid' => array('type' => 'varchar',
'precision' => 255,'nullable' => False),
- 'reg_info' => array('type' => 'text','nullable'
=> False),
+ 'reg_info' => array('type' => 'text','nullable'
=> true),
'reg_dla' => array('type' => 'int', 'precision'
=> 4,'nullable' => False),
'reg_approved' => array('type' => 'int',
'precision' => 2,'nullable' => true)
),
Modified: trunk/registration/setup/tables_update.inc.php
===================================================================
--- trunk/registration/setup/tables_update.inc.php 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/setup/tables_update.inc.php 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -46,3 +46,17 @@
return
$GLOBALS['setup_info']['registration']['currentver'];
}
}
+
+ $test[] = '0.8.3';
+ function registration_upgrade0_8_3()
+ {
+ $GLOBALS['phpgw_setup']->oProc->m_odb->transaction_begin();
+
+
$GLOBALS['phpgw_setup']->oProc->AlterColumn('phpgw_reg_accounts','reg_info',array('type'
=> 'text','nullable' => True));
+
+ if($GLOBALS['phpgw_setup']->oProc->m_odb->transaction_commit())
+ {
+ $GLOBALS['setup_info']['registration']['currentver'] =
'0.8.4';
+ return
$GLOBALS['setup_info']['registration']['currentver'];
+ }
+ }
Modified: trunk/registration/templates/base/common.xsl
===================================================================
--- trunk/registration/templates/base/common.xsl 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/templates/base/common.xsl 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -7,23 +7,23 @@
<![CDATA[
/**
- * Javascript for the controller module. Holds datasource init functions and
form helpers.
+ * Javascript for the regitration module. Holds datasource init functions and
form helpers.
*
- * Functions and objects within this file are kept in the YAHOO.controller
namespace.
+ * Functions and objects within this file are kept in the YAHOO.portico
namespace.
*/
- YAHOO.namespace('controller');
+ YAHOO.namespace('portico');
// Holds data source setup funtions
- YAHOO.controller.setupDatasource = new Array();
+ YAHOO.portico.setupDatasource = new Array();
//Holds all data sources
- YAHOO.controller.datatables = new Array();
+ YAHOO.portico.datatables = new Array();
counter = 0;
// Adds data source setup funtions
function setDataSource(source_url, column_defs, form_id, filter_ids,
container_id, paginator_id, datatable_id,rel_id, editor_action,
disable_left_click) {
- YAHOO.controller.setupDatasource.push(
+ YAHOO.portico.setupDatasource.push(
function() {
this.url = source_url;
this.columns = column_defs;
@@ -56,8 +56,8 @@
selected_datatable.getDataSource().sendRequest('',{success:loaded,
scope:selected_datatable});
//... traverse all datatables and refresh related (to the
selected) data tables
- for(var i=0; i<YAHOO.controller.datatables.length; i++){
- var datatable = YAHOO.controller.datatables[i];
+ for(var i=0; i<YAHOO.portico.datatables.length; i++){
+ var datatable = YAHOO.portico.datatables[i];
for(var j=0;j<selected_datatable.related.length;j++){
var curr_related =
selected_datatable.related[j];
@@ -128,7 +128,7 @@
this.table.editor_action = this.properties.editor_action;
//... push the data table on a stack
- YAHOO.controller.datatables.push(this.table);
+ YAHOO.portico.datatables.push(this.table);
//... ?
this.table.handleDataReturnPayload = function(oRequest,
oResponse, oPayload) {
@@ -369,10 +369,10 @@
// Set up data sources when the document has loaded
YAHOO.util.Event.addListener(window, "load", function() {
var i = 0;
- while(YAHOO.controller.setupDatasource.length > 0){
+ while(YAHOO.portico.setupDatasource.length > 0){
//... create a variable name, assign set up function to
that variable and instantiate properties
- variableName = "YAHOO.controller.datasource" + i;
- eval(variableName + " =
YAHOO.controller.setupDatasource.shift()");
+ variableName = "YAHOO.portico.datasource" + i;
+ eval(variableName + " =
YAHOO.portico.setupDatasource.shift()");
var source_properties = eval("new " + variableName +
"()");
]]>
@@ -402,7 +402,7 @@
<?php
$populate = phpgw::get_var('populate_form');
if(isset($populate)){?>
- var qs =
YAHOO.controller.serializeForm(source_properties.form);
+ var qs =
YAHOO.portico.serializeForm(source_properties.form);
this.wrapper.source.liveData =
this.wrapper.url + qs + '&';
this.wrapper.source.sendRequest('',
{success: function(sRequest, oResponse, oPayload) {
this.wrapper.table.onDataReturnInitializeTable(sRequest, oResponse,
this.wrapper.paginator);
@@ -464,7 +464,7 @@
myDlg.show();
};
- var storeColumnsUrl = YAHOO.controller.storeColumnsUrl;
+ var storeColumnsUrl = YAHOO.portico.storeColumnsUrl;
var hideDlg = function(e) {
this.hide();
// After we've hidden the dialog we send a post
call to store the columns the user has selected
Modified: trunk/registration/templates/base/pending_users.xsl
===================================================================
--- trunk/registration/templates/base/pending_users.xsl 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/templates/base/pending_users.xsl 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -30,6 +30,9 @@
</xsl:template>
<xsl:template name="pending_users" xmlns:php="http://php.net/xsl">
+ <script type="text/javascript">
+ var lang = <xsl:value-of select="php:function('js_lang',
'edit')"/>;
+ </script>
<!-- IMPORTANT!!! Loads YUI javascript -->
<xsl:call-template name="common"/>
@@ -103,9 +106,9 @@
<xsl:template name="datasource-definition" xmlns:php="http://php.net/xsl">
<script>
- YAHOO.namespace('controller');
+ YAHOO.namespace('portico');
- YAHOO.controller.columnDefs = [
+ YAHOO.portico.columnDefs = [
<xsl:for-each select="//datatable/field">
{
key: "<xsl:value-of
select="key"/>",
@@ -125,7 +128,7 @@
];
var main_source = '<xsl:value-of select="source"/>';
- var main_columnDefs = YAHOO.controller.columnDefs;
+ var main_columnDefs = YAHOO.portico.columnDefs;
var main_form = 'queryForm';
var main_filters = ['status_id', 'responsibility_roles_list'];
var main_container = 'datatable-container';
Modified: trunk/registration/templates/base/user_edit.xsl
===================================================================
--- trunk/registration/templates/base/user_edit.xsl 2012-04-04 12:05:27 UTC
(rev 9105)
+++ trunk/registration/templates/base/user_edit.xsl 2012-04-09 17:07:12 UTC
(rev 9106)
@@ -2,16 +2,19 @@
<!-- item -->
<xsl:template match="data" xmlns:php="http://php.net/xsl">
-
<xsl:call-template name="yui_phpgw_i18n"/>
<div class="identifier-header">
<h1><img src="{img_go_home}" />
<xsl:value-of select="php:function('lang', 'edit user')" />
</h1>
</div>
+ <div class="yui-navset yui-navset-top" id="edit_user_tabview">
+ <xsl:value-of disable-output-escaping="yes" select="tabs" />
+
+ <form action="#" method="post" name="form">
<div class="yui-content">
- <div id="details">
- <form action="#" method="post" name="form">
+ <div id="main">
+
<input type="hidden" name="id" value =
"{value_id}">
</input>
<table>
@@ -56,17 +59,159 @@
</td>
</tr>
</table>
+ </div>
+ <div id="groups">
+ <h2><xsl:value-of
select="php:function('lang', 'groups')" /></h2>
+ <ul class="group_list">
+
<xsl:apply-templates select="group_list" />
+ </ul>
+ </div>
+ <div id="apps">
+ <h2><xsl:value-of
select="php:function('lang', 'applications')" /></h2>
+ <table class="app_list">
+ <thead>
+ <tr>
+
<th>
+
<xsl:value-of select="php:function('lang', 'Application')" />
+
</th>
+
<th>
+
<xsl:value-of select="php:function('lang', 'User access')" />
+
</th>
+
<th>
+
<xsl:value-of select="php:function('lang', 'Admin')" />
+
</th>
+ </tr>
+ </thead>
+ <tbody>
+
<xsl:apply-templates select="app_list" />
+ </tbody>
+ </table>
+ </div>
+
+ </div>
<div class="form-buttons">
<xsl:variable
name="lang_save"><xsl:value-of select="php:function('lang', 'save')"
/></xsl:variable>
<xsl:variable
name="lang_cancel"><xsl:value-of select="php:function('lang', 'cancel')"
/></xsl:variable>
+ <xsl:variable
name="lang_delete"><xsl:value-of select="php:function('lang', 'delete')"
/></xsl:variable>
<input type="submit" name="save"
value="{$lang_save}" title = "{$lang_save}" />
+ <input type="submit" name="delete"
value="{$lang_delete}" title = "{$lang_delete}" />
<input type="submit" name="cancel"
value="{$lang_cancel}" title = "{$lang_cancel}" />
</div>
- </form>
- </div>
+
+ </form>
</div>
</xsl:template>
+<!-- BEGIN group_list -->
+ <xsl:template match="group_list">
+ <li>
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="position() mod 2 = 0">
+ <xsl:text>row_off</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>row_on</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <xsl:choose>
+ <xsl:when test="i_am_admin = 1">
+ <input type="checkbox"
id="account_groups{account_id}" name="account_groups[]" value="{account_id}">
+ <xsl:if test="checked = 1">
+ <xsl:attribute
name="checked" value="checked" />
+ </xsl:if>
+ </input>
+ </xsl:when>
+ <xsl:otherwise>
+ <input type="checkbox" readonly='true'>
+ <xsl:if test="checked = 1">
+ <xsl:attribute
name="checked" value="checked" />
+ </xsl:if>
+ </input>
+ <input type="hidden"
id="account_groups{account_id}" name="account_groups[]">
+ <xsl:if test="checked = 1">
+ <xsl:attribute
name="value">
+ <xsl:value-of
select="account_id"/>
+ </xsl:attribute>
+ </xsl:if>
+ </input>
+ </xsl:otherwise>
+ </xsl:choose>
+
+ <xsl:value-of select="account_lid"/>
+ </li>
+ </xsl:template>
+
+<!-- BEGIN app_list -->
+
+ <xsl:template match="app_list">
+ <tr>
+ <xsl:attribute name="class">
+ <xsl:choose>
+ <xsl:when test="position() mod 2 = 0">
+ <xsl:text>row_off</xsl:text>
+ </xsl:when>
+ <xsl:otherwise>
+ <xsl:text>row_on</xsl:text>
+ </xsl:otherwise>
+ </xsl:choose>
+ </xsl:attribute>
+ <td>
+ <xsl:value-of select="app_title"/>
+
+ </td>
+ <xsl:choose>
+ <xsl:when test="i_am_admin = 1">
+ <td>
+ <input type="checkbox"
id="{checkbox_name}" name="{checkbox_name}" value="1">
+ <xsl:if test="checked =
1">
+ <xsl:attribute
name="checked" value="checked" />
+ </xsl:if>
+ </input>
+ </td>
+ <td>
+ <input type="checkbox"
id="{checkbox_name_admin}" name="{checkbox_name_admin}" value="2">
+ <xsl:if
test="checked_admin = 1">
+ <xsl:attribute
name="checked" value="checked" />
+ </xsl:if>
+ </input>
+ </td>
+ </xsl:when>
+ <xsl:otherwise>
+ <td>
+ <input type="checkbox"
readonly='true'>
+ <xsl:if test="checked =
1">
+ <xsl:attribute
name="checked" value="checked" />
+ </xsl:if>
+ </input>
+ <input type="hidden"
id="{checkbox_name}" name="{checkbox_name}">
+ <xsl:if test="checked =
1">
+ <xsl:attribute
name="value">
+
<xsl:text>1</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ </input>
+ </td>
+ <td>
+ <input type="checkbox"
readonly='true'>
+ <xsl:if
test="checked_admin = 1">
+ <xsl:attribute
name="checked" value="checked" />
+ </xsl:if>
+ </input>
+ <input type="hidden"
id="{checkbox_name_admin}" name="{checkbox_name_admin}">
+ <xsl:if
test="checked_admin = 1">
+ <xsl:attribute
name="value">
+
<xsl:text>2</xsl:text>
+ </xsl:attribute>
+ </xsl:if>
+ </input>
+ </td>
+ </xsl:otherwise>
+ </xsl:choose>
+ </tr>
+ </xsl:template>
+
<xsl:template match="options">
<option value="{id}">
<xsl:if test="selected != 0">
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Fmsystem-commits] [9106] registration,
Sigurd Nes <=