123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753 |
- <?php
- /**
- * Capabilities directory base class
- */
- class CapabilitiesDirectory {
- /**
- * Contains all available capabilities list as id=>data
- *
- * @var array
- */
- protected $allcapab = array();
- /**
- * Contains array of available capabilities states as id=>data
- *
- * @var array
- */
- protected $capabstates = array();
- /**
- * Contains array of all employee
- *
- * @var array
- */
- protected $employees = array();
- /**
- * Contains array of available capabs ids
- *
- * @var array
- */
- protected $availids = array();
- /**
- * Contains array of capabilities history
- *
- * @var array
- */
- protected $history = array();
- /**
- * System telepathy object placeholder
- *
- * @var object
- */
- protected $telepathy = '';
- const NO_ID = 'NO_SUCH_CAPABILITY_ID';
- const URL_CREATE = '?module=capabilities';
- const URL_ME = '?module=capabilities';
- const URL_CAPAB = '&edit=';
- /**
- * @param bool $noloaders Do not protess load subroutines at object creation
- *
- * @return void
- */
- public function __construct($noloaders = false) {
- if (!$noloaders) {
- //load existing capabilities
- $this->loadCapabilities();
- //load they ids
- $this->loadAllIds();
- //load existing states
- $this->loadCapabStates();
- //loads capabs history
- $this->loadHistory();
- //load employees
- $this->loadEmployees();
- //init telepathy
- $this->initTelepathy();
- }
- }
- /**
- * stores all available capab ids into protected prop - used in pagination
- *
- * @return void
- */
- protected function loadAllIds() {
- $query = "SELECT `id` from `capab`";
- $all = simple_queryall($query);
- if (!empty($all)) {
- foreach ($all as $io => $each) {
- $this->availids[$each['id']] = $each['id'];
- }
- }
- }
- /**
- * Loads capabs history into protected prop
- *
- * @return void
- */
- protected function loadHistory() {
- $query = "SELECT * from `capabhist` ORDER BY `id` ASC";
- $all = simple_queryall($query);
- if (!empty($all)) {
- foreach ($all as $io => $each) {
- $this->history[$each['capabid']][] = $each;
- }
- }
- }
- /**
- * Returns capab created admin login
- *
- * @param int $capabId
- *
- * @return void/string
- */
- protected function getHistoryCreated($capabId) {
- $result = '';
- if (!empty($this->history)) {
- if (isset($this->history[$capabId])) {
- $capabHist = $this->history[$capabId];
- if (!empty($capabHist)) {
- foreach ($capabHist as $io => $each) {
- if ($each['type'] == 'create') {
- $result = $each['admin'];
- }
- }
- }
- }
- }
- return ($result);
- }
- /**
- * Inits system telepathy object
- *
- * @return void
- */
- protected function initTelepathy() {
- $this->telepathy = new Telepathy(false, true);
- }
- /**
- * loads all of available capabilities as protected prop allcapab
- *
- * @return void
- */
- protected function loadCapabilities() {
- $query = "SELECT * from `capab`;";
- $all = simple_queryall($query);
- if (!empty($all)) {
- foreach ($all as $io => $each) {
- $this->allcapab[$each['id']]['id'] = $each['id'];
- $this->allcapab[$each['id']]['date'] = $each['date'];
- $this->allcapab[$each['id']]['address'] = $each['address'];
- $this->allcapab[$each['id']]['phone'] = $each['phone'];
- $this->allcapab[$each['id']]['stateid'] = $each['stateid'];
- $this->allcapab[$each['id']]['notes'] = $each['notes'];
- $this->allcapab[$each['id']]['price'] = $each['price'];
- $this->allcapab[$each['id']]['employeeid'] = $each['employeeid'];
- $this->allcapab[$each['id']]['donedate'] = $each['donedate'];
- }
- }
- }
- /**
- * loads available capability states into protected prop capabstates
- *
- * @return void
- */
- protected function loadCapabStates() {
- $query = "SELECT * from `capabstates`";
- $all = simple_queryall($query);
- $this->capabstates[0]['id'] = 0;
- $this->capabstates[0]['state'] = __('Was not processed');
- $this->capabstates[0]['color'] = 'FF0000';
- if (!empty($all)) {
- foreach ($all as $io => $each) {
- $this->capabstates[$each['id']]['id'] = $each['id'];
- $this->capabstates[$each['id']]['state'] = $each['state'];
- $this->capabstates[$each['id']]['color'] = $each['color'];
- }
- }
- }
- /**
- * Loads all existing employees into protected employees prop
- *
- * @return void
- */
- protected function loadEmployees() {
- $query = "SELECT * from `employee`";
- $all = simple_queryall($query);
- if (!empty($all)) {
- foreach ($all as $io => $each) {
- $this->employees[$each['id']]['id'] = $each['id'];
- $this->employees[$each['id']]['name'] = $each['name'];
- $this->employees[$each['id']]['active'] = $each['active'];
- }
- }
- }
- /**
- * Renders base capabilities list
- *
- * @return type
- */
- public function render() {
- global $ubillingConfig;
- $dateSort = ($ubillingConfig->getAlterParam('CAPABDIR_DATE_SORT')) ? true : false;
- $result = '';
- $columns = array(__('Admin'), __('Date'), __('Address'), __('Phone'), __('Status'), __('Notes'), __('Price'), __('Employee'), __('Changed'), __('Actions'));
- $result = $this->panel();
- $opts = '"order": [[ 4, "asc" ]]';
- if ($dateSort) {
- $opts = '"order": [[ 1, "desc" ]]';
- }
- $result .= wf_JqDtLoader($columns, self::URL_ME . '&ajlist=true', false, __('Objects'), 100, $opts);
- return ($result);
- }
- /**
- * Returns all capabs states color styles
- *
- * @return string
- */
- protected function getColorStyles() {
- $result = wf_tag('style', false);
- if (!empty($this->capabstates)) {
- foreach ($this->capabstates as $io => $each) {
- $customColorStyleName = 'capabcolorcustom_' . $io;
- $result .= '.' . $customColorStyleName . ',
- .' . $customColorStyleName . ' div,
- .' . $customColorStyleName . ' span {
- background-color: #' . $each['color'] . ';
- border-color: #' . $each['color'] . ';
- color: #FFFFFF;
- }';
- }
- }
- $result .= wf_tag('style', true);
- return ($result);
- }
- /**
- * Renders capabs as calendar
- *
- * @return string
- */
- public function renderCalendar() {
- $result = '';
- $result .= $this->panel();
- $result .= $this->getColorStyles();
- $data = '';
- if (!empty($this->allcapab)) {
- foreach ($this->allcapab as $io => $each) {
- $stateName = @$this->capabstates[$each['stateid']]['state'];
- $employeeName = @$this->employees[$each['employeeid']]['name'];
- $coloring = "className : 'capabcolorcustom_" . $each['stateid'] . "',";
- $timestamp = strtotime($each['date']);
- $startDate = date("Y, n-1, j", $timestamp);
- $doneTimestamp = (!empty($each['donedate'])) ? strtotime($each['donedate']) : time();
- $doneDate = date("Y, n-1, j", $doneTimestamp);
- $daysSpent = zb_formatTime($doneTimestamp - $timestamp);
- $address = str_replace("'", '`', $each['address']);
- $data .= "
- {
- title: '" . $address . ' - ' . $stateName . ' (' . $daysSpent . ')' . "',
- start: new Date(" . $startDate . "),
- end: new Date(" . $doneDate . "),
- " . $coloring . "
- url: '" . self::URL_ME . "&edit=" . $each['id'] . "'
- },";
- }
- $data = zb_CutEnd($data);
- }
- $result .= wf_FullCalendar($data);
- return ($result);
- }
- /**
- * Renders capab json data
- *
- *
- * @rerturn string
- */
- public function ajCapabList() {
- $jsonAAData = array();
- if (!empty($this->allcapab)) {
- foreach ($this->allcapab as $io => $each) {
- $jsonItem = array();
- $stateName = @$this->capabstates[$each['stateid']]['state'];
- $stateColor = @$this->capabstates[$each['stateid']]['color'];
- $employeeName = @$this->employees[$each['employeeid']]['name'];
- $actions = '';
- if (cfr('ROOT')) {
- $actions .= wf_JSAlert(self::URL_ME . "&delete=" . $each['id'], web_delete_icon(), __('Removing this may lead to irreparable results')) . ' ';
- }
- $actions .= wf_link(self::URL_ME . "&edit=" . $each['id'], web_edit_icon(), false);
- $loginGuess = $this->telepathy->getLogin($each['address']);
- $profileLink = (!empty($loginGuess)) ? wf_Link('?module=userprofile&username=' . $loginGuess, web_profile_icon(), false, '') . ' (' . __('guessed') . ')' : '';
- $adminCreated = $this->getHistoryCreated($each['id']);
- $jsonItem[] = $adminCreated;
- $jsonItem[] = $each['date'];
- $jsonItem[] = $each['address'] . ' ' . $profileLink;
- $jsonItem[] = $each['phone'];
- $jsonItem[] = wf_tag('span', false, '', 'style = "display:none;"') . $each['stateid'] . wf_tag('span', true) . wf_tag('font', false, '', 'color = "#' . $stateColor . '"') . $stateName . wf_tag('font', true);
- $jsonItem[] = $each['notes'];
- $jsonItem[] = $each['price'];
- $jsonItem[] = $employeeName;
- $jsonItem[] = $each['donedate'];
- $jsonItem[] = $actions;
- $jsonAAData[] = $jsonItem;
- }
- }
- $result = array("aaData" => $jsonAAData);
- return (json_encode($result));
- return ($result);
- }
- /**
- * delete some capability from database
- *
- * @param $id - capability id
- *
- * @return void
- */
- public function deleteCapability($id) {
- $id = vf($id, 3);
- if (isset($this->availids[$id])) {
- $query = "DELETE from `capab` WHERE `id`='" . $id . "'";
- nr_query($query);
- log_register("CAPABILITY DELETE [" . $id . "]");
- $this->logCapability($id, 'delete');
- } else {
- throw new Exception(self::NO_ID);
- }
- }
- /**
- * Saves some capab actions into history
- *
- * @param int $capabId
- * @param string $type
- * @param string $event
- */
- protected function logCapability($capabId, $type, $event = '') {
- $capabId = vf($capabId, 3);
- $type = vf($type);
- $eventF = mysql_real_escape_string($event);
- $admin = whoami();
- $date = curdatetime();
- $query = "INSERT INTO `capabhist` (`id`,`capabid`,`admin`,`date`,`type`,`event`) VALUES "
- . "(NULL, '" . $capabId . "','" . $admin . "','" . $date . "','" . $type . "','" . $eventF . "');";
- nr_query($query);
- }
- /**
- * creates new capability in database
- *
- * @param $address - users address
- * @param $phone - users phone
- * @param $notes - text notes to task
- *
- * @return integer
- */
- public function addCapability($address, $phone, $notes) {
- $date = curdatetime();
- $address = mysql_real_escape_string($address);
- $phone = mysql_real_escape_string($phone);
- $notes = mysql_real_escape_string($notes);
- $query = "INSERT INTO `capab` (`id` , `date` , `address` , `phone` ,`stateid` ,`notes` ,`price` ,`employeeid` ,`donedate`)
- VALUES ( NULL , '" . $date . "', '" . $address . "', '" . $phone . "', '0', '" . $notes . "', NULL , NULL , NULL);";
- nr_query($query);
- $lastId = simple_get_lastid('capab');
- log_register("CAPABILITY ADD [" . $lastId . "] `" . $address . "`");
- $this->logCapability($lastId, 'create');
- }
- /**
- * Generates random HTML color
- *
- * @return string
- */
- protected function genRandomColor() {
- $result = strtoupper(dechex(rand(0, 10000000)));
- return ($result);
- }
- /**
- * returns capability creation form
- *
- * @param string $address Pre set address fo form
- * @param string $phone Pre set phone
- * @param string $notes Pre set notes
- *
- * @return string
- */
- public function createForm($address = '', $phone = '', $notes = '') {
- $sup = wf_tag('sup') . '*' . wf_tag('sup', true);
- $allAddress = zb_AddressGetFulladdresslistCached();
- natsort($allAddress);
- $inputs = wf_AutocompleteTextInput('newaddress', $allAddress, __('Address') . $sup, $address, false);
- $inputs .= wf_TextInput('newphone', __('Phone') . $sup, $phone, true);
- $inputs .= __('Notes') . wf_tag('br');
- $inputs .= wf_TextArea('newnotes', '', $notes, true, '40x5');
- $inputs .= wf_Submit(__('Create'));
- $result = wf_Form(self::URL_CREATE, 'POST', $inputs, 'glamour');
- return ($result);
- }
- /**
- * returns capability editing form by existing cap id
- *
- * @return string
- */
- public function editForm($id) {
- $id = vf($id, 3);
- $sup = wf_tag('sup') . '*' . wf_tag('sup', true);
- $result = '';
- $messages = new UbillingMessageHelper();
- $stateSelector = array();
- $employeeSelector = array();
- $employeeSelector['NULL'] = '-';
- $employeeLogins = ts_GetAllEmployeeLoginsCached();
- $employeeLogins = unserialize($employeeLogins);
- if (isset($this->availids[$id])) {
- //states preprocessing
- if (!empty($this->capabstates)) {
- foreach ($this->capabstates as $io => $eachcap) {
- $stateSelector[$eachcap['id']] = $eachcap['state'];
- }
- }
- //employee preprocessing
- if (!empty($this->employees)) {
- foreach ($this->employees as $ia => $eachemp) {
- if ($eachemp['active']) {
- $employeeSelector[$eachemp['id']] = $eachemp['name'];
- }
- }
- }
- //task creation form
- $customData = wf_HiddenInput('unifiedformcapabdirgobackid', $id);
- $customData .= wf_CheckInput('unifiedformcapabdirgobackflag', __('Back to capability after creation'), true, true);
- $taskForm = ts_TaskCreateFormUnified($this->allcapab[$id]['address'], $this->allcapab[$id]['phone'], '', '', $customData, $this->allcapab[$id]['notes']);
- $taskControl = wf_modalAuto(wf_img('skins/createtask.gif') . ' ' . __('Create task'), __('Create task'), $taskForm, 'ubButton', '420', '500');
- $result = wf_BackLink(self::URL_ME) . ' ';
- $result .= $taskControl . wf_delimiter();
- $inputs = wf_TextInput('editaddress', __('Full address') . $sup, $this->allcapab[$id]['address'], true);
- $inputs .= wf_TextInput('editphone', __('Phone') . $sup, $this->allcapab[$id]['phone'], true);
- $inputs .= __('Notes') . wf_tag('br');
- $inputs .= wf_TextArea('editnotes', '', $this->allcapab[$id]['notes'], true, '40x5');
- $inputs .= wf_TextInput('editprice', __('Price'), $this->allcapab[$id]['price'], true);
- $inputs .= wf_Selector('editstateid', $stateSelector, __('Status'), $this->allcapab[$id]['stateid'], true);
- $inputs .= wf_Selector('editemployeeid', $employeeSelector, __('Worker'), $this->allcapab[$id]['employeeid'], true);
- $inputs .= wf_delimiter();
- $inputs .= wf_Submit(__('Save'));
- $form = wf_Form("", 'POST', $inputs, 'glamour');
- $form .= wf_CleanDiv();
- $capabHist = '';
- if (isset($this->history[$id])) {
- if (!empty($this->history[$id])) {
- foreach ($this->history[$id] as $io => $each) {
- $employeeName = (isset($employeeLogins[$each['admin']])) ? $employeeLogins[$each['admin']] : $each['admin'];
- $label = '';
- switch ($each['type']) {
- case 'create':
- $style = 'success';
- $label = __('Created');
- break;
- case 'edit':
- $style = 'warning';
- $label = __('Changed');
- break;
- case 'delete':
- $style = 'error';
- $label = __('Deleted');
- break;
- default:
- $style = 'info';
- break;
- }
- $capabHist .= $messages->getStyledMessage($label . ' ' . $each['date'] . ' ' . $employeeName, $style);
- }
- }
- }
- $cells = wf_TableCell($form, '', '', 'valign="top"');
- $cells .= wf_TableCell($capabHist, '', '', 'valign="top"');
- $rows = wf_TableRow($cells);
- $result .= wf_TableBody($rows, '100%', 0);
- } else {
- throw new Exception(self::NO_ID);
- }
- return ($result);
- }
- /**
- * update capability into database by its id
- *
- * @param int $id
- * @param int $address
- * @param string $phone
- * @param int $stateid
- * @param string $notes
- * @param string $price
- * @param int $employeeid
- * @throws Exception
- *
- * @return void
- */
- public function editCapability($id, $address, $phone, $stateid, $notes, $price, $employeeid) {
- $id = vf($id, 3);
- $address = mysql_real_escape_string($address);
- $phone = mysql_real_escape_string($phone);
- $stateid = vf($stateid, 3);
- $price = mysql_real_escape_string($price);
- $employeeid = vf($employeeid, 3);
- $curdate = curdatetime();
- if (isset($this->availids[$id])) {
- simple_update_field('capab', 'donedate', $curdate, "WHERE `id`='" . $id . "';");
- simple_update_field('capab', 'address', $address, "WHERE `id`='" . $id . "';");
- simple_update_field('capab', 'phone', $phone, "WHERE `id`='" . $id . "';");
- simple_update_field('capab', 'stateid', $stateid, "WHERE `id`='" . $id . "';");
- simple_update_field('capab', 'notes', $notes, "WHERE `id`='" . $id . "';");
- simple_update_field('capab', 'price', $price, "WHERE `id`='" . $id . "';");
- simple_update_field('capab', 'employeeid', $employeeid, "WHERE `id`='" . $id . "';");
- log_register("CAPABILITY EDIT [" . $id . "] `" . $address . "`");
- $this->logCapability($id, 'edit');
- } else {
- throw new Exception(self::NO_ID);
- }
- }
- /**
- * shows currently available capability states in table grid
- *
- * @return string
- */
- public function statesList() {
- $cells = wf_TableCell(__('ID'));
- $cells .= wf_TableCell(__('Status'));
- $cells .= wf_TableCell(__('Color'));
- $cells .= wf_TableCell(__('Actions'));
- $rows = wf_TableRow($cells, 'row1');
- if (!empty($this->capabstates)) {
- foreach ($this->capabstates as $io => $each) {
- $cells = wf_TableCell($each['id']);
- $cells .= wf_TableCell($each['state']);
- $color = wf_tag('font', false, '', 'color = "#' . $each['color'] . '"') . $each['color'] . wf_tag('font', true);
- $cells .= wf_TableCell($color);
- if ($each['id'] != 0) {
- $actions = wf_JSAlert(self::URL_ME . "&states=true&deletestate=" . $each['id'], web_delete_icon(), __('Removing this may lead to irreparable results'));
- $actions .= wf_JSAlert(self::URL_ME . "&states=true&editstate=" . $each['id'], web_edit_icon(), __('Are you serious'));
- } else {
- $actions = '';
- }
- $cells .= wf_TableCell($actions);
- $rows .= wf_TableRow($cells, 'row3');
- }
- }
- $result = wf_TableBody($rows, '100%', '0', 'sortable');
- return ($result);
- }
- /**
- * returns capability states adding form
- *
- * @return string
- */
- public function statesAddForm() {
- $sup = wf_tag('sup') . '*' . wf_tag('sup', true);
- $result = wf_BackLink(self::URL_ME, '', true);
- $inputs = wf_TextInput('createstate', __('New status') . $sup, '', true, '20');
- $inputs .= wf_ColPicker('createstatecolor', __('New status color') . $sup, '#' . $this->genRandomColor(), true, '10');
- $inputs .= wf_Submit(__('Create'));
- $result .= wf_Form("", 'POST', $inputs, 'glamour');
- return ($result);
- }
- /**
- * returns capability states adding form
- *
- * @param int $id
- * @return string
- */
- public function statesEditForm($id) {
- $sup = wf_tag('sup') . '*' . wf_tag('sup', true);
- $result = wf_BackLink(self::URL_ME . '&states=true', '', true);
- $inputs = wf_TextInput('editstate', __('New status') . $sup, $this->capabstates[$id]['state'], true, '20');
- $inputs .= wf_ColPicker('editstatecolor', __('New status color') . $sup, '#' . $this->capabstates[$id]['color'], true, '10');
- $inputs .= wf_Submit(__('Save'));
- $result .= wf_Form("", 'POST', $inputs, 'glamour');
- return ($result);
- }
- /**
- * creates new capability state
- *
- * @param string $state new state label
- * @param string $color new state color
- *
- * @return void
- */
- public function statesCreate($state, $color) {
- $state = mysql_real_escape_string($state);
- $color = mysql_real_escape_string($color);
- $color = str_replace('#', '', $color);
- $query = "INSERT INTO `capabstates` (`id` , `state` , `color`)
- VALUES ( NULL , '" . $state . "', '" . $color . "');";
- nr_query($query);
- log_register("CAPABILITY STATE ADD `" . $state . "`");
- }
- /**
- * delete state by its id
- *
- * @param int $id - state id in database
- *
- * @return void
- */
- public function statesDelete($id) {
- $id = vf($id, 3);
- if (!empty($id)) {
- $query = "DELETE FROM `capabstates` WHERE `id`='" . $id . "'";
- nr_query($query);
- log_register("CAPABILITY STATE DELETE [" . $id . "]");
- }
- }
- /**
- * updates state into database
- *
- * @param int $id - existing state id
- * @param int $state - new state title
- * @param string $color - new state color
- *
- * @return void
- */
- public function statesChange($id, $state, $color) {
- $id = vf($id, 3);
- $state = mysql_real_escape_string($state);
- $color = mysql_real_escape_string($color);
- $color = str_replace('#', '', $color);
- if (!empty($id)) {
- simple_update_field('capabstates', 'state', $state, "WHERE `id`='" . $id . "'");
- simple_update_field('capabstates', 'color', $color, "WHERE `id`='" . $id . "'");
- log_register("CAPABILITY STATE EDIT [" . $id . "] ON `" . $state . "`");
- }
- }
- /**
- * Renders capab sources stats
- *
- * @return string
- */
- public function renderSourcesStats() {
- $result = '';
- $capabSources = new Stigma('CAPABSOURCE');
- $result .= $capabSources->renderBasicReport();
- return ($result);
- }
- /**
- * Renders states charts
- *
- * @return string
- */
- public function renderStatesStats() {
- $result = '';
- $statsTmp = array();
- if (!empty($this->allcapab)) {
- $total = sizeof($this->allcapab);
- foreach ($this->allcapab as $io => $each) {
- if (isset($statsTmp[$each['stateid']])) {
- $statsTmp[$each['stateid']]++;
- } else {
- $statsTmp[$each['stateid']] = 1;
- }
- }
- if (!empty($statsTmp)) {
- $cells = wf_TableCell(__('Status'));
- $cells .= wf_TableCell(__('Count'));
- $cells .= wf_TableCell(__('Visual'));
- $rows = wf_TableRow($cells, 'row1');
- foreach ($statsTmp as $stateid => $count) {
- $cells = wf_TableCell(@$this->capabstates[$stateid]['state']);
- $cells .= wf_TableCell($count);
- $cells .= wf_TableCell(web_bar($count, $total));
- $rows .= wf_TableRow($cells, 'row3');
- }
- $result .= wf_TableBody($rows, '100%', 0, 'sortable');
- }
- } else {
- $messages = new UbillingMessageHelper();
- $result .= $messages->getStyledMessage(__('Nothing found'), 'info');
- }
- return ($result);
- }
- /**
- * returns capabilities directory control panel
- *
- * @return string
- */
- protected function panel() {
- $result = '';
- if (cfr('ROOT')) {
- $result .= wf_Link(self::URL_ME . "&states=true", wf_img('skins/settings.png', __('Modify states')), false, '') . ' ';
- }
- $result .= wf_modal(wf_img('skins/add_icon.png') . ' ' . __('Create'), __('Create'), $this->createForm(), 'ubButton', '400', '300');
- $result .= wf_Link(self::URL_ME . '&stats=true', wf_img('skins/icon_stats_16.gif') . ' ' . __('Stats'), false, 'ubButton');
- if (wf_CheckGet(array('calendar'))) {
- $result .= wf_Link(self::URL_ME, wf_img('skins/icon_table.png') . ' ' . __('Grid view'), false, 'ubButton');
- } else {
- $result .= wf_Link(self::URL_ME . '&calendar=true', wf_img('skins/icon_calendar.gif') . ' ' . __('As calendar'), false, 'ubButton');
- }
- $result .= wf_delimiter();
- return ($result);
- }
- }
|