コード例 #1
0
 public function postAjaxCheckDicvalSlugUnique()
 {
     $input = Input::all();
     #Helper::dd(Input::all());
     $json_request = array('status' => FALSE, 'responseText' => '');
     $dic_id = Input::get('_dic_id');
     $dic = Dic::find($dic_id);
     /**
      * Если словарь не найден - сообщаем об ошибке
      */
     if (!is_object($dic)) {
         $json_request['responseText'] = 'Вы пытаетесь добавить запись в несуществующую сущность';
         return Response::json($json_request, 200);
     }
     $id = Input::get('_id');
     $slug = trim(Input::get('slug'));
     $name = Input::get('name');
     $element = new DicVal();
     if ($id) {
         $element = DicVal::find($id);
     }
     if (!is_object($element)) {
         $element = new DicVal();
     }
     switch ((int) $dic->make_slug_from_name) {
         case 1:
             $input['slug'] = Helper::translit($input['name']);
             break;
         case 2:
             if (!$dic->hide_slug && !@$input['slug']) {
                 $input['slug'] = Helper::translit($input['name']);
             }
             break;
         case 3:
             if ($dic->hide_slug && $element->slug == '') {
                 $input['slug'] = Helper::translit($input['name']);
             }
             break;
         case 4:
             $input['slug'] = Helper::translit($input['name'], false);
             break;
         case 5:
             if (!$dic->hide_slug && !@$input['slug']) {
                 $input['slug'] = Helper::translit($input['name'], false);
             }
             break;
         case 6:
             if ($dic->hide_slug && $element->slug == '') {
                 $input['slug'] = Helper::translit($input['name'], false);
             }
             break;
         case 7:
             $input['slug'] = $input['name'];
             break;
         case 8:
             if (!$dic->hide_slug && !@$input['slug']) {
                 $input['slug'] = $input['name'];
             }
             break;
         case 9:
             if ($dic->hide_slug && $element->slug == '') {
                 $input['slug'] = $input['name'];
             }
             break;
     }
     $new_slug = $input['slug'];
     $json_request['new_slug'] = $new_slug;
     #Helper::d($new_slug);
     #Helper::tad($input);
     /**
      * Ищем записи в текущем словаре с новым системным именем
      */
     $dicval = DicVal::where('slug', $new_slug)->where('dic_id', $dic_id);
     /**
      * Если мы редактируем существующую запись - исключаем ее ID из проверки
      */
     if ($element->id) {
         $dicval = $dicval->where('id', '!=', $element->id);
     }
     $dicval = $dicval->first();
     #Helper::ta($dicval);
     if (is_object($dicval)) {
         $json_request['responseText'] = 'Запись с таким системным именем уже существует';
         $json_request['also_exists'] = $dicval->id;
     } else {
         $json_request['status'] = TRUE;
     }
     return Response::json($json_request, 200);
 }
コード例 #2
0
ファイル: DicVal.model.php プロジェクト: Grapheme/zemaktiv
 /**
  * !!! NEED TO ADD RELATED_DICVALS SUPPORT !!!
  *
  * @param $dic_slug
  * @param $dicval_id
  * @param $array
  *
  * @return bool|\Illuminate\Support\Collection|null|static
  */
 public static function refresh($dic_slug, $dicval_id, $array)
 {
     #Helper::d($dic_slug);
     #Helper::d($array);
     ## Find DIC
     $dic = Dic::where('slug', $dic_slug)->first();
     if (!is_object($dic)) {
         return false;
     }
     ## Find dicval
     $dicval = DicVal::find($dicval_id);
     if (!is_object($dicval)) {
         return false;
     }
     if ($dicval->dic_id != $dic->id) {
         $dicval->dic_id = $dic->id;
     }
     if (isset($array['slug'])) {
         $dicval->slug = $array['slug'];
     }
     if (isset($array['name'])) {
         $dicval->name = $array['name'];
     }
     $dicval->save();
     ## UPDATE FIELDS
     if (@isset($array['fields']) && is_array($array['fields']) && count($array['fields'])) {
         #$fields = new Collection();
         foreach ($array['fields'] as $key => $value) {
             $dicval_field_search_array = array('dicval_id' => $dicval->id, 'key' => $key);
             if (is_array($value) && isset($value['language'])) {
                 $dicval_field_search_array['language'] = @$value['language'] ?: NULL;
             }
             $dicval_field = DicFieldVal::firstOrNew($dicval_field_search_array);
             $dicval_field->value = is_array($value) ? @$value['value'] : $value;
             $dicval_field->save();
             #$fields[] = $dicval_field;
         }
         #$dicval->relations['fields'] = $fields;
     }
     ## CREATE FIELDS_I18N
     if (@isset($array['fields_i18n']) && is_array($array['fields_i18n']) && count($array['fields_i18n'])) {
         #$fields_i18n = new Collection();
         foreach ($array['fields_i18n'] as $locale_sign => $fields) {
             if (!@is_array($fields) || !@count($fields)) {
                 continue;
             }
             #$temp = new Collection();
             foreach ($fields as $key => $value) {
                 $dicval_field_search_array = array('dicval_id' => $dicval->id, 'language' => $locale_sign, 'key' => $key);
                 $dicval_field = DicFieldVal::firstOrNew($dicval_field_search_array);
                 $dicval_field->value = is_array($value) ? @$value['value'] : $value;
                 $dicval_field->save();
                 #$temp[] = $dicval_field_i18n;
             }
             #$fields_i18n[$locale_sign] = $temp;
         }
         #$dicval->relations['fields_i18n'] = $fields_i18n;
     }
     ## CREATE TEXT FIELDS
     if (@isset($array['textfields']) && is_array($array['textfields']) && count($array['textfields'])) {
         #$textfields = new Collection();
         foreach ($array['textfields'] as $key => $value) {
             $dicval_field_search_array = array('dicval_id' => $dicval->id, 'key' => $key);
             if (is_array($value) && isset($value['language'])) {
                 $dicval_field_search_array['language'] = @$value['language'] ?: NULL;
             }
             $dicval_field = DicTextFieldVal::firstOrNew($dicval_field_search_array);
             $dicval_field->value = is_array($value) ? @$value['value'] : $value;
             $dicval_field->save();
             #$textfields[] = $dicval_textfield;
         }
         #$dicval->relations['textfields'] = $textfields;
     }
     ## CREATE TEXT FIELDS_I18N
     if (@isset($array['textfields_i18n']) && is_array($array['textfields_i18n']) && count($array['textfields_i18n'])) {
         #$textfields_i18n = new Collection();
         foreach ($array['textfields_i18n'] as $locale_sign => $textfields) {
             if (!@is_array($textfields) || !@count($textfields)) {
                 continue;
             }
             #$temp = new Collection();
             foreach ($textfields as $key => $value) {
                 $dicval_field_search_array = array('dicval_id' => $dicval->id, 'language' => $locale_sign, 'key' => $key);
                 $dicval_field = DicTextFieldVal::firstOrNew($dicval_field_search_array);
                 $dicval_field->value = is_array($value) ? @$value['value'] : $value;
                 $dicval_field->save();
                 #$temp[] = $dicval_textfield_i18n;
             }
             #$textfields_i18n[$locale_sign] = $temp;
         }
         #$dicval->relations['textfields_i18n'] = $textfields_i18n;
     }
     ## CREATE META
     if (@isset($array['meta']) && is_array($array['meta']) && count($array['meta'])) {
         #$metas = new Collection();
         foreach ($array['meta'] as $locale_sign => $fields) {
             if (!@is_array($fields) || !@count($fields)) {
                 continue;
             }
             $temp = new Collection();
             foreach ($fields as $key => $value) {
                 $dicval_field_search_array = array('dicval_id' => $dicval->id, 'language' => $locale_sign);
                 $dicval_field = DicValMeta::firstOrNew($dicval_field_search_array);
                 $dicval_field->name = is_array($value) ? @$value['name'] : $value;
                 $dicval_field->save();
                 #$temp[] = $dicval_meta;
             }
             #$metas[$locale_sign] = $temp;
         }
         #$dicval->relations['metas'] = $metas;
     }
     $dicval->load('allfields', 'alltextfields', 'metas');
     ## RETURN DICVAL
     return $dicval;
 }
コード例 #3
0
ファイル: lessons.php プロジェクト: Grapheme/ikra
    $dics = Dic::modifyKeys($dics, 'slug');
    $lists = Dic::makeLists($dics, 'values', 'name', 'id');
    #Helper::tad($lists);
    
    #Helper::tad($dics);
    if (isset($lists['course']) && count($lists['course'])) {
        foreach ($lists['course'] as $id => $name) {
            $lists['course'][$id] = $name . ' (' . $dics['course'][$id]->name . ')';
        }
    }
    #Helper::tad($lists);
    */
    /**
     * Добавляем доп. элементы в меню, в данном случае: выпадающие поля для организации фильтрации записей по их свойствам
     */
    #$menus[] = Helper::getDicValMenuDropdown('course_id', 'Все курсы', $lists['course'], $dic);
    #$menus[] = Helper::getDicValMenuDropdown('format_id', 'Все форматы', $lists['format'], $dic);
    if (null != ($cid = Input::get('filter.fields.course_id')) && null !== ($course = DicVal::find($cid))) {
        #$course->load('fields');
        #$menus[] = array('raw' => '<strong>' . $course->name . '</strong>');
        $url = action('entity.edit', array('dic_id' => 'course', $course->id));
        $menus[] = ['link' => $url, 'title' => '<i class="fa fa-arrow-circle-left"></i> К курсу', 'class' => 'btn btn-default'];
        $url = action('entity.index', array('dic_id' => $dic->slug)) . '?' . urlencode('filter[fields][course_id]') . '=' . $course->id;
        $menus[] = ['link' => $url, 'title' => $course->name, 'class' => 'btn btn-default'];
    }
    return $menus;
}, 'hooks' => array('before_index_view' => function ($dic, &$dicvals) {
    #$dicvals = DicLib::loadImages($dicvals, ['image']);
}, 'after_store_update_destroy_order' => function ($dic = NULL, $dicval = NULL) {
    Cache::forget('dic_' . $dic->slug);
}), 'disable_listing_without_filter' => ['fields' => ['course_id'], 'message' => 'Сначала выберите курс.']);