protected function viewSuccess()
 {
     $symphonyUrl = URL . '/' . Symphony::Configuration()->get('admin-path', 'symphony');
     $this->Form->setAttribute('action', $symphonyUrl);
     $div = new XMLElement('div');
     $div->appendChild(new XMLElement('h2', __('The floor is yours')));
     $div->appendChild(new XMLElement('p', __('Thanks for taking the quick, yet epic installation journey with us. It’s now your turn to shine!')));
     $this->Form->appendChild($div);
     $ul = new XMLElement('ul');
     foreach ($this->_params['disabled-extensions'] as $handle) {
         $ul->appendChild(new XMLElement('li', '<code>' . $handle . '</code>'));
     }
     if ($ul->getNumberOfChildren() !== 0) {
         $this->Form->appendChild(new XMLElement('p', __('Looks like the following extensions couldn’t be enabled and must be manually installed. It’s a minor setback in our otherwise prosperous future together.')));
         $this->Form->appendChild($ul);
     }
     $this->Form->appendChild(new XMLElement('p', __('I think you and I will achieve great things together. Just one last thing: how about we remove the %s folder and secure the safety of our relationship?', array('<code>' . basename(INSTALL) . '</code>'))));
     $submit = new XMLElement('div', null, array('class' => 'submit'));
     $submit->appendChild(Widget::Input('submit', __('Okay, now take me to the login page'), 'submit'));
     $this->Form->appendChild($submit);
 }
Esempio n. 2
0
 /**
  * Adjust the publish index screen
  * @param $context
  *  The context
  * @param $callback
  *  The callback
  * @return mixed
  */
 private function adjustIndex($context, $callback)
 {
     $data = $this->getCurrentAuthorRoleData();
     if ($data == false || Administration::instance()->Author()->isDeveloper()) {
         return;
     }
     // Set the hidden fields:
     $hiddenFields = array();
     foreach ($data['fields'] as $id_field => $rules) {
         if ($rules['hidden'] == 1) {
             // This field is hidden.
             array_push($hiddenFields, $id_field);
         }
     }
     $section = $callback['context']['section_handle'];
     foreach ($data['sections'] as $id_section => $rules) {
         if ($rules['handle'] == $section) {
             // Check if there are rules:
             if ($rules['create'] == 0) {
                 // It is not allowed to create new items:
                 $children = current($context['oPage']->Context->getChildrenByName('ul'))->getChildrenByName('li');
                 foreach ($children as $key => $child) {
                     if (strpos($child->getValue(), __('Create New')) !== false) {
                         $value = $child->getValue();
                         $child->setValue('<span>' . strip_tags(str_replace(__('Create New'), '', $value)) . '</span><span class="create" />');
                     }
                 }
             }
             if ($rules['own_entries'] == 1 || $rules['edit'] == 0 || $rules['delete'] == 0 || $rules['use_filter'] == 1) {
                 // For only show entries created by this author:
                 // Get a list of entry id's created by this author:
                 $id_author = Administration::instance()->Author()->get('id');
                 if ($rules['own_entries'] == 1) {
                     // Only get the ID's of the current author to begin with:
                     $results = Symphony::Database()->fetch('SELECT `id` FROM `tbl_entries` WHERE `author_id` = ' . $id_author . ';');
                 } else {
                     // Get all the ID's:
                     $results = Symphony::Database()->fetch('SELECT `id` FROM `tbl_entries`;');
                 }
                 $ids = array();
                 foreach ($results as $result) {
                     $ids[] = $result['id'];
                 }
                 // Add or remove ID's from the filter:
                 if ($rules['use_filter'] == 1) {
                     $rule = explode(':', $rules['filter_rule']);
                     if (count($rule) == 2) {
                         // Valid filter, now get the ID's:
                         $filteredIDs = array();
                         $action = $rule[0];
                         $idsArr = explode(',', $rule[1]);
                         foreach ($idsArr as $idExpr) {
                             $a = explode('-', trim($idExpr));
                             if (count($a) == 1) {
                                 // Regular ID
                                 $filteredIDs[] = $a[0];
                             } elseif (count($a) == 2) {
                                 // Range
                                 $from = $a[0];
                                 $to = $a[1];
                                 if ($to >= $from) {
                                     for ($i = $from; $i <= $to; $i++) {
                                         $filteredIDs[] = $i;
                                     }
                                 }
                             }
                         }
                         switch ($action) {
                             case 'show':
                                 // Only show the given ids. Well that's easy:
                                 $ids = $filteredIDs;
                                 break;
                             case 'hide':
                                 // Remove the filtered ids from the ids-array:
                                 $ids = array_diff($ids, $filteredIDs);
                                 break;
                         }
                     }
                 }
                 // Now, check each table row:
                 $newContents = new XMLElement('div', null, $context['oPage']->Contents->getAttributes());
                 foreach ($context['oPage']->Contents->getChildren() as $contentsChild) {
                     if ($contentsChild->getName() == 'form') {
                         $newForm = new XMLElement('form', null, $contentsChild->getAttributes());
                         foreach ($contentsChild->getChildren() as $formChild) {
                             // only show entries created by this author, or which are allowed by the filter:
                             if ($formChild->getName() == 'table' && ($rules['own_entries'] == 1 || $rules['use_filter'] == 1)) {
                                 $newTable = new XMLElement('table', null, $formChild->getAttributes());
                                 foreach ($formChild->getChildren() as $tableChild) {
                                     if ($tableChild->getName() == 'tbody') {
                                         $newTableBody = new XMLElement('tbody', null, $tableChild->getAttributes());
                                         foreach ($tableChild->getChildren() as $tableRow) {
                                             // Check the ID:
                                             $id = explode('-', $tableRow->getAttribute('id'));
                                             if (in_array($id[1], $ids)) {
                                                 $newTableBody->appendChild($tableRow);
                                             }
                                         }
                                         $newTable->appendChild($newTableBody);
                                     } else {
                                         $newTable->appendChild($tableChild);
                                     }
                                 }
                                 $newForm->appendChild($newTable);
                             } elseif ($formChild->getName() == 'div' && $formChild->getAttribute('class') == 'actions') {
                                 // Only proceed if you can either edit or delete. Otherwise it would have much sense to have an apply-button here...
                                 if ($rules['delete'] == 1 || $rules['edit'] == 1) {
                                     $child = self::findChildren($formChild, 'select');
                                     $child = $child[0];
                                     $newSelect = new XMLElement('select', null, $child->getAttributes());
                                     foreach ($child->getChildren() as $selectChild) {
                                         // See if delete is allowed:
                                         if ($selectChild->getAttribute('value') == 'delete' && $rules['delete'] == 1) {
                                             $newSelect->appendChild($selectChild);
                                         } elseif ($selectChild->getName() == 'optgroup' && $rules['edit'] == 1) {
                                             // Check if the field that is edited is not a hidden field, because then editing is not allowed:
                                             $optGroupChildren = $selectChild->getChildren();
                                             if (!empty($optGroupChildren)) {
                                                 $value = $optGroupChildren[0]->getAttribute('value');
                                                 $a = explode('-', str_replace('toggle-', '', $value));
                                                 if (!in_array($a[0], $hiddenFields)) {
                                                     $newSelect->appendChild($selectChild);
                                                 }
                                             }
                                         } elseif ($selectChild->getName() == 'option' && $selectChild->getAttribute('value') != 'delete' && ($rules['edit'] == 1 || $rules['delete'] == 1)) {
                                             $newSelect->appendChild($selectChild);
                                         }
                                     }
                                     // if the new select has only one entry,
                                     // it is the dummy entry and we can discard it
                                     if ($newSelect->getNumberOfChildren() > 1) {
                                         self::replaceChild($formChild, $newSelect);
                                         $newForm->appendChild($formChild);
                                     }
                                 }
                             } else {
                                 $newForm->appendChild($formChild);
                             }
                         }
                         $newContents->appendChild($newForm);
                         $context['oPage']->Form = $newForm;
                     } else {
                         $newContents->appendChild($contentsChild);
                     }
                 }
                 $context['oPage']->Contents = $newContents;
             }
         }
     }
 }