Exemple #1
0
 /**
  * "Дальше" рисуется всегда, если параметр $elements_count не передан
  *
  * @param int $elements_count
  * @return string
  */
 public static function renderPager($table_index_on_page, $elements_count = null)
 {
     $pager_needed = false;
     if (self::hasPrevPage($table_index_on_page)) {
         $pager_needed = true;
     }
     if (is_null($elements_count) || self::hasNextPage($table_index_on_page, $elements_count)) {
         $pager_needed = true;
     }
     if (!$pager_needed) {
         return '';
     }
     $html = '<ul class="pagination">';
     // TODO: looses existing get form
     $page_url = \OLOG\Url::getCurrentUrlNoGetForm();
     if (self::hasPrevPage($table_index_on_page)) {
         $html .= '<li><a href="' . $page_url . '?' . self::pageOffsetFormFieldName($table_index_on_page) . '=0&' . self::pageSizeFormFieldName($table_index_on_page) . '=' . self::getPageSize($table_index_on_page) . '"><span class="glyphicon glyphicon-home"></span> 0-' . self::getPageSize($table_index_on_page) . '</a></li>';
         $html .= '<li><a href="' . $page_url . '?' . self::pageOffsetFormFieldName($table_index_on_page) . '=' . self::getPrevPageStart($table_index_on_page) . '&' . self::pageSizeFormFieldName($table_index_on_page) . '=' . self::getPageSize($table_index_on_page) . '"><span class="glyphicon glyphicon-arrow-left"></span> ' . self::getPrevPageStart($table_index_on_page) . '-' . (self::getPrevPageStart($table_index_on_page) + self::getPageSize($table_index_on_page)) . '</a></li>';
     } else {
         $html .= '<li class="disabled"><a href="#"><span class="glyphicon glyphicon-home"></span></a></li>';
         $html .= '<li class="disabled"><a href="#"><span class="glyphicon glyphicon-arrow-left"></span></a></li>';
     }
     $html .= '<li class="active"><a href="#">' . self::getPageOffset($table_index_on_page) . '-' . (self::getPageOffset($table_index_on_page) + self::getPageSize($table_index_on_page)) . '</a></li>';
     if (!$elements_count || self::hasNextPage($table_index_on_page, $elements_count)) {
         $html .= '<li><a class="next-page" href="' . $page_url . '?' . self::pageOffsetFormFieldName($table_index_on_page) . '=' . self::getNextPageStart($table_index_on_page) . '&' . self::pageSizeFormFieldName($table_index_on_page) . '=' . self::getPageSize($table_index_on_page) . '">' . self::getNextPageStart($table_index_on_page) . '-' . (self::getNextPageStart($table_index_on_page) + self::getPageSize($table_index_on_page)) . ' <span class="glyphicon glyphicon-arrow-right"></span></a></a></li>';
     } else {
         $html .= '<li class="disabled"><a href="#"><span class="glyphicon glyphicon-arrow-right"></span></a></li>';
     }
     $html .= "</ul>";
     return $html;
 }
 public function html($obj)
 {
     Assert::assert($obj);
     $o = '';
     $o .= '<form style="display: inline;" method="post" action="' . \OLOG\Url::getCurrentUrl() . '">';
     $o .= Operations::operationCodeHiddenField(CRUDTable::OPERATION_DELETE_MODEL);
     $o .= '<input type="hidden" name="' . self::FIELD_CLASS_NAME . '" value="' . Sanitize::sanitizeAttrValue(get_class($obj)) . '">';
     $o .= '<input type="hidden" name="' . self::FIELD_OBJECT_ID . '" value="' . Sanitize::sanitizeAttrValue(CRUDFieldsAccess::getObjId($obj)) . '">';
     if ($this->redirect_after_delete_url != '') {
         $o .= '<input type="hidden" name="' . self::FIELD_REDIRECT_AFTER_DELETE_URL . '" value="' . Sanitize::sanitizeAttrValue($this->redirect_after_delete_url) . '">';
     }
     $o .= '<button class="' . $this->button_class_str . '" type="submit" onclick="return window.confirm(\'Delete?\');">' . $this->button_text . '</button>';
     $o .= '</form>';
     return $o;
 }
 /**
  * @param $obj InterfaceWeight
  * @return string
  */
 public function html($obj)
 {
     Assert::assert($obj);
     $o = '';
     $o .= '<form style="display: inline;" method="post" action="' . \OLOG\Url::getCurrentUrl() . '">';
     $o .= Operations::operationCodeHiddenField(CRUDTable::OPERATION_SWAP_MODEL_WEIGHT);
     $o .= '<input type="hidden" name="' . self::FORMFIELD_CONTEXT_FIELDS_NAME . '" value="' . Sanitize::sanitizeAttrValue(implode(',', array_keys($this->context_fields_arr))) . '">';
     foreach ($this->context_fields_arr as $context_field_name => $context_field_value) {
         $context_field_value = CRUDCompiler::compile($context_field_value, ['this' => $obj]);
         $o .= NullablePostFields::hiddenFieldHtml($context_field_name, $context_field_value);
     }
     $o .= '<input type="hidden" name="_class_name" value="' . Sanitize::sanitizeAttrValue(get_class($obj)) . '">';
     $o .= '<input type="hidden" name="_id" value="' . Sanitize::sanitizeAttrValue(CRUDFieldsAccess::getObjId($obj)) . '">';
     $o .= '<button class="' . $this->button_class_str . '" type="submit">' . $this->button_text . '</button>';
     $o .= '</form>';
     return $o;
 }
Exemple #4
0
    public static function passwordForm()
    {
        $html = '';
        $html .= '<h2>Изменение пароля</h2>';
        $html .= '<form class="form-horizontal" role="form" method="post" action="' . Url::getCurrentUrl() . '">';
        $html .= Operations::operationCodeHiddenField(self::OPERATION_SET_PASSWORD);
        $html .= '<div class="form-group ">
<label class="col-sm-4 text-right control-label">Новый пароль</label>
<div class="col-sm-8">
<input name="' . self::FIELD_NAME_PASSWORD . '" class="form-control" value="">
</div>
</div>';
        $html .= '<div class="row">
<div class="col-sm-8 col-sm-offset-4">
<button style="width: 100%" type="submit" class="btn btn-primary">Сохранить</button>
</div>
</div>';
        $html .= '</form>';
        return $html;
    }
Exemple #5
0
 public static function html($model_class_name, $create_form_html, $column_obj_arr, $parent_id_field_name, $order_by = '', $table_id = '1', $filters_arr = [], $col_with_padding_index = 0, $filters_position = CRUDTable::FILTERS_POSITION_NONE)
 {
     // TODO: придумать способ автогенерации table_id, который был бы уникальным, но при этом один и тот же когда одну таблицу запрашиваешь несколько раз
     CRUDTable::executeOperations();
     $objs_ids_arr = CRUDInternalTableObjectsSelector::getRecursiveObjIdsArrForClassName($model_class_name, $parent_id_field_name, $filters_arr, $order_by);
     //
     // вывод таблицы
     //
     $table_container_element_id = 'tableContainer_' . $table_id;
     // оборачиваем в отдельный div для выдачи только таблицы аяксом - иначе корневой элемент документа не будет доступен в jquery селекторах
     $html = '<div>';
     $html .= '<div class="' . $table_container_element_id . ' row">';
     if ($filters_position == CRUDTable::FILTERS_POSITION_LEFT) {
         $html .= '<div class="col-sm-4">';
         $html .= self::filtersHtml($filters_arr);
         $html .= '</div>';
         $html .= '<div class="col-sm-8">';
     } else {
         $html .= '<div class="col-sm-12">';
     }
     $html .= self::toolbarHtml($table_id, $create_form_html);
     if ($filters_position == CRUDTable::FILTERS_POSITION_TOP) {
         $html .= self::filtersHtml($filters_arr);
     }
     $html .= '<table class="table table-hover">';
     $html .= '<thead>';
     $html .= '<tr>';
     /** @var InterfaceCRUDTableColumn $column_obj */
     foreach ($column_obj_arr as $column_obj) {
         Assert::assert($column_obj instanceof InterfaceCRUDTableColumn);
         $html .= '<th>' . Sanitize::sanitizeTagContent($column_obj->getTitle()) . '</th>';
     }
     $html .= '</tr>';
     $html .= '</thead>';
     $html .= '<tbody>';
     foreach ($objs_ids_arr as $obj_data) {
         $obj_id = $obj_data['id'];
         $obj_obj = CRUDObjectLoader::createAndLoadObject($model_class_name, $obj_id);
         $html .= '<tr>';
         /** @var InterfaceCRUDTableColumn $column_obj */
         foreach ($column_obj_arr as $col_index => $column_obj) {
             Assert::assert($column_obj instanceof InterfaceCRUDTableColumn);
             /** @var InterfaceCRUDTableWidget $widget_obj */
             $widget_obj = $column_obj->getWidgetObj();
             Assert::assert($widget_obj);
             Assert::assert($widget_obj instanceof InterfaceCRUDTableWidget);
             $col_width_attr = '';
             if ($widget_obj instanceof CRUDTableWidgetDelete) {
                 $col_width_attr = ' width="1px" ';
             }
             if ($widget_obj instanceof CRUDTableWidgetWeight) {
                 $col_width_attr = ' width="1px" ';
             }
             $html .= '<td ' . $col_width_attr . '>';
             if ($col_index == $col_with_padding_index) {
                 $html .= '<div style="padding-left: ' . $obj_data['depth'] * 30 . 'px;">';
             }
             $html .= $widget_obj->html($obj_obj);
             if ($col_index == 0) {
                 $html .= '</div>';
             }
             $html .= '</td>';
         }
         $html .= '</tr>';
     }
     $html .= '</tbody>';
     $html .= '</table>';
     $html .= '</div>';
     $html .= '</div>';
     $html .= '</div>';
     // Загрузка скриптов
     $html .= CRUDTableScript::getHtml($table_container_element_id, Url::getCurrentUrlNoGetForm());
     return $html;
 }
Exemple #6
0
 /**
  * table_id - это идентификатор таблицы на странице, к которому привязываются все данные: имена полей формы и т.п.
  * @param $model_class_name
  * @param $create_form_html
  * @param $column_obj_arr
  * @param array $filters_arr
  * @param string $order_by
  * @return string
  */
 public static function html($model_class_name, $create_form_html, $column_obj_arr, $filters_arr = [], $order_by = '', $table_id = '', $filters_position = self::FILTERS_POSITION_NONE)
 {
     // TODO: придумать способ автогенерации table_id, который был бы уникальным, но при этом один и тот же когда одну таблицу запрашиваешь несколько раз
     self::executeOperations();
     //
     // вывод таблицы
     //
     $table_container_element_id = uniqid('tableContainer_');
     if ($table_id) {
         $table_container_element_id = $table_id;
     }
     // оборачиваем в отдельный div для выдачи только таблицы аяксом - иначе корневой элемент документа не будет доступен в jquery селекторах
     $html = HTML::div($table_container_element_id, '', function () use($model_class_name, $create_form_html, $column_obj_arr, $filters_arr, $order_by, $table_id, $filters_position) {
         echo '<div class="row">';
         if ($filters_position == self::FILTERS_POSITION_LEFT) {
             echo '<div class="col-sm-4">';
             echo self::filtersHtml($table_id, $filters_arr);
             echo '</div>';
         }
         $col_sm_class = '12';
         if ($filters_position == self::FILTERS_POSITION_LEFT || $filters_position == self::FILTERS_POSITION_RIGHT) {
             $col_sm_class = '8';
         }
         echo '<div class="col-sm-' . $col_sm_class . '">';
         echo self::toolbarHtml($table_id, $create_form_html, $filters_arr);
         if ($filters_position == self::FILTERS_POSITION_TOP) {
             echo self::filtersHtml($table_id, $filters_arr);
         }
         if ($filters_position == self::FILTERS_POSITION_INLINE) {
             echo self::filtersHtmlInline($table_id, $filters_arr);
         }
         echo '<table class="table table-hover">';
         /** @var InterfaceCRUDTableColumn $column_obj */
         echo '<thead><tr>';
         foreach ($column_obj_arr as $column_obj) {
             Assert::assert($column_obj instanceof InterfaceCRUDTableColumn);
             echo '<th>' . Sanitize::sanitizeTagContent($column_obj->getTitle()) . '</th>';
         }
         echo '</tr></thead>';
         echo '<tbody>';
         $objs_ids_arr = CRUDInternalTableObjectsSelector::getObjIdsArrForClassName($table_id, $model_class_name, $filters_arr, $order_by);
         foreach ($objs_ids_arr as $obj_id) {
             $obj_obj = CRUDObjectLoader::createAndLoadObject($model_class_name, $obj_id);
             /** @var InterfaceCRUDTableColumn $column_obj */
             echo '<tr>';
             foreach ($column_obj_arr as $column_obj) {
                 Assert::assert($column_obj instanceof InterfaceCRUDTableColumn);
                 /** @var InterfaceCRUDTableWidget $widget_obj */
                 $widget_obj = $column_obj->getWidgetObj();
                 Assert::assert($widget_obj);
                 Assert::assert($widget_obj instanceof InterfaceCRUDTableWidget);
                 $col_width_attr = '';
                 if ($widget_obj instanceof CRUDTableWidgetDelete) {
                     $col_width_attr = ' width="1px" ';
                 }
                 if ($widget_obj instanceof CRUDTableWidgetWeight) {
                     $col_width_attr = ' width="1px" ';
                 }
                 echo '<td ' . $col_width_attr . ' style="word-break: break-all;">';
                 echo $widget_obj->html($obj_obj);
                 echo '</td>';
             }
             echo '</tr>';
         }
         echo '</tbody>';
         echo '</table>';
         echo Pager::renderPager($table_id, count($objs_ids_arr));
         echo '</div>';
         if ($filters_position == self::FILTERS_POSITION_RIGHT) {
             echo '<div class="col-sm-4">';
             echo self::filtersHtml($table_id, $filters_arr);
             echo '</div>';
         }
         echo '</div>';
     });
     // Загрузка скриптов
     $html .= CRUDTableScript::getHtml($table_container_element_id, Url::getCurrentUrlNoGetForm());
     return $html;
 }
Exemple #7
0
 /**
  * ид объекта может быть пустым - тогда при сохранении формы создаст новый объект
  * @param $obj
  * @param $element_obj_arr
  * @param string $url_to_redirect_after_save
  * @param array $redirect_get_params_arr
  * @return string html-код формы редактирования
  * @throws \Exception
  */
 public static function html($obj, $element_obj_arr, $url_to_redirect_after_save = '', $redirect_get_params_arr = [], $form_id = '', $operation_code = self::OPERATION_SAVE_EDITOR_FORM, $hide_submit_button = false)
 {
     self::executeOperations($url_to_redirect_after_save, $redirect_get_params_arr);
     $form_element_id = 'formElem_' . uniqid();
     if ($form_id) {
         $form_element_id = $form_id;
     }
     $html = '';
     $html .= '<form id="' . $form_element_id . '" class="form-horizontal" role="form" method="post" action="' . Sanitize::sanitizeUrl(\OLOG\Url::getCurrentUrl()) . '">';
     $html .= Operations::operationCodeHiddenField($operation_code);
     $html .= '<input type="hidden" name="' . self::FIELD_CLASS_NAME . '" value="' . Sanitize::sanitizeAttrValue(get_class($obj)) . '">';
     $html .= '<input type="hidden" name="' . self::FIELD_OBJECT_ID . '" value="' . Sanitize::sanitizeAttrValue(CRUDFieldsAccess::getObjId($obj)) . '">';
     /** @var InterfaceCRUDFormRow $element_obj */
     foreach ($element_obj_arr as $element_obj) {
         Assert::assert($element_obj instanceof InterfaceCRUDFormRow);
         $html .= $element_obj->html($obj);
     }
     $html .= '<div class="row">';
     $html .= '<div class="col-sm-8 col-sm-offset-4">';
     if (!$hide_submit_button) {
         $html .= '<button style="width: 100%" type="submit" class="btn btn-primary">Сохранить</button>';
     }
     $html .= '</div>';
     $html .= '</div>';
     $html .= '</form>';
     // Загрузка скриптов
     $html .= CRUDFormScript::getHtml($form_element_id);
     return $html;
 }