Revize 697
Přidáno uživatelem Michal Kliment před asi 14 roky(ů)
freenetis/trunk/kohana/application/i18n/cs_CZ/texts.php | ||
---|---|---|
'ip addresses' => 'IP adresy',
|
||
'ip_address' => 'IP adresa',
|
||
'it can means that username/password/host are bad or host is unavailable' => 'To může znamenat, že uživatelské jméno/heslo/hostitel je špatné nebo je hostitel nedostupný.',
|
||
'it is not possible delete used template' => 'Není možné smazat použitou šablonu.',
|
||
'it is not possible vote about locked work' => 'Není možné hlasovat o zamčené práci.',
|
||
'it is possible to deduct fees only in one year' => 'Členské příspěvky je možné strhávat jen v rámci jednoho roku.',
|
||
'it\'s not possible to write your htacess file for clean urls' => 'Není možné zapsat váš soubor .htacess pro čistá URL.',
|
freenetis/trunk/kohana/application/models/aro_group.php | ||
---|---|---|
{
|
||
return self::$db->query('SELECT id, name, lft, parent_id, rgt, value FROM aro_groups ORDER BY lft');
|
||
}
|
||
|
||
public function get_aro_groups_by_fk_id($fk_id, $type)
|
||
{
|
||
return self::$db->query('SELECT a.* FROM votes v
|
||
LEFT JOIN aro_groups a ON v.aro_group_id = a.id
|
||
WHERE v.fk_id = '.$fk_id.' AND v.type = '.$type.'
|
||
GROUP BY v.aro_group_id
|
||
ORDER BY v.priority');
|
||
}
|
||
}
|
||
|
||
?>
|
freenetis/trunk/kohana/application/models/approval_template.php | ||
---|---|---|
|
||
class Approval_template_Model extends ORM
|
||
{
|
||
protected $has_many = array('approval_template_items');
|
||
protected $has_many = array('approval_template_items', 'jobs');
|
||
|
||
/**
|
||
* @author Michal Kliment
|
freenetis/trunk/kohana/application/models/job.php | ||
---|---|---|
<?php
|
||
class Job_Model extends ORM {
|
||
protected $belongs_to = array('user','confirmed_by' => 'user');
|
||
protected $belongs_to = array('user', 'approval_template');
|
||
|
||
/**
|
||
* @author Michal Kliment
|
||
... | ... | |
|
||
public function get_all_pending_works($limit_from = 0, $limit_results = 50, $order_by = 'id', $order_by_direction = 'ASC', $filter_values = array())
|
||
{
|
||
return self::$db->query('SELECT j.id, j.job_report_id, r.description AS work_report, j.approval_template_id, j.user_id, CONCAT( u.name, \' \', u.surname ) AS uname, j.description, j.date, j.hours, j.km, j.suggest_amount, v.vote, v.comment
|
||
return self::$db->query('SELECT j.*, CONCAT(u.name, \' \', u.surname) AS uname, v.vote, v.comment
|
||
FROM jobs j
|
||
LEFT JOIN users u ON j.user_id = u.id
|
||
LEFT JOIN job_reports r ON j.job_report_id = r.id
|
||
LEFT JOIN transfers t ON j.transfer_id = t.id
|
||
LEFT JOIN votes v ON j.id = v.fk_id AND v.type =1 AND v.user_id = '.Session::instance()->get('user_id').'
|
||
WHERE j.state <= 1 AND j.job_report_id IS NULL
|
||
ORDER BY '.$order_by.' '.$order_by_direction.' LIMIT '.$limit_from.', '.$limit_results);
|
||
... | ... | |
public function count_all_approved_works($filter_values = array())
|
||
{
|
||
$works = self::$db->query('SELECT * FROM jobs j WHERE j.state = 3 AND j.job_report_id IS NULL');
|
||
|
||
return count($works);
|
||
}
|
||
|
||
public function count_all_rejected_works($filter_values = array())
|
||
{
|
||
$works = self::$db->query('SELECT * FROM jobs j WHERE j.state = 2 AND j.job_report_id IS NULL');
|
||
|
||
return count($works);
|
||
}
|
||
|
||
public function count_all_pending_works($filter_values = array())
|
||
{
|
||
$works = self::$db->query('SELECT j.* FROM jobs j
|
||
WHERE j.state <= 1 AND j.job_report_id IS NULL');
|
||
|
||
$works = self::$db->query('SELECT j.* FROM jobs j WHERE j.state <= 1 AND j.job_report_id IS NULL');
|
||
return count($works);
|
||
}
|
||
|
||
public function get_all_pending_works_by_user($user_id)
|
||
{
|
||
return self::$db->query('SELECT j.id, j.user_id, j.job_report_id, r.description AS work_report, j.description, j.date, j.hours, j.km, j.suggest_amount, v.vote, v.comment
|
||
return self::$db->query('SELECT j.*, CONCAT(u.name, \' \', u.surname) AS uname, v.vote, v.comment
|
||
FROM jobs j
|
||
LEFT JOIN job_reports r ON j.job_report_id = r.id
|
||
LEFT JOIN transfers t ON j.transfer_id = t.id
|
||
LEFT JOIN users u ON j.user_id = u.id
|
||
LEFT JOIN votes v ON j.id = v.fk_id AND v.type =1 AND v.user_id = '.Session::instance()->get('user_id').'
|
||
WHERE j.locked = 0 AND j.job_report_id IS NULL AND j.user_id = '.$user_id);
|
||
WHERE j.state <= 1 AND j.job_report_id IS NULL AND j.user_id = '.$user_id);
|
||
}
|
||
|
||
public function get_all_approved_works_by_user ($user_id)
|
||
{
|
||
return self::$db->query('SELECT q.id, q.job_report_id, r.description as work_report, q.description, q.date, q.hours, q.km, q.transfer_id, t.amount as rating
|
||
FROM (SELECT j.*, SUM(v.vote) AS sum, COUNT(v.vote) AS count FROM jobs j
|
||
LEFT JOIN votes v ON j.id = v.fk_id AND v.type = 1
|
||
WHERE j.locked > 0
|
||
GROUP BY j.id) as q
|
||
LEFT JOIN job_reports r ON q.job_report_id = r.id
|
||
LEFT JOIN transfers t ON q.transfer_id = t.id
|
||
WHERE q.sum > 0 AND q.job_report_id IS NULL AND q.user_id = '.$user_id);
|
||
return self::$db->query('SELECT j.*, t.amount as rating
|
||
FROM jobs j
|
||
LEFT JOIN transfers t ON j.transfer_id = t.id
|
||
WHERE j.state = 3 AND j.job_report_id IS NULL AND j.user_id = '.$user_id);
|
||
}
|
||
|
||
public function get_all_rejected_works_by_user ($user_id)
|
||
{
|
||
return self::$db->query('SELECT q.id, q.job_report_id, r.description as work_report, q.description, q.date, q.hours, q.km, q.suggest_amount
|
||
FROM (SELECT j.*, SUM(v.vote) AS sum, COUNT(v.vote) AS count FROM jobs j
|
||
LEFT JOIN votes v ON j.id = v.fk_id AND v.type = 1
|
||
WHERE j.locked > 0
|
||
GROUP BY j.id) as q
|
||
LEFT JOIN job_reports r ON q.job_report_id = r.id
|
||
LEFT JOIN transfers t ON q.transfer_id = t.id
|
||
WHERE q.sum <= 0 AND q.job_report_id IS NULL AND q.user_id = '.$user_id);
|
||
return self::$db->query('SELECT j.*
|
||
FROM jobs j
|
||
WHERE j.state = 2 AND j.job_report_id IS NULL AND j.user_id = '.$user_id);
|
||
}
|
||
|
||
public function get_all_works_by_job_report_id ($job_report_id)
|
freenetis/trunk/kohana/application/controllers/approval_templates.php | ||
---|---|---|
|
||
/**
|
||
* @author Michal Kliment
|
||
* Function to delete approval template (it have to empthy - without any items)
|
||
* Function to delete approval template (it have to be empthy - without any items)
|
||
* @param number $approval_template_id
|
||
*/
|
||
public function delete($approval_template_id = NULL)
|
||
... | ... | |
}
|
||
else
|
||
{
|
||
// template is empthy - delete it
|
||
$approval_template->delete();
|
||
$this->session->set_flash('message', url_lang::lang('texts.Approval template has been successfully deleted.'));
|
||
url::redirect(url_lang::base().'approval_templates/show_all');
|
||
$work_model = new Job_Model();
|
||
$works = $work_model->where('approval_template_id', $approval_template->id)->find_all();
|
||
|
||
if (count($works))
|
||
{
|
||
$this->session->set_flash('message', url_lang::lang('texts.It is not possible delete used template.'));
|
||
url::redirect(url_lang::base().'approval_templates/show/'.$approval_template->id);
|
||
}
|
||
else
|
||
{
|
||
// template is empthy - delete it
|
||
$approval_template->delete();
|
||
$this->session->set_flash('message', url_lang::lang('texts.Approval template has been successfully deleted.'));
|
||
url::redirect(url_lang::base().'approval_templates/show_all');
|
||
}
|
||
}
|
||
}
|
||
|
freenetis/trunk/kohana/application/controllers/works.php | ||
---|---|---|
{
|
||
protected $user_id = false;
|
||
|
||
function index()
|
||
public function index()
|
||
{
|
||
url::redirect(url_lang::base().'works/pending');
|
||
}
|
||
... | ... | |
* @param string $page_word
|
||
* @param number $page
|
||
*/
|
||
function pending($limit_results = 100, $order_by = 'id', $order_by_direction = 'ASC', $page_word = null, $page = 1)
|
||
public function pending($limit_results = 100, $order_by = 'id', $order_by_direction = 'ASC', $page_word = null, $page = 1)
|
||
{
|
||
// acccess control
|
||
if (!$this->acl_check_view('Users_Controller','work'))
|
||
... | ... | |
}
|
||
|
||
$work->state = Votes_Controller::get_state($work, Vote_Model::$work);
|
||
|
||
// work is approved
|
||
if ($work->state == 3)
|
||
{
|
||
// creates new transfer
|
||
$account_model = new Account_Model();
|
||
$transfer = new Transfer_Model();
|
||
|
||
// finding of operating account
|
||
$operating_account = $account_model->where('account_attribute_id', Account_attribute_Model::$operating)->find();
|
||
$transfer->origin_id = $operating_account->id;
|
||
|
||
// findind of account of member
|
||
$member_account = $account_model->where('member_id', $work->user->member_id)->where('account_attribute_id', Account_attribute_Model::$credit)->find();
|
||
$transfer->destination_id = $member_account->id;
|
||
|
||
$transfer->datetime = date('Y-m-d');
|
||
$transfer->creation_datetime = date('Y-m-d H:i:s');
|
||
$transfer->text = url_lang::lang('texts.Work approval');
|
||
$transfer->amount = $work->suggest_amount;
|
||
$transfer->user_id = $this->session->get('user_id');
|
||
$transfer->save();
|
||
|
||
$work->transfer_id = $transfer->id;
|
||
}
|
||
|
||
$work->save();
|
||
|
||
$this->session->set_flash('message', url_lang::lang('texts.Votes has been successfully updated.'));
|
||
... | ... | |
* @param string Unused variable
|
||
* @param number Number of page
|
||
*/
|
||
function approved($limit_results = 100, $order_by = 'id', $order_by_direction = 'ASC', $page_word = null, $page = 1)
|
||
public function approved($limit_results = 100, $order_by = 'id', $order_by_direction = 'ASC', $page_word = null, $page = 1)
|
||
{
|
||
// acccess control
|
||
if (!$this->acl_check_view('Users_Controller','work'))
|
||
... | ... | |
$view->render(TRUE);
|
||
}
|
||
|
||
|
||
function rejected($limit_results = 100, $order_by = 'id', $order_by_direction = 'ASC', $page_word = null, $page = 1)
|
||
/**
|
||
* @author Michal Kliment
|
||
* Function to show all rejected works
|
||
* @param number $limit_results
|
||
* @param string $order_by
|
||
* @param string $order_by_direction
|
||
* @param string $page_word
|
||
* @param number $page
|
||
*/
|
||
public function rejected($limit_results = 100, $order_by = 'id', $order_by_direction = 'ASC', $page_word = null, $page = 1)
|
||
{
|
||
// acccess control
|
||
if (!$this->acl_check_view('Users_Controller','work'))
|
||
... | ... | |
$view->render(TRUE);
|
||
}
|
||
|
||
function show_by_user ($user_id = NULL)
|
||
/**
|
||
* @author Michal Kliment
|
||
* Function to show all works of user
|
||
* @param number $user_id
|
||
*/
|
||
public function show_by_user ($user_id = NULL)
|
||
{
|
||
if (!$user_id || !is_numeric ($user_id))
|
||
Controller::warning (PARAMETER);
|
||
... | ... | |
if (!$this->acl_check_view('Users_Controller', 'work', $user->member_id))
|
||
Controller::error(ACCESS);
|
||
|
||
$job_model = new Job_Model();
|
||
$work_model = new Job_Model();
|
||
|
||
$pending_works = $job_model->get_all_pending_works_by_user($user->id);
|
||
$pending_works = $work_model->get_all_pending_works_by_user($user->id);
|
||
|
||
$total_pending = array();
|
||
$total_pending['hours'] = 0;
|
||
... | ... | |
$pending_works_grid->field('km')->label(url_lang::lang('texts.Km'));
|
||
$pending_works_grid->callback_field('suggest_amount')->label(url_lang::lang('texts.Suggest amount'))->callback('Works_Controller::suggest_amount');
|
||
|
||
if ($this->acl_check_new('Votes_Controller', 'work', $this->session->get('member_id')))
|
||
{
|
||
$pending_works_grid->form_field('vote')->label(url_lang::lang('texts.Vote'))->type('dropdown')->options(array(NULL => '--------', 1 => url_lang::lang('texts.Agree'), -1 => url_lang::lang('texts.Disagree'), 0 => url_lang::lang('texts.Abstain')))->callback('Works_Controller::vote_form_field');
|
||
$pending_works_grid->form_field('comment')->label(url_lang::lang('texts.Comment'))->type('textarea');
|
||
}
|
||
$pending_works_grid->form_field('vote')->label(url_lang::lang('texts.Vote'))->type('dropdown')->options(array(NULL => '--------', 1 => url_lang::lang('texts.Agree'), -1 => url_lang::lang('texts.Disagree'), 0 => url_lang::lang('texts.Abstain')))->callback('Works_Controller::vote_form_field');
|
||
$pending_works_grid->form_field('comment')->label(url_lang::lang('texts.Comment'))->type('textarea');
|
||
|
||
// access control
|
||
if ($this->acl_check_view('Users_Controller','work'))
|
||
... | ... | |
|
||
$pending_works_grid->datasource($pending_works);
|
||
|
||
$approved_works = $job_model->get_all_approved_works_by_user($user->id);
|
||
$approved_works = $work_model->get_all_approved_works_by_user($user->id);
|
||
|
||
$total_approved = array();
|
||
$total_approved['hours'] = 0;
|
||
... | ... | |
|
||
$approved_works_grid->datasource($approved_works);
|
||
|
||
$rejected_works = $job_model->get_all_rejected_works_by_user($user->id);
|
||
$rejected_works = $work_model->get_all_rejected_works_by_user($user->id);
|
||
|
||
$total_rejected = array();
|
||
$total_rejected['hours'] = 0;
|
||
... | ... | |
|
||
$rejected_works_grid->datasource($rejected_works);
|
||
|
||
|
||
|
||
|
||
if (isset ($_POST) && count ($_POST))
|
||
{
|
||
$vote_model = new Vote_Model();
|
||
... | ... | |
|
||
foreach ($post_votes as $id => $post_vote)
|
||
{
|
||
$vote = $vote_model->where('user_id',$this->session->get('user_id'))->where('fk_id', $id)->where('type',Vote_Model::$work)->find();
|
||
$work = $work_model->where('id',$id)->find();
|
||
|
||
if (!$vote->id && $post_vote=="")
|
||
continue;
|
||
$approval_template_item_model = new Approval_template_item_Model();
|
||
$aro_group = $approval_template_item_model->get_aro_group_by_approval_template_id_and_user_id($work->approval_template_id, $this->session->get('user_id'), $work->suggest_amount);
|
||
|
||
if ($vote->id && $post_vote=="")
|
||
if ($aro_group && $aro_group->id)
|
||
{
|
||
$vote->delete();
|
||
continue;
|
||
}
|
||
$vote = $vote_model->where('user_id',$this->session->get('user_id'))->where('fk_id', $id)->where('type',Vote_Model::$work)->find();
|
||
|
||
if ($vote->id && $post_vote!="")
|
||
{
|
||
$vote->vote = $post_vote;
|
||
$vote->comment = $comments[$id];
|
||
$vote->save();
|
||
continue;
|
||
}
|
||
if ($vote->id && $post_vote=="")
|
||
{
|
||
$vote->delete();
|
||
}
|
||
else if ($vote->id && $post_vote!="")
|
||
{
|
||
$vote->vote = $post_vote;
|
||
$vote->comment = $comments[$id];
|
||
$vote->save();
|
||
}
|
||
else if (!$vote->id)
|
||
{
|
||
$vote->clear();
|
||
$vote->user_id = $this->session->get('user_id');
|
||
$vote->fk_id = $id;
|
||
$vote->aro_group_id = $aro_group->id;
|
||
$vote->type = Vote_Model::$work;
|
||
$vote->vote = $post_vote;
|
||
$vote->comment = $comments[$id];
|
||
$vote->save();
|
||
}
|
||
|
||
if (!$vote->id)
|
||
{
|
||
$vote->clear();
|
||
$vote->user_id = $this->session->get('user_id');
|
||
$vote->fk_id = $id;
|
||
$vote->type = Vote_Model::$work;
|
||
$vote->vote = $post_vote;
|
||
$vote->comment = $comments[$id];
|
||
$vote->save();
|
||
$work->state = Votes_Controller::get_state($work, Vote_Model::$work);
|
||
|
||
// work is approved
|
||
if ($work->state == 3)
|
||
{
|
||
// creates new transfer
|
||
$account_model = new Account_Model();
|
||
$transfer = new Transfer_Model();
|
||
|
||
// finding of operating account
|
||
$operating_account = $account_model->where('account_attribute_id', Account_attribute_Model::$operating)->find();
|
||
$transfer->origin_id = $operating_account->id;
|
||
|
||
// findind of account of member
|
||
$member_account = $account_model->where('member_id', $work->user->member_id)->where('account_attribute_id', Account_attribute_Model::$credit)->find();
|
||
$transfer->destination_id = $member_account->id;
|
||
|
||
$transfer->datetime = date('Y-m-d');
|
||
$transfer->creation_datetime = date('Y-m-d H:i:s');
|
||
$transfer->text = url_lang::lang('texts.Work approval');
|
||
$transfer->amount = $work->suggest_amount;
|
||
$transfer->user_id = $this->session->get('user_id');
|
||
$transfer->save();
|
||
|
||
$work->transfer_id = $transfer->id;
|
||
}
|
||
|
||
$work->save();
|
||
|
||
$this->session->set_flash('message', url_lang::lang('texts.Votes has been successfully updated.'));
|
||
}
|
||
}
|
||
url::redirect(url::base().url::current(TRUE));
|
||
}
|
||
|
||
|
||
$view = new View('main');
|
||
$view->title = url_lang::lang('texts.List of works of user').' '.$user->name.' '.$user->surname;
|
||
$view->content = new View('works_show_by_user');
|
||
... | ... | |
$view->content->total_rejected = $total_rejected;
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
|
||
/**
|
||
* @author Michal Kliment
|
||
* Function to show work
|
||
* Function to show work (by private functions show_opened and show_closed)
|
||
* @param number $work_id
|
||
*/
|
||
function show($work_id = NULL)
|
||
public function show($work_id = NULL)
|
||
{
|
||
// bad parameter
|
||
if (!$work_id || !is_numeric($work_id))
|
||
... | ... | |
if (!$this->acl_check_view('Users_Controller','work',$work->user->member_id))
|
||
Controller::error(ACCESS);
|
||
|
||
$transfer = new Transfer_Model($work->transfer_id);
|
||
if ($work->state <= 1)
|
||
// work is opened
|
||
$this->show_opened ($work);
|
||
else
|
||
// work is closed
|
||
$this->show_closed ($work);
|
||
}
|
||
|
||
/**
|
||
* @author Michal Kliment
|
||
* Private function to show opened work
|
||
* @param object $work
|
||
*/
|
||
private function show_opened($work = NULL)
|
||
{
|
||
// bad parameter
|
||
if (!$work)
|
||
Controller::warning(PARAMETER);
|
||
|
||
$approval_template_item_model = new Approval_template_item_Model();
|
||
$aro_groups = $approval_template_item_model->get_aro_groups_by_approval_template_id($work->approval_template_id, $work->suggest_amount);
|
||
|
||
... | ... | |
$vote_grids[$i]->callback_field('user_id')->label(url_lang::lang('texts.User'))->callback('Works_Controller::user_name');
|
||
$vote_grids[$i]->callback_field('vote')->label(url_lang::lang('texts.Vote'))->callback('Works_Controller::vote');
|
||
$vote_grids[$i]->callback_field('comment')->label(url_lang::lang('texts.Comment'))->callback('Works_Controller::comment_field');
|
||
$vote_grids[$i]->callback_field('id')->label(url_lang::lang('texts.Edit'))->callback('Works_Controller::edit_field');
|
||
$vote_grids[$i]->callback_field('id')->label(url_lang::lang('texts.Delete'))->callback('Works_Controller::delete_field');
|
||
|
||
$vote_grids[$i]->datasource($votes);
|
||
|
||
$percents[$i] = ($total_votes[$i]) ? round($agrees[$i] / $total_votes[$i] * 100, 1) : 0;
|
||
$i++;
|
||
}
|
||
|
||
$links = array();
|
||
|
||
$state_text = url_lang::lang('texts.Pending');
|
||
|
||
if (!$work->job_report_id)
|
||
{
|
||
$links[] = html::anchor(url_lang::base().'works/pending', url_lang::lang('texts.of all pending works'));
|
||
$links[] = html::anchor(url_lang::base().'works/show_by_user/'.$work->user_id, url_lang::lang('texts.of all users works'));
|
||
if ($this->acl_check_edit('Users_Controller','work',$work->user->member_id) && $work->state == 0)
|
||
$links[] = html::anchor(url_lang::base().'works/edit/'.$work->id,url_lang::lang('texts.Edit'));
|
||
$links = url_lang::lang('texts.Back to list').': '.implode(" | ", $links);
|
||
}
|
||
else
|
||
{
|
||
$links = html::anchor(url_lang::base().'work_reports/show/'.$work->job_report_id, url_lang::lang('texts.Back to the work report'));
|
||
}
|
||
|
||
$view = new View('main');
|
||
$view->title = url_lang::lang('texts.Show work');
|
||
$view->content = new View('works_show');
|
||
$view->content->work = $work;
|
||
$view->content->links = $links;
|
||
$view->content->vote_groups = $vote_groups;
|
||
$view->content->vote_grids = $vote_grids;
|
||
$view->content->total_votes = $total_votes;
|
||
$view->content->agrees = $agrees;
|
||
$view->content->sums = $sums;
|
||
$view->content->state_text = $state_text;
|
||
$view->content->percents = $percents;
|
||
$view->render(TRUE);
|
||
}
|
||
|
||
/**
|
||
* @author Michal Kliment
|
||
* Private function to show closed work
|
||
* @param object $work
|
||
*/
|
||
private function show_closed($work = NULL)
|
||
{
|
||
// bad parameter
|
||
if (!$work)
|
||
Controller::warning(PARAMETER);
|
||
|
||
$transfer = new Transfer_Model($work->transfer_id);
|
||
|
||
$vote_model = new Vote_Model();
|
||
|
||
$aro_group_model = new Aro_group_Model();
|
||
$aro_groups = $aro_group_model->get_aro_groups_by_fk_id($work->id, Vote_Model::$work);
|
||
|
||
//$user_aro_group = $approval_template_item_model->get_aro_group_by_approval_template_id_and_user_id($work->approval_template_id, $this->session->get('user_id'), $work->suggest_amount);
|
||
|
||
$i = 0;
|
||
$vote_groups = array();
|
||
$vote_grids = array();
|
||
$total_votes = array();
|
||
$sums = array();
|
||
$agrees = array();
|
||
$percents = array();
|
||
//$user_vote = NULL;
|
||
|
||
foreach ($aro_groups as $aro_group)
|
||
{
|
||
$vote_groups[$i] = $aro_group->name;
|
||
|
||
$votes = $vote_model->select('votes.id', 'votes.user_id', 'CONCAT(users.name,\' \',users.surname) as uname', 'vote', 'votes.comment')->join('users','users.id = votes.user_id')->where('votes.type',Vote_Model::$work)->where('fk_id',$work->id)->where('aro_group_id', $aro_group->id)->find_all();
|
||
|
||
$total_votes[$i] = count($votes);
|
||
$sums[$i] = 0;
|
||
$agrees[$i] = 0;
|
||
|
||
foreach ($votes as $vote)
|
||
{
|
||
$sums[$i] += $vote->vote;
|
||
|
||
if ($vote->vote == 0)
|
||
{
|
||
$total_votes[$i]--;
|
||
continue;
|
||
}
|
||
|
||
if ($vote->vote == 1)
|
||
{
|
||
$agrees[$i]++;
|
||
continue;
|
||
}
|
||
}
|
||
|
||
// create grid
|
||
$vote_grids[$i] = new Grid(url_lang::base().'works/show/'.$work->id, '', array(
|
||
//'separator' => '',
|
||
'use_paginator' => false,
|
||
'use_selector' => false,
|
||
'selector_increace' => 200, // increace
|
||
'selector_min' => 200,// minimum where selector start
|
||
'selector_max_multiplier' => 10,
|
||
'uri_segment' => 'page', // pass a string as uri_segment to trigger former 'label' functionality
|
||
'style' => 'classic',
|
||
));
|
||
|
||
$vote_grids[$i]->field('id')->label('ID');
|
||
$vote_grids[$i]->callback_field('user_id')->label(url_lang::lang('texts.User'))->callback('Works_Controller::user_name');
|
||
$vote_grids[$i]->callback_field('vote')->label(url_lang::lang('texts.Vote'))->callback('Works_Controller::vote');
|
||
$vote_grids[$i]->callback_field('comment')->label(url_lang::lang('texts.Comment'))->callback('Works_Controller::comment_field');
|
||
|
||
if ($work->state < 2)
|
||
{
|
||
$vote_grids[$i]->callback_field('id')->label(url_lang::lang('texts.Edit'))->callback('Works_Controller::edit_field');
|
||
... | ... | |
|
||
switch ($work->state)
|
||
{
|
||
case 0:
|
||
case 1:
|
||
|
||
$state_text = url_lang::lang('texts.Pending');
|
||
|
||
if (!$work->job_report_id)
|
||
$links[] = html::anchor(url_lang::base().'works/pending', url_lang::lang('texts.of all pending works'));
|
||
|
||
break;
|
||
case 2:
|
||
|
||
foreach ($sums as $i => $sum)
|
||
... | ... | |
Controller::error(ACCESS);
|
||
$user_model = new User_Model();
|
||
$users = $user_model->select('id','name','surname','login')->orderby('id')->find_all();
|
||
$arr_users[0] = '----- '.url_lang::lang('texts.select user').' -----';
|
||
$selected = 0;
|
||
$selected = NULL;
|
||
foreach ($users as $user)
|
||
{
|
||
$arr_users[$user->id] = $user->surname.' '.$user->name.' - '.$user->login;
|
||
}
|
||
asort($arr_users, SORT_LOCALE_STRING);
|
||
$arr_users = arr::merge(array(NULL => '----- '.url_lang::lang('texts.select user').' -----'), $arr_users);
|
||
}
|
||
|
||
// form
|
||
$form = new Forge(url_lang::base().'works/add'.(isset($user_id)?'/'.$user_id:''), '', 'POST', array('id' => 'article_form'));
|
||
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
if ($this->acl_check_view('approval','templates'))
|
||
{
|
||
$approval_template_model = new Approval_template_Model();
|
||
$approval_templates = $approval_template_model->find_all();
|
||
|
||
$form->group('')->label(url_lang::lang('texts.Basic information'));
|
||
$form->dropdown('user_id')->label(url_lang::lang('texts.User'))->options($arr_users)->rules('required')->selected($selected);
|
||
$form->textarea('description')->label(url_lang::lang('texts.Description').':')->rules('required|length[0,65535]');
|
||
$form->date('date')->label(url_lang::lang('texts.Date').':')->years(date('Y')-10, date('Y'))->rules('required');
|
||
$form->input('hours')->label(url_lang::lang('texts.Hours').':')->rules('required|length[0,250]|valid_numeric');
|
||
$form->input('km')->label(url_lang::lang('texts.Km').':')->rules('length[0,250]|valid_numeric');
|
||
$form->input('suggest_amount')->label(url_lang::lang('texts.Suggest amount').':')->rules('required|valid_numeric');
|
||
// transforms array of objects to classic array
|
||
$arr_approval_templates = arr::from_objects($approval_templates);
|
||
$arr_approval_templates = arr::merge(array(NULL => '----- '.url_lang::lang('texts.select approval template').' -----'),$arr_approval_templates);
|
||
}
|
||
|
||
$form->submit('submit')->value(url_lang::lang('texts.Save'));
|
||
special::required_forge_style($form, ' *', 'required');
|
||
// form
|
||
$form = new Forge(url_lang::base().'works/add'.(isset($user_id)?'/'.$user_id:''), '', 'POST', array('id' => 'article_form'));
|
||
$form->set_attr('class', 'form_class')->set_attr('method', 'post');
|
||
|
||
$form->group('')->label(url_lang::lang('texts.Basic information'));
|
||
$form->dropdown('user_id')->label(url_lang::lang('texts.User').':')->options($arr_users)->rules('required')->selected($selected);
|
||
$form->textarea('description')->label(url_lang::lang('texts.Description').':')->rules('required|length[0,65535]');
|
||
$form->date('date')->label(url_lang::lang('texts.Date').':')->years(date('Y')-10, date('Y'))->rules('required');
|
||
$form->input('hours')->label(url_lang::lang('texts.Hours').':')->rules('required|length[0,250]|valid_numeric');
|
||
$form->input('km')->label(url_lang::lang('texts.Km').':')->rules('length[0,250]|valid_numeric');
|
||
$form->input('suggest_amount')->label(url_lang::lang('texts.Suggest amount').':')->rules('required|valid_numeric');
|
||
|
||
if ($this->acl_check_view('approval','templates'))
|
||
{
|
||
$form->group('')->label(url_lang::lang('texts.Advanced information'));
|
||
$form->dropdown('approval_template_id')->label(url_lang::lang('texts.Approval template'))->options($arr_approval_templates)->selected($this->settings->get('default_work_approval_template'));
|
||
}
|
||
|
||
$form->submit('submit')->value(url_lang::lang('texts.Save'));
|
||
special::required_forge_style($form, ' *', 'required');
|
||
|
||
if (isset($user_id))
|
||
{
|
||
$link_back = url_lang::base().'works/show_by_user/'.$user_id;
|
||
... | ... | |
$work->km = $form_data['km'];
|
||
$work->locked = 0;
|
||
|
||
if (isset($form_data['approval_template_id']) && $form_data['approval_template_id'])
|
||
$work->approval_template_id = $form_data['approval_template_id'];
|
||
else
|
||
$work->approval_template_id = $this->settings->get('default_work_approval_template');
|
||
|
||
// success
|
||
if ($work->save())
|
||
{
|
||
... | ... | |
|
||
if (isset($id))
|
||
{
|
||
$job_model = new Job_Model($id);
|
||
$user_id=$job_model->user_id;
|
||
$job_model->delete($id);
|
||
if ($job_model->save())
|
||
$work_model = new Job_Model($id);
|
||
$user_id=$work_model->user_id;
|
||
$work_model->delete($id);
|
||
if ($work_model->save())
|
||
{
|
||
$this->session->set_flash('message', url_lang::lang('texts.Work has been successfully deleted').'.');
|
||
url::redirect(url_lang::base().'works/show_by_user/'.$user_id);
|
||
... | ... | |
if ($approval_template_item_model->check_user_vote_rights($item->approval_template_id, Session::instance()->get('user_id'), $item->suggest_amount))
|
||
{
|
||
if (Session::instance()->get('user_id') == $item->user_id)
|
||
$input->options(array(0 => url_lang::lang('texts.Abstain')));
|
||
$input->options(array(NULL => '--------', 0 => url_lang::lang('texts.Abstain')));
|
||
echo $input->html();
|
||
}
|
||
}
|
Také k dispozici: Unified diff
Dodelany zobrazeni praci uzivatele. Funkce pro zobrazeni prace rozdelena do dvou - pro zobrazeni praci s otevrenym hlasovanim a pro zobrazeni praci s uzavrenym hlasovanim.