/** * @param Tag $tag * @param array $locales * @return \Kris\LaravelFormBuilder\Form */ protected function getCreateTranslationForm(Tag $tag, array $locales) { $form = $this->form('Reactor\\Html\\Forms\\Tags\\CreateEditForm', ['method' => 'POST', 'url' => route('reactor.tags.translations.store', [$tag->getKey()])]); $form->addBefore('title', 'locale', 'select', ['choices' => $locales, 'inline' => true]); return $form; }
/** * Returns the collection of retrieved nodes by json response * * @param Request $request * @return Response */ public function searchJson(Request $request) { $tags = Tag::search($request->input('q'), 20, true)->groupBy('id')->limit(10)->get(); $locale = $request->input('locale', null); $results = []; foreach ($tags as $tag) { $results[$tag->getKey()] = ['title' => $tag->translate($locale, true)->title, 'translatable' => $tag->canHaveMoreTranslations(), 'editurl' => route('reactor.tags.edit', [$tag->getKey(), $tag->translate()->getKey()]), 'translateurl' => route('reactor.tags.translations.create', [$tag->getKey(), $tag->translate()->getKey()])]; } return response()->json($results); }
/** * Finds a tag by title or creates it * * @param string $title * @param string $locale * @return Tag */ public static function firstByTitleOrCreate($title, $locale = null) { $tag = Tag::whereTranslation('title', $title, $locale)->first(); if (is_null($tag)) { $attributes = compact('title'); if ($locale) { $attributes = [$locale => $attributes]; } $tag = Tag::create($attributes); } return $tag; }
/** * Shows the tag page * * @param string $tags * @param string $name * @return View */ public function getTag($tags, $name) { set_app_locale_with('tags', $tags); $tag = Tag::withName($name)->firstOrFail(); return view('tag', compact('tag')); }
/** * Stores a tag for the resource * * @param Request $request * @param int $id * @return response */ public function storeTag(Request $request, $id) { $this->authorize('EDIT_TAGS'); $node = $this->authorizeAndFindNode($id, null, 'EDIT_NODES', false); if ($node->isLocked()) { return response()->json(['type' => 'danger', 'message' => trans('nodes.node_is_locked')]); } $this->validate($request, ['title' => 'required|max:255']); $tag = Tag::firstByTitleOrCreate($request->input('title')); $node->attachTag($tag->getKey()); return response()->json(['type' => 'success', 'tag' => ['id' => $tag->getKey(), 'title' => $tag->title, 'translatable' => $tag->canHaveMoreTranslations(), 'editurl' => route('reactor.tags.edit', [$tag->getKey(), $tag->translate()->getKey()]), 'translateurl' => route('reactor.tags.translations.create', [$tag->getKey(), $tag->translate()->getKey()])]]); }