Пример #1
0
 public function render_link()
 {
     $siteconfig = new org_openpsa_core_siteconfig();
     $products_url = $siteconfig->get_node_full_url('org.openpsa.products');
     if ($products_url) {
         return '<a href="' . $products_url . 'product/' . $this->guid . '/">' . $this->title . "</a>\n";
     } else {
         return $this->title;
     }
 }
Пример #2
0
 public function render_link()
 {
     $siteconfig = new org_openpsa_core_siteconfig();
     $contacts_url = $siteconfig->get_node_full_url('org.openpsa.contacts');
     if ($contacts_url) {
         return '<a href="' . $contacts_url . 'group/' . $this->guid . '/">' . $this->get_label() . "</a>\n";
     } else {
         return $this->get_label();
     }
 }
Пример #3
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_list($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     // Locate Contacts node for linking
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $data['contacts_url'] = $siteconfig->get_node_full_url('org.openpsa.contacts');
     $data['reports_url'] = $siteconfig->get_node_full_url('org.openpsa.reports');
     $qb = org_openpsa_sales_salesproject_dba::new_query_builder();
     if ($handler_id == 'list_status') {
         $qb = $this->_add_status_constraint($args[0], $qb);
         $data['mode'] = $args[0];
         $data['list_title'] = $this->_l10n->get('salesprojects ' . $args[0]);
     } else {
         $qb = $this->_add_customer_constraint($args[0], $qb);
         $data['mode'] = 'customer';
         $data['list_title'] = sprintf($this->_l10n->get('salesprojects with %s'), $data['customer']->get_label());
         if ($data['contacts_url']) {
             $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $data['contacts_url'] . (is_a($data['customer'], 'org_openpsa_contacts_group_dba') ? 'group' : 'person') . "/{$data['customer']->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('go to customer'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/jump-to.png'));
         }
     }
     $this->_salesprojects = $qb->execute();
     foreach ($this->_salesprojects as $key => $salesproject) {
         // Populate previous/next actions in the project
         $salesproject->get_actions();
     }
     // TODO: Filtering
     $data['grid'] = new org_openpsa_widgets_grid($data['mode'] . '_salesprojects_grid', 'local');
     midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/org.openpsa.core/table2csv.js');
     $this->add_breadcrumb("", $data['list_title']);
 }
Пример #4
0
 public static function get_instance()
 {
     if (is_null(self::$instance)) {
         self::$instance = new self();
     }
     return self::$instance;
 }
Пример #5
0
 /**
  * Helper function that populates the toolbar with the necessary items
  *
  * @param string $handler_id the ID of the current handler
  */
 private function _populate_toolbar($handler_id)
 {
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "person/edit/{$this->_contact->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('edit'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/edit.png', MIDCOM_TOOLBAR_ENABLED => $this->_contact->can_do('midgard:update'), MIDCOM_TOOLBAR_ACCESSKEY => 'e'));
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $invoices_url = $siteconfig->get_node_full_url('org.openpsa.invoices');
     $user_url = $siteconfig->get_node_full_url('org.openpsa.user');
     if ($invoices_url && midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_invoices_invoice_dba')) {
         $billing_data_url = "create/" . $this->_contact->guid . "/";
         $qb_billing_data = org_openpsa_invoices_billing_data_dba::new_query_builder();
         $qb_billing_data->add_constraint('linkGuid', '=', $this->_contact->guid);
         $billing_data = $qb_billing_data->execute();
         if (count($billing_data) > 0) {
             $billing_data_url = $billing_data[0]->guid . "/";
         }
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $invoices_url . "billingdata/" . $billing_data_url, MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('edit billingdata'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/edit.png', MIDCOM_TOOLBAR_ENABLED => $this->_contact->can_do('midgard:update')));
     }
     if ($user_url && (midcom_connection::get_user() == $this->_contact->id || midcom::get('auth')->can_user_do('org.openpsa.user:access', null, 'org_openpsa_user_interface'))) {
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $user_url . "view/{$this->_contact->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('user management', 'org.openpsa.user'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/properties.png'));
     }
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "person/delete/{$this->_contact->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('delete'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/trash.png', MIDCOM_TOOLBAR_ENABLED => $this->_contact->can_do('midgard:delete'), MIDCOM_TOOLBAR_ACCESSKEY => 'd'));
     $mycontacts = new org_openpsa_contacts_mycontacts();
     if ($mycontacts->is_member($this->_contact->guid)) {
         // We're buddies, show remove button
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "mycontacts/remove/{$this->_contact->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('remove from my contacts'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/trash.png'));
     } else {
         // We're not buddies, show add button
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "mycontacts/add/{$this->_contact->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('add to my contacts'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_person.png'));
     }
 }
Пример #6
0
 public static function add_head_elements_for_invoice_grid()
 {
     $invoices_url = org_openpsa_core_siteconfig::get_instance()->get_node_full_url('org.openpsa.invoices');
     org_openpsa_widgets_grid::add_head_elements();
     midcom::get('head')->add_jscript('var INVOICES_URL ="' . $invoices_url . 'invoice/process/";');
     midcom::get('head')->add_jsfile(MIDCOM_STATIC_URL . '/org.openpsa.invoices/invoices.js');
 }
Пример #7
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_frontpage($handler_id, array $args, array &$data)
 {
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => 'salesproject/new/', MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create salesproject'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_people.png', MIDCOM_TOOLBAR_ENABLED => midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_sales_salesproject_dba')));
     org_openpsa_widgets_ui::enable_ui_tab();
     $sales_url = org_openpsa_core_siteconfig::get_instance()->get_node_relative_url('org.openpsa.sales');
     $data['tabs'] = array(array('url' => $sales_url . "list/active/", 'title' => $this->_l10n->get('active')), array('url' => $sales_url . "list/won/", 'title' => $this->_l10n->get('won')), array('url' => $sales_url . "list/delivered/", 'title' => $this->_l10n->get('delivered')), array('url' => $sales_url . "list/invoiced/", 'title' => $this->_l10n->get('invoiced')), array('url' => $sales_url . "list/canceled/", 'title' => $this->_l10n->get('canceled')), array('url' => $sales_url . "list/lost/", 'title' => $this->_l10n->get('lost')));
 }
Пример #8
0
 public static function initialize_search()
 {
     $defaults = array('autocomplete' => false);
     $providers = array();
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $configured_providers = self::get_config_value('search_providers');
     $user_id = false;
     if (!midcom::get('auth')->admin) {
         $user_id = midcom::get('auth')->acl->get_user_id();
     }
     foreach ($configured_providers as $component => $config) {
         if (!is_array($config)) {
             $config = array('route' => $config);
         }
         $config = array_merge($defaults, $config);
         if ($config['autocomplete'] === true) {
             midcom_helper_datamanager2_widget_autocomplete::add_head_elements();
         }
         $node_url = $siteconfig->get_node_full_url($component);
         if ($node_url && (!$user_id || midcom::get('auth')->acl->can_do_byguid('midgard:read', $siteconfig->get_node_guid($component), 'midcom_db_topic', $user_id))) {
             $providers[] = array('helptext' => midcom::get('i18n')->get_string('search title', $component), 'url' => $node_url . $config['route'], 'identifier' => $component, 'autocomplete' => $config['autocomplete']);
         }
     }
     midcom::get('head')->add_jquery_state_script('org_openpsa_layout.initialize_search
     (
         ' . json_encode($providers) . ',
         "' . midgard_admin_asgard_plugin::get_preference('openpsa2_search_provider') . '"
     );');
 }
Пример #9
0
 public function render_link()
 {
     $url = '';
     $link = nl2br($this->description);
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $projects_url = $siteconfig->get_node_full_url('org.openpsa.projects');
     $sales_url = $siteconfig->get_node_full_url('org.openpsa.sales');
     if ($projects_url) {
         try {
             $task = org_openpsa_projects_task_dba::get_cached($this->task);
             $url = $projects_url . 'task/' . $task->guid . '/';
         } catch (midcom_error $e) {
         }
     }
     if ($url == '' && $sales_url) {
         try {
             $deliverable = org_openpsa_sales_salesproject_deliverable_dba::get_cached($this->deliverable);
             $url = $sales_url . 'deliverable/' . $deliverable->guid . '/';
         } catch (midcom_error $e) {
         }
     }
     if ($url != '') {
         $link = '<a href="' . $url . '">' . $link . '</a>';
     }
     return $link;
 }
Пример #10
0
 /**
  * Simple helper which references all important members to the request data listing
  * for usage within the style listing.
  */
 private function _prepare_request_data()
 {
     $this->_request_data['salesproject'] =& $this->_salesproject;
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $this->_request_data['projects_url'] = $siteconfig->get_node_relative_url('org.openpsa.projects');
     $this->_request_data['invoices_url'] = $siteconfig->get_node_relative_url('org.openpsa.invoices');
     $this->_request_data['products'] = org_openpsa_products_product_dba::list_products();
 }
Пример #11
0
 /**
  * Special helper for adding the supported operations from read into the toolbar.
  *
  * @param mixed $handler_id The ID of the handler.
  */
 private function _add_read_toolbar($handler_id)
 {
     // Add toolbar items
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "project/edit/{$this->_object->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('edit'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/edit.png', MIDCOM_TOOLBAR_ACCESSKEY => 'e'));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "task/new/project/{$this->_object->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create task'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/new_task.png', MIDCOM_TOOLBAR_ENABLED => $this->_object->can_do('midgard:update')));
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $sales_url = $siteconfig->get_node_full_url('org.openpsa.sales');
     if (!empty($sales_url)) {
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $sales_url . "salesproject/{$this->_object->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('salesproject', 'org.openpsa.sales'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/jump-to.png'));
     }
     org_openpsa_relatedto_plugin::add_button($this->_view_toolbar, $this->_object->guid);
 }
Пример #12
0
 /**
  *
  * @param mixed $handler_id The ID of the handler.
  * @param array &$data The local request data.
  */
 public function _show_today($handler_id, array &$data)
 {
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $data['calendar_url'] = $siteconfig->get_node_relative_url('org.openpsa.calendar');
     $data['projects_url'] = $siteconfig->get_node_full_url('org.openpsa.projects');
     $data['projects_relative_url'] = $siteconfig->get_node_relative_url('org.openpsa.projects');
     $data['expenses_url'] = $siteconfig->get_node_full_url('org.openpsa.expenses');
     $data['wiki_url'] = $siteconfig->get_node_relative_url('net.nemein.wiki');
     $data_url = midcom::get()->get_host_name() . midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX);
     $data['journal_url'] = $data_url . '/__mfa/org.openpsa.relatedto/journalentry/list/xml/';
     midcom_show_style('show-today');
 }
Пример #13
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_list($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $this->_sales_url = $siteconfig->get_node_full_url('org.openpsa.sales');
     $provider = new org_openpsa_widgets_grid_provider($this, 'local');
     $provider->add_order('start');
     $data['grid'] = $provider->get_grid('scheduled');
     midcom::get('head')->set_pagetitle($this->_l10n->get('scheduled invoices'));
     $this->add_breadcrumb('', $this->_l10n->get('scheduled invoices'));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => '', MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('dashboard'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_left.png'));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => 'invoice/new/', MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create invoice'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/printer.png', MIDCOM_TOOLBAR_ENABLED => midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_invoices_invoice_dba')));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => 'projects/', MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('project invoicing'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/printer.png', MIDCOM_TOOLBAR_ENABLED => midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_invoices_invoice_dba')));
 }
Пример #14
0
 /**
  * @param mixed $handler_id The ID of the handler.
  * @param Array $args The argument list.
  * @param Array &$data The local request data.
  */
 public function _handler_view($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     // Set the "now working on" status
     $data['workingon'] = new org_openpsa_mypage_workingon();
     midcom::get()->skip_page_style = true;
     $task_conf = midcom_helper_datamanager2_widget_autocomplete::get_widget_config('task');
     $task_conf['id_field'] = 'guid';
     $task_conf['constraints'][] = array('field' => 'status', 'op' => '<', 'value' => org_openpsa_projects_task_status_dba::COMPLETED);
     $data['widget_config'] = $task_conf;
     // List work hours this week
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $data['expenses_url'] = $siteconfig->get_node_full_url('org.openpsa.expenses');
     $data['requested_time'] = date('Y-m-d');
     $this->_master->calculate_day($data['requested_time']);
     $this->_list_work_hours();
 }
Пример #15
0
 /**
  * Simple helper which references all important members to the request data listing
  * for usage within the style listing.
  */
 private function _prepare_request_data()
 {
     $this->_request_data['deliverable'] =& $this->_deliverable;
     $this->_request_data['salesproject'] =& $this->_salesproject;
     // Populate the toolbar
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "deliverable/edit/{$this->_deliverable->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('edit'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/edit.png', MIDCOM_TOOLBAR_ENABLED => $this->_deliverable->can_do('midgard:update'), MIDCOM_TOOLBAR_ACCESSKEY => 'e'));
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $this->_request_data['projects_url'] = $siteconfig->get_node_relative_url('org.openpsa.projects');
     $this->_request_data['invoices_url'] = $siteconfig->get_node_relative_url('org.openpsa.invoices');
     /*if ($this->_salesproject->can_do('midgard:delete'))
       {
           $this->_view_toolbar->add_item(Array(
               MIDCOM_TOOLBAR_URL => "salesproject/delete/{$this->_salesproject->guid}/",
               MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get('delete'),
               MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/trash.png',
           ));
       }*/
 }
Пример #16
0
 /**
  * The handler for the list view
  *
  * @param mixed $handler_id the array key from the request array
  * @param array $args the arguments given to the handler
  * @param Array &$data The local request data.
  */
 public function _handler_list($handler_id, array $args, array &$data)
 {
     midcom::get('auth')->require_valid_user();
     // List hours
     $qb = org_openpsa_projects_hour_report_dba::new_query_builder();
     $mode = 'full';
     //url for batch_handler
     $this->_request_data['action_target_url'] = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX) . "hours/task/batch/";
     switch ($handler_id) {
         case 'list_hours':
             $this->_master->add_list_filter($qb);
             $data['view_title'] = $data['l10n']->get('hour reports');
             $data['breadcrumb_title'] = $data['view_title'];
             break;
         case 'list_hours_task':
             $this->_master->add_list_filter($qb);
             // Fallthrough
         // Fallthrough
         case 'list_hours_task_all':
             $task = new org_openpsa_projects_task_dba($args[0]);
             $qb->add_constraint('task', '=', $task->id);
             $mode = 'simple';
             $data['view_title'] = sprintf($data['l10n']->get($handler_id . " %s"), $task->title);
             $data['breadcrumb_title'] = $task->get_label();
             $siteconfig = org_openpsa_core_siteconfig::get_instance();
             $projects_url = $siteconfig->get_node_full_url('org.openpsa.projects');
             if ($projects_url) {
                 $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $projects_url . "task/{$task->guid}/", MIDCOM_TOOLBAR_LABEL => sprintf($this->_l10n->get('show task %s'), $task->title), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/jump-to.png', MIDCOM_TOOLBAR_ACCESSKEY => 'g'));
             }
             break;
     }
     $qb->add_order('date', 'DESC');
     $data['hours'] = $qb->execute();
     $this->_load_hour_data($data['hours']);
     $data['mode'] = $mode;
     $data['tasks'] = $this->tasks;
     $data['qb'] = $qb;
     org_openpsa_widgets_grid::add_head_elements();
     midcom_helper_datamanager2_widget_autocomplete::add_head_elements();
     org_openpsa_widgets_contact::add_head_elements();
     midcom::get('head')->set_pagetitle($data['view_title']);
     $this->add_breadcrumb('', $data['breadcrumb_title']);
 }
Пример #17
0
 /**
  * Locates the root event
  */
 public static function find_root_event()
 {
     if (!midcom::get('componentloader')->is_loaded('org.openpsa.calendar')) {
         midcom::get('componentloader')->load_graceful('org.openpsa.calendar');
         //Doublecheck
         if (!midcom::get('componentloader')->is_loaded('org.openpsa.calendar')) {
             return false;
         }
     }
     $data = midcom_baseclasses_components_configuration::get('org.openpsa.calendar');
     //Check if we have already initialized
     if (isset($data['calendar_root_event']) && is_object($data['calendar_root_event'])) {
         return $data['calendar_root_event'];
     }
     $root_event = false;
     $root_guid = $data['config']->get('calendar_root_event');
     if (mgd_is_guid($root_guid)) {
         $root_event = org_openpsa_calendar_event_dba::get_cached($root_guid);
     } else {
         // Check for calendar event tree.
         $qb = org_openpsa_calendar_event_dba::new_query_builder();
         $qb->add_constraint('title', '=', '__org_openpsa_calendar');
         $qb->add_constraint('up', '=', '0');
         $ret = $qb->execute();
         if (is_array($ret) && count($ret) > 0) {
             $root_event = $ret[0];
             $siteconfig = org_openpsa_core_siteconfig::get_instance();
             $topic_guid = $siteconfig->get_node_guid('org.openpsa.calendar');
             if ($topic_guid) {
                 $topic = new midcom_db_topic($topic_guid);
                 $topic->set_parameter('org.openpsa.calendar', 'calendar_root_event', $root_event->guid);
             }
         } else {
             debug_add("OpenPSA Calendar root event could not be found", MIDCOM_LOG_ERROR);
             //Attempt to auto-initialize
             $root_event = self::create_root_event();
         }
     }
     $data['calendar_root_event'] = $root_event;
     return $root_event;
 }
Пример #18
0
 private function _populate_toolbar()
 {
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "group/edit/{$this->_group->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n_midcom->get("edit"), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/edit.png', MIDCOM_TOOLBAR_ENABLED => $this->_group->can_do('midgard:update'), MIDCOM_TOOLBAR_ACCESSKEY => 'e'));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "group/create/organization/{$this->_group->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create suborganization'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_people-new.png', MIDCOM_TOOLBAR_ENABLED => $this->_group->can_do('midgard:update')));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "group/create/group/{$this->_group->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create subgroup'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_people-new.png', MIDCOM_TOOLBAR_ENABLED => $this->_group->can_do('midgard:update')));
     if (midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_contacts_person_dba') && $this->_group->can_do('midgard:create')) {
         $allow_person_create = true;
     } else {
         $allow_person_create = false;
     }
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "person/create/{$this->_group->guid}/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create person'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_person-new.png', MIDCOM_TOOLBAR_ENABLED => $allow_person_create));
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $user_url = $siteconfig->get_node_full_url('org.openpsa.user');
     if ($user_url && midcom::get('auth')->can_user_do('org.openpsa.user:access', null, 'org_openpsa_user_interface')) {
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $user_url . "group/{$this->_group->guid}/", MIDCOM_TOOLBAR_LABEL => midcom::get('i18n')->get_string('user management', 'org.openpsa.user'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/properties.png'));
     }
     $cal_node = midcom_helper_misc::find_node_by_component('org.openpsa.calendar');
     if (!empty($cal_node)) {
         //TODO: Check for privileges somehow
         $this->_node_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "#", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('create event'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_new-event.png', MIDCOM_TOOLBAR_OPTIONS => array('rel' => 'directlink', 'onclick' => org_openpsa_calendar_interface::calendar_newevent_js($cal_node, false, $this->_group->guid))));
     }
 }
Пример #19
0
 public static function get_component_node($component)
 {
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     midcom::get('auth')->request_sudo($component);
     if ($topic_guid = $siteconfig->get_node_guid($component)) {
         $topic = new midcom_db_topic($topic_guid);
     } else {
         $qb = midcom_db_topic::new_query_builder();
         $qb->add_constraint('component', '=', $component);
         $qb->set_limit(1);
         $qb->add_order('id');
         $result = $qb->execute();
         if (sizeof($result) == 1) {
             midcom::get('auth')->drop_sudo();
             return $result[0];
         }
         $root_topic = midcom_db_topic::get_cached($GLOBALS['midcom_config']['root_topic']);
         $topic_attributes = array('up' => $root_topic->id, 'component' => $component, 'name' => 'handler_test_' . time());
         $topic = self::create_class_object('midcom_db_topic', $topic_attributes);
     }
     midcom::get('auth')->drop_sudo();
     return $topic;
 }
Пример #20
0
 /**
  * Special helper for adding the supported operations from read into the toolbar.
  *
  * @param mixed $handler_id The ID of the handler.
  */
 private function _populate_read_toolbar($handler_id)
 {
     if (!$this->_object->can_do('midgard:update')) {
         return;
     }
     if ($this->_object->status == org_openpsa_projects_task_status_dba::CLOSED) {
         // TODO: Make POST request
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "task/{$this->_object->guid}/reopen/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('reopen'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/folder-expanded.png'));
     } else {
         if ($this->_object->status_type == 'ongoing') {
             // TODO: Make POST request
             $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => "task/{$this->_object->guid}/complete/", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('mark completed'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/new_task.png'));
         }
     }
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $expenses_url = $siteconfig->get_node_full_url('org.openpsa.expenses');
     if ($expenses_url) {
         midcom_helper_datamanager2_widget_autocomplete::add_head_elements();
         org_openpsa_widgets_grid::add_head_elements();
         if ($this->_object->status < org_openpsa_projects_task_status_dba::CLOSED) {
             $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $expenses_url . "hours/create/hour_report/{$this->_object->guid}/", MIDCOM_TOOLBAR_LABEL => sprintf($this->_l10n_midcom->get('create %s'), $this->_l10n->get('hour report')), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/stock_new-event.png'));
         }
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $expenses_url . "hours/task/all/{$this->_object->guid}", MIDCOM_TOOLBAR_LABEL => $this->_l10n->get('hour reports'), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/scheduled_and_shown.png', MIDCOM_TOOLBAR_ACCESSKEY => 'h'));
     }
     org_openpsa_relatedto_plugin::add_button($this->_view_toolbar, $this->_object->guid);
 }
Пример #21
0
 private function _get_available_generators()
 {
     if (is_array($this->_available_generators)) {
         return $this->_available_generators;
     }
     $this->_available_generators = array();
     $components = array('org.openpsa.projects' => midcom::get('i18n')->get_string('org.openpsa.projects', 'org.openpsa.projects'), 'org.openpsa.sales' => midcom::get('i18n')->get_string('org.openpsa.sales', 'org.openpsa.sales'), 'org.openpsa.invoices' => midcom::get('i18n')->get_string('org.openpsa.invoices', 'org.openpsa.invoices'));
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     foreach ($components as $component => $loc) {
         $node_guid = $siteconfig->get_node_guid($component);
         try {
             $topic = midcom_db_topic::get_cached($node_guid);
             $this->_available_generators[$component] = $loc;
         } catch (midcom_error $e) {
             debug_add("topic for component '{$component}' not found or accessible");
         }
     }
     $this->_available_generators = $components;
     return $this->_available_generators;
 }
Пример #22
0
 /**
  * Determine the node that handles the DBA class and load the respective component
  */
 private function _load_component_node()
 {
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $nap = new midcom_helper_nav();
     $component = midcom::get('dbclassloader')->get_component_for_class($this->_dbaclass);
     midcom::get('componentloader')->load($component);
     $topic_guid = $siteconfig->get_node_guid($component);
     $this->_node = $nap->resolve_guid($topic_guid);
     if (!$this->_node) {
         throw new midcom_error("Could not load node information for topic {$topic_guid}. Last error was: " . midcom_connection::get_error_string());
     }
 }
Пример #23
0
 /**
  * Helper to prepare non json output
  */
 private function _prepare_output()
 {
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $this->_request_data['contacts_url'] = $siteconfig->get_node_full_url('org.openpsa.contacts');
     $this->_request_data['sales_url'] = $siteconfig->get_node_full_url('org.openpsa.sales');
     $this->_request_data['prefix'] = midcom_core_context::get()->get_key(MIDCOM_CONTEXT_ANCHORPREFIX);
     if ($this->_request_data['view_identifier'] == 'agreement') {
         return;
     }
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => 'project/new/', MIDCOM_TOOLBAR_LABEL => $this->_l10n->get("create project"), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/new-dir.png', MIDCOM_TOOLBAR_ENABLED => midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_projects_project')));
     $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => 'task/new/', MIDCOM_TOOLBAR_LABEL => $this->_l10n->get("create task"), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/new_task.png', MIDCOM_TOOLBAR_ENABLED => midcom::get('auth')->can_user_do('midgard:create', null, 'org_openpsa_projects_task_dba')));
 }
Пример #24
0
 /**
  * Helper to populate the toolbar
  *
  * @param mixed $parent The parent object or false
  */
 private function _add_toolbar_items($parent)
 {
     if (empty($parent->guid)) {
         return;
     }
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $projects_url = $siteconfig->get_node_full_url('org.openpsa.projects');
     if ($projects_url) {
         $this->_view_toolbar->add_item(array(MIDCOM_TOOLBAR_URL => $projects_url . "task/{$parent->guid}/", MIDCOM_TOOLBAR_LABEL => sprintf($this->_l10n->get('show task %s'), $parent->title), MIDCOM_TOOLBAR_ICON => 'stock-icons/16x16/jump-to.png', MIDCOM_TOOLBAR_ACCESSKEY => 'g'));
     }
 }
Пример #25
0
 /**
  *
  * @param mixed $handler_id The ID of the handler.
  * @param array &$data The local request data.
  */
 public function _show_list($handler_id, array &$data)
 {
     // Locate Contacts node for linking
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $this->_request_data['contacts_url'] = $siteconfig->get_node_full_url('org.openpsa.contacts');
     if ($this->_request_data['view'] == 'all') {
         // The main listing view, list summary of each status
         foreach ($this->_request_data['project_list_results'] as $status => $results) {
             $this->_request_data['project_list_status'] = $status;
             $this->_request_data['project_list_items'] = $results;
             if (!$this->_request_data['config']->get('list_projects_by_status')) {
                 midcom_show_style("show-project-list-status-header");
                 foreach ($this->_request_data['project_list_results'][$this->_request_data['view']] as $guid => $project) {
                     $this->_request_data['project'] = $this->_load_project($guid);
                     midcom_show_style("show-project-list-status-item");
                 }
                 midcom_show_style("show-project-list-status-footer");
             } else {
                 midcom_show_style("show-project-list-status-summary");
             }
         }
     } else {
         // Listing of one status, show verbose output
         midcom_show_style("show-project-list-status-header");
         foreach ($this->_request_data['project_list_results'][$this->_request_data['view']] as $guid => $project) {
             $this->_request_data['project'] = $this->_load_project($guid);
             midcom_show_style("show-project-list-status-item");
         }
         midcom_show_style("show-project-list-status-footer");
     }
 }
Пример #26
0
 /**
  * Renderer for organization address cards
  */
 public static function show_address_card(&$customer, $cards)
 {
     $cards_to_show = array();
     $multiple_addresses = false;
     $inherited_cards_only = true;
     $default_shown = false;
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $contacts_url = $siteconfig->get_node_full_url('org.openpsa.contacts');
     foreach ($cards as $cardname) {
         if ($cardname == 'visiting') {
             if ($customer->street) {
                 $default_shown = true;
                 $cards_to_show[] = $cardname;
             }
             continue;
         }
         $property = $cardname . 'Street';
         if (sizeof($cards_to_show) == 0) {
             if ($property != 'street' && $customer->{$property}) {
                 $inherited_cards_only = false;
                 $cards_to_show[] = $cardname;
             } else {
                 if (!$default_shown && $customer->street) {
                     $default_shown = true;
                     $cards_to_show[] = $cardname;
                 }
             }
         } else {
             if ($customer->{$property} || $customer->street && (!$inherited_cards_only && !$default_shown)) {
                 $inherited_cards_only = false;
                 $multiple_addresses = true;
                 $cards_to_show[] = $cardname;
             }
         }
     }
     if (sizeof($cards_to_show) == 0) {
         return;
     }
     $root_group = org_openpsa_contacts_interface::find_root_group();
     $parent = $customer->get_parent();
     $parent_name = false;
     if ($parent->id != $root_group->id) {
         $parent_name = $parent->get_label();
     }
     foreach ($cards_to_show as $cardname) {
         echo '<div class="vcard">';
         if ($multiple_addresses || $cardname != 'visiting' && !$inherited_cards_only) {
             echo '<div style="text-align:center"><em>' . midcom::get('i18n')->get_string($cardname . ' address', 'org.openpsa.contacts') . "</em></div>\n";
         }
         echo "<strong>\n";
         if ($parent_name) {
             echo '<a href="' . $contacts_url . 'group/' . $parent->guid . '/">' . $parent_name . "</a><br />\n";
         }
         $label = $customer->get_label();
         if ($cardname != 'visiting') {
             $label_property = $cardname . '_label';
             $label = $customer->{$label_property};
         }
         echo $label . "\n";
         echo "</strong>\n";
         $property_street = 'street';
         $property_postcode = 'postcode';
         $property_city = 'city';
         if ($cardname != 'visiting') {
             $property_street = $cardname . 'Street';
             $property_postcode = $cardname . 'Postcode';
             $property_city = $cardname . 'City';
         }
         if ($customer->{$property_street}) {
             echo "<p>{$customer->{$property_street}}<br />\n";
             echo "{$customer->{$property_postcode}} {$customer->{$property_city}}</p>\n";
         } else {
             if ($customer->street) {
                 echo "<p>{$customer->street}<br />\n";
                 echo "{$customer->postcode} {$customer->city}</p>\n";
             }
         }
         echo "</div>\n";
     }
 }
Пример #27
0
            echo "<div><strong>" . $data['l10n']->get($fieldname) . ": </strong>";
            echo $fielddata . "</div>";
            break;
    }
}
if (array_key_exists('billing_data', $data)) {
    echo "<h2>" . $data['l10n']->get('invoice defaults') . "</h2>\n";
    echo "<div><strong>" . midcom::get('i18n')->get_string('vat', 'org.openpsa.invoices') . ": </strong>";
    echo $data['billing_data']->vat . " %</div>\n";
    echo "<div><strong>" . midcom::get('i18n')->get_string('payment target', 'org.openpsa.invoices') . ": </strong>";
    echo $data['billing_data']->due . "</div>\n";
    $data['billing_data']->render_address();
}
org_openpsa_widgets_contact::show_address_card($data['group'], array('visiting', 'postal'));
echo '<br style="clear:left" />';
$siteconfig = org_openpsa_core_siteconfig::get_instance();
$tabs = array();
if (strpos($data['view']['categories'], $data['l10n']->get('client')) !== false) {
    //TODO: Check for privileges somehow
    $invoices_url = $siteconfig->get_node_relative_url('org.openpsa.invoices');
    if ($invoices_url) {
        $tabs[] = array('url' => $invoices_url . "list/customer/all/{$data['group']->guid}/", 'title' => midcom::get('i18n')->get_string('invoices', 'org.openpsa.invoices'));
    }
    $sales_url = $siteconfig->get_node_relative_url('org.openpsa.sales');
    if ($sales_url) {
        $tabs[] = array('url' => $sales_url . "list/customer/{$data['group']->guid}/", 'title' => midcom::get('i18n')->get_string('salesprojects', 'org.openpsa.sales'));
    }
}
org_openpsa_widgets_ui::render_tabs($data['group']->guid, $tabs);
?>
</div>
Пример #28
0
 static function common_node_toolbar_buttons_sanitycheck(&$data, &$button_component, &$bind_object, &$calling_component)
 {
     if (!midcom::get('componentloader')->load_graceful($button_component)) {
         //For some reason the component is and can not (be) loaded
         debug_add("component {$button_component} could not be loaded", MIDCOM_LOG_ERROR);
         return false;
     }
     if (!array_key_exists('node', $data) || empty($data['node'])) {
         debug_add("data['node'] not given, trying with siteconfig", MIDCOM_LOG_DEBUG);
         $siteconfig = org_openpsa_core_siteconfig::get_instance();
         $node_guid = $siteconfig->get_node_guid($button_component);
         if (!$node_guid) {
             debug_add("data['node'] not given, and {$button_component} could not be found in siteconfig", MIDCOM_LOG_INFO);
             return false;
         }
         $nap = new midcom_helper_nav();
         $data['node'] = $nap->resolve_guid($node_guid);
     }
     if (empty($data['node'])) {
         //Invalid node given/found
         debug_add("data['node'] is invalid", MIDCOM_LOG_ERROR);
         return false;
     }
     $related_to = new org_openpsa_relatedto_dba();
     $related_to->toGuid = $bind_object->guid;
     $related_to->toClass = get_class($bind_object);
     $related_to->toComponent = $calling_component;
     $related_to->fromComponent = $button_component;
     $related_to->status = org_openpsa_relatedto_dba::CONFIRMED;
     return $related_to;
 }
Пример #29
0
 /**
  *
  * @param mixed $handler_id The ID of the handler.
  * @param array &$data The local request data.
  */
 public function _show_review($handler_id, array &$data)
 {
     $siteconfig = org_openpsa_core_siteconfig::get_instance();
     $data['calendar_node'] = midcom_helper_misc::find_node_by_component('org.openpsa.calendar');
     $data['projects_url'] = $siteconfig->get_node_full_url('org.openpsa.projects');
     $date = new DateTime(date('Y-m-d', $data['week_start']));
     $offset = $date->format('N') - 1;
     $date->modify('-' . $offset . ' days');
     $week_hours_invoiceable = 0;
     $week_hours_total = 0;
     midcom_show_style('weekreview-header');
     for ($i = 0; $i < 7; $i++) {
         $day = $date->format('Y-m-d');
         $data['day_start'] = (int) $date->format('U');
         $date->setTime(23, 59, 59);
         $data['day_end'] = (int) $date->format('U');
         //Roll over to the next day
         $date->modify('+1 second');
         if (!array_key_exists($day, $data['review_data'])) {
             // Nothing for today
             continue;
         }
         midcom_show_style('weekreview-day-header');
         $day_hours_invoiceable = 0;
         $day_hours_total = 0;
         // Arrange entries per time
         ksort($data['review_data'][$day]);
         $data['class'] = 'even';
         foreach ($data['review_data'][$day] as $time => $guids) {
             foreach ($guids as $object) {
                 if ($data['class'] == 'even') {
                     $data['class'] = 'odd';
                 } else {
                     $data['class'] = 'even';
                 }
                 $data['time'] = $time;
                 $data['object'] = $object;
                 switch (get_class($object)) {
                     case 'org_openpsa_calendar_event_dba':
                         midcom_show_style('weekreview-day-item-event');
                         break;
                     case 'org_openpsa_projects_hour_report_dba':
                         midcom_show_style('weekreview-day-item-hour-report');
                         if ($object->invoiceable) {
                             $day_hours_invoiceable += $object->hours;
                         }
                         $day_hours_total += $object->hours;
                         break;
                     case 'org_openpsa_projects_task_status_dba':
                         midcom_show_style('weekreview-day-item-task-status');
                         break;
                     case 'org_routamc_positioning_log_dba':
                         midcom_show_style('weekreview-day-item-position');
                         break;
                 }
             }
         }
         $data['day_hours_invoiceable'] = $day_hours_invoiceable;
         $week_hours_invoiceable += $day_hours_invoiceable;
         $data['day_hours_total'] = $day_hours_total;
         $week_hours_total += $day_hours_total;
         midcom_show_style('weekreview-day-footer');
     }
     $data['week_hours_invoiceable'] = $week_hours_invoiceable;
     $data['week_hours_total'] = $week_hours_total;
     midcom_show_style('weekreview-footer');
 }
Пример #30
0
 /**
  * Helper function to process the form of the controller
  */
 private function _process_billing_form()
 {
     switch ($this->_controller->process_form()) {
         case 'delete':
             $this->_billing_data->delete();
         case 'save':
         case 'cancel':
             $siteconfig = org_openpsa_core_siteconfig::get_instance();
             $relocate = $siteconfig->get_node_full_url('org.openpsa.contacts');
             switch (true) {
                 case is_a($this->_linked_object, 'org_openpsa_contacts_person_dba'):
                     $relocate .= 'person/' . $this->_linked_object->guid . '/';
                     break;
                 case is_a($this->_linked_object, 'org_openpsa_contacts_group_dba'):
                     $relocate .= 'group/' . $this->_linked_object->guid . '/';
                     break;
                 default:
                     $relocate = midcom::get('permalinks')->create_permalink($this->_linked_object->guid);
                     break;
             }
             midcom::get()->relocate($relocate);
             // This will exit.
     }
 }