Travel Guide Frontend Backend
This commit is contained in:
parent
e6cc042aee
commit
0857a34766
681 changed files with 6680 additions and 1689 deletions
|
|
@ -56,6 +56,7 @@ class CMSContentController extends Controller
|
|||
if($tree_node){
|
||||
$lvl ++;
|
||||
$ret['title'] = $tree_node->title;
|
||||
$ret['country_id'] = null;
|
||||
$ret['description'] = $tree_node->description;;
|
||||
$url = $url."/".$tree_node->identifier;
|
||||
$ret['bread_crumb'][$lvl] = [
|
||||
|
|
@ -63,6 +64,7 @@ class CMSContentController extends Controller
|
|||
'url' => $url,
|
||||
];
|
||||
$ret['nodes'][$lvl] = $tree_node->toArray();
|
||||
$ret['nodes_active'] = $tree_node->toArray();
|
||||
}else{
|
||||
return response()->json(['error' => 'no-node'], $this->successStatus);
|
||||
}
|
||||
|
|
@ -73,30 +75,54 @@ class CMSContentController extends Controller
|
|||
if($tree_node->iq_content_sites->count()){
|
||||
foreach ($tree_node->iq_content_sites as $iq_content_site){
|
||||
if(isset($iq_content_site->travel_guide) && $iq_content_site->travel_guide && $iq_content_site->travel_guide->active){
|
||||
$key = ($iq_content_site->travel_guide->scope -1) *-1;
|
||||
$ret['sites'][$key] = $iq_content_site->travel_guide->toArray();
|
||||
/*if(!$travel_guide){
|
||||
//$travel_guide = $iq_content_site->travel_guide;
|
||||
}*/
|
||||
if($iq_content_site->travel_guide->country_id !== null){
|
||||
$ret['country_id'] = $iq_content_site->travel_guide->country_id;
|
||||
|
||||
}
|
||||
//$key = ($iq_content_site->travel_guide->scope -1) *-1;
|
||||
//$ret['sites'][$key] = $iq_content_site->travel_guide->toArray();
|
||||
if($iq_content_site->identifier){
|
||||
$ret['sites'][$iq_content_site->identifier] = [
|
||||
'name' => $iq_content_site->travel_guide->name,
|
||||
'full_text' => $iq_content_site->travel_guide->full_text
|
||||
];
|
||||
|
||||
if($iq_content_site->travel_guide->author){
|
||||
$ret['sites'][$iq_content_site->identifier]['author_name'] = $iq_content_site->travel_guide->author->name;
|
||||
$ret['sites'][$iq_content_site->identifier]['author_description'] = $iq_content_site->travel_guide->author->description;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if(isset($ret['sites'])){
|
||||
ksort($ret['sites']);
|
||||
$ret['sites'] = array_values($ret['sites']);
|
||||
}
|
||||
//faq
|
||||
if($tree_node->iq_content_faqs->count()){
|
||||
foreach ($tree_node->iq_content_faqs as $iq_content_faq){
|
||||
if($iq_content_faq->answer_question && $iq_content_faq->answer_question->active){
|
||||
$ret['faqs'][] = [
|
||||
'id' => $iq_content_faq->answer_question->id,
|
||||
'question' => $iq_content_faq->answer_question->question,
|
||||
'answer_text' => $iq_content_faq->answer_question->answer_text
|
||||
];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
//children
|
||||
if($tree_node->iq_content_tree_node_childs->count()){
|
||||
foreach ($tree_node->iq_content_tree_node_childs as $iq_content_tree_node_child){
|
||||
if($iq_content_tree_node_child->active){
|
||||
$travel_guide = $iq_content_tree_node_child->iq_content_site_first();
|
||||
|
||||
$description = $iq_content_tree_node_child->description;
|
||||
if(!$description){
|
||||
$description = $travel_guide ? $travel_guide->meta_description : '';
|
||||
}
|
||||
$ret['children'][] = [
|
||||
'name' => $iq_content_tree_node_child->name,
|
||||
'identifier' => $iq_content_tree_node_child->identifier,
|
||||
'url' => "/".$iq_content_tree_node_child->getUri(),
|
||||
'box_image_url' => $travel_guide ? $travel_guide->box_image_url : '',
|
||||
'description' => $travel_guide ? $travel_guide->meta_description : '',
|
||||
'box_image_url' => isset($iq_content_tree_node_child->image['thumb_url']) ? $iq_content_tree_node_child->image['thumb_url'] : '',
|
||||
'description' => $description,
|
||||
'active' => $travel_guide ? $travel_guide->active : false,
|
||||
];
|
||||
}
|
||||
|
|
|
|||
138
app/Http/Controllers/CMS/CMSAnswerQuestionController.php
Executable file
138
app/Http/Controllers/CMS/CMSAnswerQuestionController.php
Executable file
|
|
@ -0,0 +1,138 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\CMS;
|
||||
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\AnswerQuestion;
|
||||
use App\Models\IQContentCategory;
|
||||
use IqContent\LaravelFilemanager\Lfm;
|
||||
use Request;
|
||||
use Validator;
|
||||
|
||||
|
||||
class CMSAnswerQuestionController extends Controller
|
||||
{
|
||||
|
||||
/*
|
||||
* Create a new controller instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected $identifier_options;
|
||||
|
||||
public function __construct()
|
||||
{
|
||||
$this->identifier_options = IQContentCategory::where('identifier', 'faq')
|
||||
->where('active', true)
|
||||
->orderBy('pos', 'ASC')
|
||||
->get()->pluck('name','id');
|
||||
}
|
||||
|
||||
|
||||
public function index()
|
||||
{
|
||||
$data = [
|
||||
'models' => AnswerQuestion::all(),
|
||||
'identifier_options' => $this->identifier_options,
|
||||
];
|
||||
return view('cms.answer_question.index', $data);
|
||||
|
||||
}
|
||||
|
||||
public function detail($id)
|
||||
{
|
||||
if($id === "new") {
|
||||
$model = new AnswerQuestion();
|
||||
$id = 'new';
|
||||
$model->status = 1;
|
||||
|
||||
}else{
|
||||
$model = AnswerQuestion::findOrFail($id);
|
||||
$id = $model->id;
|
||||
}
|
||||
$data = [
|
||||
'model' => $model,
|
||||
'id' => $id,
|
||||
'identifier_options' => $this->identifier_options,
|
||||
'lfm_helper' => app(Lfm::class),
|
||||
|
||||
];
|
||||
return view('cms.answer_question.detail', $data);
|
||||
}
|
||||
|
||||
public function store($id)
|
||||
{
|
||||
$data = Request::all();
|
||||
|
||||
$rules = array(
|
||||
'question' => 'required',
|
||||
);
|
||||
$validator = Validator::make(Request::all(), $rules);
|
||||
|
||||
if ($validator->fails()) {
|
||||
return back()->withErrors($validator);
|
||||
}
|
||||
|
||||
if($id === "new") {
|
||||
$model = AnswerQuestion::create($data);
|
||||
}else{
|
||||
$model = AnswerQuestion::findOrFail($data['id']);
|
||||
$model->fill($data);
|
||||
$model->save();
|
||||
}
|
||||
\Session()->flash('alert-save', '1');
|
||||
return redirect(route('cms_answer_question_detail', [$model->id]));
|
||||
}
|
||||
|
||||
|
||||
public function delete($id){
|
||||
$model = AnswerQuestion::findOrFail($id);
|
||||
//TODO
|
||||
//check for use?
|
||||
|
||||
// die("check for use");
|
||||
$model->delete();
|
||||
\Session()->flash('alert-success', __('Eintrag gelöscht'));
|
||||
return redirect(route('cms_answer_question'));
|
||||
}
|
||||
|
||||
|
||||
public function datatable(){
|
||||
|
||||
$query = AnswerQuestion::with('iq_content_category')->select('answer_questions.*');
|
||||
|
||||
if(Request::get('filter_identifier_options') != ""){
|
||||
$query->where('i_q_content_category_id', '=', Request::get('filter_identifier_options'));
|
||||
}
|
||||
|
||||
return \DataTables::eloquent($query)
|
||||
|
||||
->addColumn('action_edit', function (AnswerQuestion $faq) {
|
||||
return '<a href="'.route('cms_answer_question_detail', [$faq->id]).'" class="btn icon-btn btn-sm btn-primary"><span class="fa fa-edit"></span></a>';
|
||||
})
|
||||
->addColumn('category', function (AnswerQuestion $faq) {
|
||||
return $faq->iq_content_category ? $faq->iq_content_category->name : '';
|
||||
})
|
||||
->addColumn('created_at', function (AnswerQuestion $faq) {
|
||||
return $faq->created_at->format('d.m.Y');
|
||||
})
|
||||
->addColumn('active', function (AnswerQuestion $faq) {
|
||||
return get_active_badge($faq->active);
|
||||
})
|
||||
->addColumn('delete', function (AnswerQuestion $faq) {
|
||||
return '<a class="text-danger" href="'.route('cms_answer_question_delete', [$faq->id]).'" onclick="return confirm(\'Wirklich löschen?\');"><i class="fa fa-trash-alt"></i></a>';
|
||||
})
|
||||
|
||||
->orderColumn('action_edit', 'id $1')
|
||||
->orderColumn('category', 'i_q_content_category_id $1')
|
||||
->orderColumn('created_at', 'created_at $1')
|
||||
->orderColumn('active', 'active $1')
|
||||
|
||||
|
||||
->rawColumns(['action_edit', 'active', 'delete'])
|
||||
->make(true);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -20,11 +20,7 @@ class CMSFeedbackController extends Controller
|
|||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* Show the application dashboard.
|
||||
*
|
||||
* @return \Illuminate\Http\Response
|
||||
*/
|
||||
|
||||
public function index()
|
||||
{
|
||||
$data = [
|
||||
|
|
@ -36,7 +32,7 @@ class CMSFeedbackController extends Controller
|
|||
|
||||
public function detail($id)
|
||||
{
|
||||
if($id == "new") {
|
||||
if($id === "new") {
|
||||
$feedback = new Feedback();
|
||||
$id = 'new';
|
||||
$feedback->status = 1;
|
||||
|
|
@ -57,7 +53,7 @@ class CMSFeedbackController extends Controller
|
|||
public function store($id)
|
||||
{
|
||||
$data = Request::all();
|
||||
if($id == "new") {
|
||||
if($id === "new") {
|
||||
|
||||
if(!isset($data['feedback_parent']) && !$data['feedback_parent']) {
|
||||
abort(404);
|
||||
|
|
|
|||
|
|
@ -91,10 +91,18 @@ class ContentModalController extends Controller
|
|||
case 'tree-site-content' :
|
||||
return $this->actionTreeSiteContent($data);
|
||||
break;
|
||||
case 'add-answer-question' :
|
||||
return $this->actionAddAnswerQuestion($data);
|
||||
break;
|
||||
|
||||
case 'guide-tree-site' :
|
||||
return $this->actionGuideTreeSite($data);
|
||||
break;
|
||||
case 'site-travel-identifier' :
|
||||
return $this->actionSiteTravelIdentifier($data);
|
||||
break;
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
@ -172,7 +180,7 @@ class ContentModalController extends Controller
|
|||
*/
|
||||
private function actionArea($data)
|
||||
{
|
||||
if($data['id'] == "add"){
|
||||
if($data['id'] === "add"){
|
||||
$value = new IQContentArea();
|
||||
$value->id = "add";
|
||||
$value->active = true;
|
||||
|
|
@ -189,7 +197,7 @@ class ContentModalController extends Controller
|
|||
private function actionAreaSection($data)
|
||||
{
|
||||
$model = IQContentArea::findOrFail($data['request']['area_id']);
|
||||
if($data['id'] == "add"){
|
||||
if($data['id'] === "add"){
|
||||
$value = new IQContentAreaSection();
|
||||
$value->id = "add";
|
||||
$value->active = true;
|
||||
|
|
@ -209,7 +217,7 @@ class ContentModalController extends Controller
|
|||
*/
|
||||
private function actionSiteContent($data)
|
||||
{
|
||||
if($data['id'] == "add"){
|
||||
if($data['id'] === "add"){
|
||||
$value = new IQContentSite();
|
||||
$value->id = "add";
|
||||
$value->active = true;
|
||||
|
|
@ -228,7 +236,7 @@ class ContentModalController extends Controller
|
|||
*/
|
||||
private function actionTreeContent($data)
|
||||
{
|
||||
if($data['id'] == "add"){
|
||||
if($data['id'] === "add"){
|
||||
$value = new IQContentTree();
|
||||
$value->id = "add";
|
||||
$value->active = true;
|
||||
|
|
@ -245,7 +253,7 @@ class ContentModalController extends Controller
|
|||
{
|
||||
$model = IQContentTree::findOrFail($data['request']['tree_id']);
|
||||
|
||||
if($data['id'] == "add"){
|
||||
if($data['id'] === "add"){
|
||||
$value = new IQContentTreeNode();
|
||||
$value->id = "add";
|
||||
$value->active = true;
|
||||
|
|
@ -261,15 +269,15 @@ class ContentModalController extends Controller
|
|||
|
||||
private function actionTreeSiteContent($data)
|
||||
{
|
||||
if($data['id'] == "add"){
|
||||
if($data['id'] === "add"){
|
||||
$value = new Collection();
|
||||
$value->active = true;
|
||||
$value->id = 'add';
|
||||
$data['title'] = "Seite hinzufügen";
|
||||
|
||||
}else {
|
||||
$value = new Collection();
|
||||
$data['title'] = "Edit Site: ".$value->name;
|
||||
/* $value = new Collection();
|
||||
$data['title'] = "Edit Site: ".$value->name;*/
|
||||
}
|
||||
|
||||
$url = route('iq_content_tree_detail', [$data['request']['tree_id'], $data['request']['tree_node_id']]);
|
||||
|
|
@ -278,6 +286,25 @@ class ContentModalController extends Controller
|
|||
return view("iq.modal.site", compact('data','value', 'url') )->render();
|
||||
}
|
||||
|
||||
private function actionAddAnswerQuestion($data)
|
||||
{
|
||||
if($data['id'] === "add"){
|
||||
$value = new Collection();
|
||||
$value->active = true;
|
||||
$value->id = 'add';
|
||||
$data['title'] = "Frage & Antwort hinzufügen";
|
||||
|
||||
}else {
|
||||
/* $value = new Collection();
|
||||
$data['title'] = "Edit Eintrag: ".$value->name; */
|
||||
}
|
||||
|
||||
$url = route('iq_content_tree_detail', [$data['request']['tree_id'], $data['request']['tree_node_id']]);
|
||||
|
||||
$data['request'] = false;
|
||||
return view("iq.modal.faq", compact('data','value', 'url') )->render();
|
||||
}
|
||||
|
||||
private function actionGuideTreeSite($data)
|
||||
{
|
||||
if(!isset($data['tree_id'])){
|
||||
|
|
@ -287,8 +314,6 @@ class ContentModalController extends Controller
|
|||
$data['travel_guide_id'] = $data['request']['travel_guide_id'];
|
||||
$data['title'] = "Tree zuordnen";
|
||||
$url = route('cms_travel_guide_detail', [$data['request']['travel_guide_id']]);
|
||||
|
||||
|
||||
}else {
|
||||
$value = new Collection();
|
||||
$value->active = true;
|
||||
|
|
@ -300,16 +325,35 @@ class ContentModalController extends Controller
|
|||
|
||||
}
|
||||
$url = route('iq_content_tree_detail', [$data['tree_id']]);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
$data['request'] = false;
|
||||
return view("iq.modal.tree_site", compact('data','value', 'url') )->render();
|
||||
}
|
||||
|
||||
private function actionSiteTravelIdentifier($data)
|
||||
{
|
||||
$value = IQContentSite::find($data['id']);
|
||||
|
||||
$node = $value->iq_content_tree_node;
|
||||
|
||||
$select_data = \App\Models\IQContentSite::$travelTypes;
|
||||
|
||||
foreach ($node->iq_content_sites as $site){
|
||||
if($site->identifier !== null && $site->identifier !== ''){
|
||||
if(isset($select_data[$site->identifier])) {
|
||||
unset($select_data[$site->identifier]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$data['title'] = " Zuordnung Seite";
|
||||
$url = route('iq_content_tree_detail', [$data['request']['tree_id'], $data['request']['tree_node_id']]);
|
||||
$data['request'] = false;
|
||||
return view("iq.modal.travel-identifier", compact('data','value', 'url', 'select_data') )->render();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -4,6 +4,8 @@ namespace App\Http\Controllers\IQ;
|
|||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
use App\Models\AnswerQuestion;
|
||||
use App\Models\IQContentFaq;
|
||||
use App\Models\IQContentSite;
|
||||
use App\Models\IQContentTree;
|
||||
use App\Models\IQContentTreeNode;
|
||||
|
|
@ -11,6 +13,7 @@ use App\Models\TravelGuide;
|
|||
use App\Models\TravelPageGuide;
|
||||
use App\Repositories\IQ\ContentSiteRepository;
|
||||
use Illuminate\Support\Collection;
|
||||
use IqContent\LaravelFilemanager\Lfm;
|
||||
use Request;
|
||||
use Validator;
|
||||
|
||||
|
|
@ -45,7 +48,6 @@ class ContentTreeController extends Controller
|
|||
$tree_node = IQContentTreeNode::find($node_id);
|
||||
$area_section = false;
|
||||
$site_fields = false;
|
||||
|
||||
if($section_id){
|
||||
/*
|
||||
* $area_section = IQContentAreaSection::findOrFail($area_section_id);
|
||||
|
|
@ -58,6 +60,7 @@ class ContentTreeController extends Controller
|
|||
'tree_node' => $tree_node,
|
||||
'id' => $id,
|
||||
'section' => false,
|
||||
'lfm_helper' => app(Lfm::class),
|
||||
|
||||
];
|
||||
return view('cms.travel_guide.tree-detail', $data);
|
||||
|
|
@ -213,6 +216,7 @@ class ContentTreeController extends Controller
|
|||
\Session()->flash('alert-save', '1');
|
||||
return redirect(route('iq_content_tree_detail', [$model->id]));
|
||||
break;
|
||||
|
||||
case 'tree-node' :
|
||||
$model = IQContentTree::findOrFail($id);
|
||||
$model->updated_at = now();
|
||||
|
|
@ -228,15 +232,8 @@ class ContentTreeController extends Controller
|
|||
\Session()->flash('alert-save', '1');
|
||||
return redirect(route('iq_content_tree_detail', [$model->id, $tree_node->id]));
|
||||
break;
|
||||
case 'tree-site-content' :
|
||||
/* if($data['id'] == 0){
|
||||
$contentSite = IQContentSite::create($data);
|
||||
}else{
|
||||
$contentSite = IQContentSite::find($data['id']);
|
||||
$contentSite->fill($data);
|
||||
$contentSite->save();
|
||||
}*/
|
||||
|
||||
case 'tree-site-content' :
|
||||
$model = IQContentTree::findOrFail($id);
|
||||
$model->updated_at = now();
|
||||
$model->save();
|
||||
|
|
@ -253,9 +250,24 @@ class ContentTreeController extends Controller
|
|||
return redirect(route('iq_content_tree_detail', [$id, $node_id]));
|
||||
break;
|
||||
|
||||
case 'add-answer-question' :
|
||||
$model = IQContentTree::findOrFail($id);
|
||||
$model->updated_at = now();
|
||||
$model->save();
|
||||
|
||||
$tree_node = IQContentTreeNode::findOrFail($node_id);
|
||||
$faq = AnswerQuestion::findOrFail($data['modal_faq_id']);
|
||||
|
||||
if(IQContentFaq::whereTreeNodeId($tree_node->id)->whereFaqId($faq->id)->count() == 0){
|
||||
IQContentFaq::create(['tree_node_id'=>$tree_node->id, 'faq_id'=>$faq->id]);
|
||||
\Session()->flash('alert-save', '1');
|
||||
}else{
|
||||
\Session()->flash('alert-error', 'Eintrag schon vorhanden');
|
||||
}
|
||||
return redirect(route('iq_content_tree_detail', [$id, $node_id]));
|
||||
break;
|
||||
|
||||
case 'guide-tree-site' :
|
||||
|
||||
$model = IQContentTree::findOrFail($id);
|
||||
$model->updated_at = now();
|
||||
$model->save();
|
||||
|
|
@ -271,7 +283,20 @@ class ContentTreeController extends Controller
|
|||
}
|
||||
return redirect(route('cms_travel_guide_detail', [$travel_guide->id]));
|
||||
break;
|
||||
case 'site-travel-identifier' :
|
||||
$model = IQContentTree::findOrFail($id);
|
||||
$model->updated_at = now();
|
||||
$model->save();
|
||||
|
||||
$tree_node = IQContentTreeNode::findOrFail($node_id);
|
||||
|
||||
$content_site = IQContentSite::findOrFail($data['id']);
|
||||
$content_site->identifier = $data['identifier'];
|
||||
$content_site->save();
|
||||
|
||||
\Session()->flash('alert-save', '1');
|
||||
return redirect(route('iq_content_tree_detail', [$id, $node_id]));
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -313,18 +338,29 @@ class ContentTreeController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
public function removeSite($id, $node_id, $travel_guide_id, $r=false){
|
||||
$model = IQContentTree::findOrFail($id);
|
||||
public function remove($action, $id, $node_id, $remove_id, $r='tree'){
|
||||
$tree = IQContentTree::findOrFail($id);
|
||||
$tree_node = IQContentTreeNode::findOrFail($node_id);
|
||||
$tavel_guide = TravelGuide::findOrFail($travel_guide_id);
|
||||
|
||||
$iq_content_site = IQContentSite::whereTreeNodeId($node_id)->whereTravelGuideId($travel_guide_id)->first();
|
||||
$iq_content_site->delete();
|
||||
\Session()->flash('alert-success', __('Seite aus Tree entfernt.'));
|
||||
if($r == "g"){
|
||||
return redirect(route('cms_travel_guide_detail', [$travel_guide_id]));
|
||||
if($action === 'guide'){
|
||||
$model = TravelGuide::findOrFail($remove_id);
|
||||
$iq_content_site = IQContentSite::whereTreeNodeId($tree_node->id)->whereTravelGuideId($model->id)->first();
|
||||
$iq_content_site->delete();
|
||||
\Session()->flash('alert-success', __('Seite aus Tree entfernt.'));
|
||||
}
|
||||
return redirect(route('iq_content_tree_detail', [$id, $node_id]));
|
||||
|
||||
if($action === 'faq'){
|
||||
$model = AnswerQuestion::findOrFail($remove_id);
|
||||
$iq_content_site = IQContentFaq::whereTreeNodeId($tree_node->id)->whereFaqId($model->id)->first();
|
||||
$iq_content_site->delete();
|
||||
\Session()->flash('alert-success', __('Seite aus Tree entfernt.'));
|
||||
}
|
||||
|
||||
if($r === "guide"){
|
||||
return redirect(route('cms_travel_guide_detail', [$model->id]));
|
||||
}
|
||||
|
||||
return redirect(route('iq_content_tree_detail', [$tree->id, $tree_node->id]));
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,6 +3,7 @@
|
|||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\GeneralFile;
|
||||
use App\Models\IQContentSite;
|
||||
use App\Models\ServiceProviderService;
|
||||
use App\Models\TravelCompanyService;
|
||||
use App\Models\TravelCountry;
|
||||
|
|
@ -69,8 +70,6 @@ class ModalController extends Controller
|
|||
}
|
||||
$ret = view("admin.modal.provider-service", compact('data', 'value'))->render();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
return response()->json(['response' => $data, 'html'=>$ret, 'status'=>$status]);
|
||||
}
|
||||
|
|
|
|||
57
app/Http/Controllers/Settings/CategoryController.php
Executable file
57
app/Http/Controllers/Settings/CategoryController.php
Executable file
|
|
@ -0,0 +1,57 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Settings;
|
||||
|
||||
use App\Http\Controllers\Controller;
|
||||
|
||||
use App\Models\IQContentCategory;
|
||||
use App\Services\Util;
|
||||
use Request;
|
||||
|
||||
class CategoryController extends Controller
|
||||
{
|
||||
public function __construct()
|
||||
{
|
||||
$this->middleware('admin');
|
||||
}
|
||||
|
||||
public function index($step = false)
|
||||
{
|
||||
$data = [
|
||||
'airline' => IQContentCategory::all(),
|
||||
];
|
||||
return view('settings.category.index', $data);
|
||||
}
|
||||
|
||||
|
||||
public function update(){
|
||||
|
||||
$data = Request::all();
|
||||
|
||||
|
||||
$data['active'] = isset($data['active']) ? true : false;
|
||||
|
||||
if($data['id'] === "new"){
|
||||
$model = IQContentCategory::create($data);
|
||||
}else{
|
||||
$model = IQContentCategory::find($data['id']);
|
||||
$model->fill($data);
|
||||
$model->save();
|
||||
}
|
||||
|
||||
\Session()->flash('alert-save', '1');
|
||||
return redirect(route('admin_settings_categories'));
|
||||
}
|
||||
|
||||
public function delete($id){
|
||||
//TODO check ist linked
|
||||
|
||||
$model = IQContentCategory::findOrFail($id);
|
||||
$model->delete();
|
||||
\Session()->flash('alert-success', 'Eintrag gelöscht');
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
@ -8,6 +8,10 @@ use App\Models\IQContentSiteField;
|
|||
use App\Models\IQContentTree;
|
||||
use App\Models\IQContentTreeNode;
|
||||
use App\Models\TravelGuide;
|
||||
use Illuminate\Support\Str;
|
||||
use IqContent\LaravelFilemanager\Controllers\FileController;
|
||||
use IqContent\LaravelFilemanager\Controllers\FolderController;
|
||||
use IqContent\LaravelFilemanager\Models\IQContentFile;
|
||||
use Request;
|
||||
use Validator;
|
||||
|
||||
|
|
@ -23,11 +27,15 @@ class ContentLinkController extends Controller
|
|||
// $this->middleware('auth');
|
||||
}
|
||||
|
||||
public function filterHTML(){
|
||||
|
||||
}
|
||||
//content_links
|
||||
public function index()
|
||||
{
|
||||
$val = [];
|
||||
$text = "";
|
||||
$travelGuides = TravelGuide::all();
|
||||
/* $travelGuides = TravelGuide::all();
|
||||
foreach ($travelGuides as $travelGuide){
|
||||
if(strpos($travelGuide->full_text, "<h1><br></h1>") !== false){
|
||||
$val[$travelGuide->id] = "<h1><br></h1>";
|
||||
|
|
@ -43,47 +51,27 @@ class ContentLinkController extends Controller
|
|||
$travelGuide = TravelGuide::find(203);
|
||||
$text = $travelGuide->full_text;
|
||||
|
||||
// $new_text = preg_replace('/<h1[^>]*>([\s\S]*?)<\/h1[^>]*>/', '', $TravelGuide->full_text);
|
||||
|
||||
// $new_text = preg_replace('/<h1[^>]*>([\s\S]*?)<\/h1[^>]*>/', '', $TravelGuide->full_text);
|
||||
|
||||
*/
|
||||
$data = [
|
||||
'text' => $text,
|
||||
'values' => $val,
|
||||
];
|
||||
return view('sys.tools.links', $data);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
public function store()
|
||||
{
|
||||
$travelGuides = TravelGuide::all();
|
||||
foreach ($travelGuides as $travelGuide){
|
||||
if(strpos($travelGuide->full_text, "<h1><br></h1>") !== false) {
|
||||
$travelGuide->full_text = str_replace("<h1><br></h1>", "", $travelGuide->full_text);
|
||||
$travelGuide->save();
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($travelGuides as $travelGuide){
|
||||
if(strpos($travelGuide->full_text, "<h1") !== false){
|
||||
$travelGuide->full_text = str_replace("<h1", "<h2", $travelGuide->full_text);
|
||||
$travelGuide->full_text = str_replace("h1>", "h2>", $travelGuide->full_text);
|
||||
$travelGuide->save();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
return redirect()->back();
|
||||
|
||||
//$this->readNodeAndSaveToTree();
|
||||
//$this->cleanTextTravelGuide();
|
||||
//$this->h1ToTitleTravelGuide();
|
||||
}
|
||||
|
||||
|
||||
public function treeTitle()
|
||||
//tree
|
||||
public function tree()
|
||||
{
|
||||
$text = "";
|
||||
$val = [];
|
||||
|
|
@ -93,14 +81,10 @@ class ContentLinkController extends Controller
|
|||
|
||||
$text .= $tree_node->id." -- ".$tree_node->title."\n";
|
||||
foreach ($tree_node->iq_content_sites as $site){
|
||||
if(isset($site->travel_guide->meta_title)){
|
||||
if(isset($val[$tree_node->id])){
|
||||
if(strlen($site->travel_guide->meta_title) > strlen($val[$tree_node->id])){
|
||||
$val[$tree_node->id] = $site->travel_guide->meta_title;
|
||||
}
|
||||
}else{
|
||||
$val[$tree_node->id] = $site->travel_guide->meta_title;
|
||||
}
|
||||
if($site->travel_guide && $site->identifier === null){
|
||||
$identifier = $site->travel_guide->scope === 1 ? 'long' : 'short';
|
||||
//$site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short';
|
||||
$text .= "-- ".$site->id." -- ".$identifier."\n";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -112,34 +96,322 @@ class ContentLinkController extends Controller
|
|||
return view('sys.tools.trees', $data);
|
||||
}
|
||||
|
||||
public function treeTitleStore()
|
||||
public function treeStore()
|
||||
{
|
||||
|
||||
$trees = IQContentTree::all();
|
||||
$val = [];
|
||||
foreach ($trees as $tree){
|
||||
foreach ($tree->iq_content_tree_nodes as $tree_node){
|
||||
|
||||
foreach ($tree_node->iq_content_sites as $site){
|
||||
if(isset($site->travel_guide->meta_title)){
|
||||
if(isset($val[$tree_node->id])){
|
||||
if(strlen($site->travel_guide->meta_title) > strlen($val[$tree_node->id])){
|
||||
$val[$tree_node->id] = $site->travel_guide->meta_title;
|
||||
}
|
||||
}else{
|
||||
$val[$tree_node->id] = $site->travel_guide->meta_title;
|
||||
}
|
||||
if($site->travel_guide){
|
||||
$site->identifier = $site->travel_guide->scope === 1 ? 'long' : 'short';
|
||||
$site->save();
|
||||
}
|
||||
}
|
||||
if(isset($val[$tree_node->id])){
|
||||
$tree_node->title = $val[$tree_node->id];
|
||||
$tree_node->save();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
|
||||
//clean_tree_code
|
||||
public function cleanTreeCode(){
|
||||
$val = [];
|
||||
$text = "";
|
||||
|
||||
$travelGuide = TravelGuide::find(166);
|
||||
$text = $travelGuide->full_text;
|
||||
|
||||
$data = [
|
||||
'new_text' => \App\Services\Util::cleanHTML($text),
|
||||
'full_text' => $travelGuide->full_text,
|
||||
'values' => $val,
|
||||
];
|
||||
return view('sys.tools.clean', $data);
|
||||
}
|
||||
|
||||
public function cleanTreeCodeStore(){
|
||||
$this->cleanTextTravelGuide();
|
||||
return redirect()->back();
|
||||
}
|
||||
|
||||
public function cleanTextTravelGuide()
|
||||
{
|
||||
$TravelGuides = TravelGuide::all();
|
||||
foreach ($TravelGuides as $travelGuide){
|
||||
$new_text = \App\Services\Util::cleanHTML($travelGuide->full_text);
|
||||
if(strcmp($travelGuide->full_text, $new_text) != 0){
|
||||
$travelGuide->full_text = $new_text;
|
||||
$travelGuide->save();
|
||||
var_dump($travelGuide->id);
|
||||
echo "<br>";
|
||||
}
|
||||
}
|
||||
die("done");
|
||||
}
|
||||
|
||||
//media_insert
|
||||
public function mediaInsert(){
|
||||
$val = [];
|
||||
$text = "";
|
||||
$data = [
|
||||
'text' => $text,
|
||||
'values' => $val,
|
||||
];
|
||||
return view('sys.tools.insert', $data);
|
||||
}
|
||||
|
||||
public function mediaInsertStore(){
|
||||
$val = [];
|
||||
|
||||
$data = Request::all();
|
||||
$text = $data['text'];
|
||||
|
||||
if($data['action'] === 'insert'){
|
||||
$lines = explode(PHP_EOL, $text);
|
||||
$FolderC = new FolderController();
|
||||
$FileC = new FileController();
|
||||
|
||||
foreach ($lines as $line){
|
||||
$sep = explode(';', $line);
|
||||
if(isset($sep[0]) && isset($sep[1]) && isset($sep[2])){
|
||||
//youtube //main dir
|
||||
$working_dir = "/shares/youtube/".$sep[0];
|
||||
$folder_name = $sep[1];
|
||||
|
||||
$folder = $FolderC->makeFolder($working_dir, $folder_name);
|
||||
$working_dir = $working_dir."/".$folder_name;
|
||||
$file = $FileC->makeYoutube($working_dir, $sep[2]);
|
||||
$val[] = $file.' - '.$sep[2]." | ".$working_dir;
|
||||
}
|
||||
}
|
||||
}
|
||||
if($data['action'] === 'youtube_ids'){
|
||||
$TravelGuides = TravelGuide::all();
|
||||
foreach ($TravelGuides as $travelGuide){
|
||||
$this->findYoutubeLinks($val, $travelGuide);
|
||||
|
||||
/* <iframe allowfullscreen="" frameborder="0" height="500" src="https://www.youtube-nocookie.com/embed/9zs9RKOFCIs?rel=0" width="100%"></iframe> */
|
||||
}
|
||||
}
|
||||
if($data['action'] === 'replace_youtube_links') {
|
||||
$TravelGuides = TravelGuide::all();
|
||||
foreach ($TravelGuides as $travelGuide){
|
||||
$this->replaceYoutubeLinks($val, $travelGuide);
|
||||
|
||||
/* <iframe allowfullscreen="" frameborder="0" height="500" src="https://www.youtube-nocookie.com/embed/9zs9RKOFCIs?rel=0" width="100%"></iframe> */
|
||||
}
|
||||
}
|
||||
|
||||
if($data['action'] === 'replace_youtube_div') {
|
||||
$this->replaceYoutubeDiv($val, TravelGuide::find(335));
|
||||
$TravelGuides = TravelGuide::all();
|
||||
foreach ($TravelGuides as $travelGuide){
|
||||
$this->replaceYoutubeDiv($val, $travelGuide);
|
||||
|
||||
/* <iframe allowfullscreen="" frameborder="0" height="500" src="https://www.youtube-nocookie.com/embed/9zs9RKOFCIs?rel=0" width="100%"></iframe> */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$data = [
|
||||
'text' => $text,
|
||||
'values' => $val,
|
||||
];
|
||||
return view('sys.tools.insert', $data);
|
||||
|
||||
}
|
||||
|
||||
|
||||
private function replaceYoutubeDiv(&$val, $travelGuide)
|
||||
{
|
||||
$ret = [];
|
||||
$dom = new \DOMDocument('1.0', 'utf-8');
|
||||
@$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
|
||||
$links = $dom->getElementsByTagName('iframe');
|
||||
foreach ($links as $link) {
|
||||
if($link->parentNode->parentNode->nodeName === 'div'){
|
||||
if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){
|
||||
if($link->parentNode->parentNode->getAttribute('class') === 'mediaA'){
|
||||
if($link->parentNode->parentNode->parentNode->getAttribute('itemprop') === 'video'){
|
||||
|
||||
$need = $link->parentNode->parentNode;
|
||||
$replace = $link->parentNode->parentNode->parentNode;
|
||||
$replace->parentNode->insertBefore($dom->importNode($need, true), $replace->nextSibling);
|
||||
$replace->parentNode->removeChild($replace);
|
||||
$html = $dom->saveHTML();
|
||||
|
||||
$travelGuide->full_text = $html;
|
||||
$travelGuide->save();
|
||||
$val[] = 'replace - '.$travelGuide->id;
|
||||
|
||||
}else{
|
||||
// dump("notfound itemprop over class mediaA".$travelGuide->id);
|
||||
$val[] = 'notfound - itemprop over class mediaA - '.$travelGuide->id;
|
||||
|
||||
//in
|
||||
|
||||
foreach ($link->parentNode->parentNode->childNodes as $node){
|
||||
if($node->nodeName === 'h2'){
|
||||
|
||||
if($node->firstChild->nodeName === '#text'){
|
||||
|
||||
$span = $dom->createElement('span', htmlspecialchars($node->nodeValue));
|
||||
|
||||
$span->setAttribute('itemprop', 'name');
|
||||
$h2 = $dom->createElement('h2');
|
||||
$h2->appendChild($span);
|
||||
|
||||
$node->parentNode->replaceChild($h2, $node);
|
||||
$html = $dom->saveHTML();
|
||||
|
||||
$travelGuide->full_text = $html;
|
||||
$travelGuide->save();
|
||||
$val[] = 'replace h2 - '.$travelGuide->id;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
//<span itemprop="name">
|
||||
|
||||
}
|
||||
//dump("found M div ".$travelGuide->id);
|
||||
}else{
|
||||
// dump("notfound class mediaA".$travelGuide->id);
|
||||
$val[] = 'notfound - class mediaA - '.$travelGuide->id;
|
||||
}
|
||||
}else{
|
||||
// dump("notfound div ".$travelGuide->id);
|
||||
$val[] = 'notfound - video - '.$travelGuide->id;
|
||||
|
||||
|
||||
}
|
||||
// dump($travelGuide->id);
|
||||
}else{
|
||||
//dump("notfound".$travelGuide->id);
|
||||
$val[] = 'notfound - div - '.$travelGuide->id;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
private function replaceYoutubeLinks(&$val, $travelGuide)
|
||||
{
|
||||
$ret = [];
|
||||
$dom = new \DOMDocument('1.0', 'utf-8');
|
||||
@$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
|
||||
$links = $dom->getElementsByTagName('iframe');
|
||||
foreach ($links as $link) {
|
||||
|
||||
$src = $link->getAttribute('src');
|
||||
|
||||
|
||||
//
|
||||
$replace = false;
|
||||
$reLink = false;
|
||||
if($link->parentNode->nodeName === 'div'){
|
||||
if($link->parentNode->getAttribute('class') === 'video-container'){
|
||||
if($link->parentNode->parentNode->getAttribute('class') === 'mediaA' && $link->parentNode->parentNode->getAttribute('itemprop') !== 'video'){
|
||||
$replace = $link->parentNode->parentNode;
|
||||
$reLink = $link->parentNode;
|
||||
}else{
|
||||
$val[] = 'found - manual - '.$travelGuide->id;
|
||||
}
|
||||
}else{
|
||||
$val[] = 'first div - manual - '.$travelGuide->id;
|
||||
|
||||
}
|
||||
|
||||
}elseif ($link->parentNode->nodeName === 'p'){
|
||||
if($link->parentNode->parentNode->nodeName === 'div'){
|
||||
if($link->parentNode->parentNode->getAttribute('itemprop') === 'video'){
|
||||
//replace div
|
||||
$replace = $link->parentNode->parentNode;
|
||||
$reLink = $link->parentNode;
|
||||
}else{
|
||||
//replace p
|
||||
$replace = $link->parentNode;
|
||||
$reLink = $link;
|
||||
}
|
||||
}else{
|
||||
$replace = $link->parentNode;
|
||||
$reLink = $link;
|
||||
}
|
||||
|
||||
}else{
|
||||
$val[] = 'else div - manual - '.$travelGuide->id;
|
||||
}
|
||||
if($replace){
|
||||
|
||||
$id = preg_replace('/http.*?embed\//i', '', $src);
|
||||
$videoID = preg_replace('#[&\?].+$#', '', $id);
|
||||
$identifier = Str::slug(pre_slug($videoID), '-');
|
||||
$IQContentFile = IQContentFile::whereIdentifier($identifier)->first();
|
||||
if($IQContentFile) {
|
||||
|
||||
$video = new \DOMDocument('1.0', 'utf-8');
|
||||
$makeText = '<?xml encoding="utf-8" ?><div class="mediaA" itemprop="video" itemscope itemtype="http://schema.org/VideoObject">';
|
||||
$makeText .= '<h2><span itemprop="name">' . $IQContentFile->content['title'] . '</span></h2>';
|
||||
$makeText .= '<meta itemprop="duration" content="' . $IQContentFile->content['duration'] . '" />';
|
||||
$makeText .= '<meta itemprop="uploadDate" content="' . $IQContentFile->content['uploadDate'] . '"/>';
|
||||
$makeText .= '<meta itemprop="thumbnailURL" content="' . $IQContentFile->content['thumbnailURL'] . '" />';
|
||||
$makeText .= '<meta itemprop="embedURL" content="https://youtube.googleapis.com/v/' . $IQContentFile->content['id'] . '" />';
|
||||
$makeText .= '<div class="video-container"><iframe src="https://www.youtube.com/embed/' . $IQContentFile->content['id'] . '?rel=0&controls=0&showinfo=0" data-identifier="' . $IQContentFile->identifier . '" data-slug="' . $IQContentFile->slug . '" frameborder="0" allowfullscreen></iframe></div>';
|
||||
$makeText .= '<div class="mediaInfo"><p class="infotext" itemprop="description">'.$IQContentFile->content['description'].'</p></div></div>';
|
||||
$makeText = str_replace('&', '&', $makeText);
|
||||
$video->loadHTML($makeText);
|
||||
$replace->insertBefore($dom->importNode($video->documentElement, true), $reLink->nextSibling);
|
||||
$replace->removeChild($reLink);
|
||||
$html = $dom->saveHTML();
|
||||
|
||||
$travelGuide->full_text = $html;
|
||||
$travelGuide->save();
|
||||
|
||||
$val[] = 'replace - '.$travelGuide->id;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $ret;
|
||||
}
|
||||
|
||||
private function findYoutubeLinks(&$val, $travelGuide)
|
||||
{
|
||||
$ret = [];
|
||||
$dom = new \DOMDocument('1.0', 'utf-8');
|
||||
@$dom->loadHTML(mb_convert_encoding($travelGuide->full_text, 'HTML-ENTITIES', 'UTF-8'));
|
||||
|
||||
$links = $dom->getElementsByTagName('iframe');
|
||||
foreach ($links as $link) {
|
||||
|
||||
$src = $link->getAttribute('src');
|
||||
|
||||
$id = preg_replace('/http.*?embed\//i', '', $src);
|
||||
$videoID = preg_replace('#[&\?].+$#', '', $id);
|
||||
|
||||
$identifier = Str::slug(pre_slug($videoID), '-');
|
||||
$count = IQContentFile::whereIdentifier($identifier)->count();
|
||||
|
||||
if($count === 0){
|
||||
$ret[$videoID] = $count;
|
||||
$val[] = "weitere;Travel-Guide;".$videoID.";";
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
//private?
|
||||
public function h1ToTitleTravelGuide()
|
||||
{
|
||||
$TravelGuides = TravelGuide::all();
|
||||
|
|
@ -171,23 +443,6 @@ class ContentLinkController extends Controller
|
|||
die("done");
|
||||
}
|
||||
|
||||
|
||||
public function cleanTextTravelGuide()
|
||||
{
|
||||
$TravelGuides = TravelGuide::all();
|
||||
foreach ($TravelGuides as $travelGuide){
|
||||
$new_text = \App\Services\Util::cleanHTML($travelGuide->full_text);
|
||||
if(strcmp($travelGuide->full_text, $new_text) != 0){
|
||||
$travelGuide->full_text = $new_text;
|
||||
$travelGuide->save();
|
||||
var_dump($travelGuide->id);
|
||||
echo "<br>";
|
||||
}
|
||||
}
|
||||
die("done");
|
||||
}
|
||||
|
||||
|
||||
public function readNodeAndSaveToTree(){
|
||||
$input = Request::all();
|
||||
$ret = [];
|
||||
|
|
@ -246,7 +501,6 @@ class ContentLinkController extends Controller
|
|||
|
||||
}
|
||||
|
||||
|
||||
public function ul_to_array($ol){
|
||||
if(is_string($ol)){
|
||||
if(!$ol = simplexml_load_string($ol)) {
|
||||
|
|
@ -300,9 +554,6 @@ class ContentLinkController extends Controller
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
|
||||
*/
|
||||
public function rindex()
|
||||
{
|
||||
$data = [
|
||||
|
|
@ -312,8 +563,6 @@ class ContentLinkController extends Controller
|
|||
return view('iq.content.tools.redirects', $data);
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function rstore()
|
||||
{
|
||||
|
||||
|
|
@ -328,9 +577,6 @@ class ContentLinkController extends Controller
|
|||
$dom = new \DOMDocument('1.0', 'utf-8');
|
||||
@$dom->loadHTML(mb_convert_encoding($input['text'], 'HTML-ENTITIES', 'UTF-8'));
|
||||
|
||||
|
||||
|
||||
|
||||
$tags = ['ol'];
|
||||
foreach ($tags as $tag){
|
||||
$domElements = [];
|
||||
|
|
@ -384,8 +630,6 @@ class ContentLinkController extends Controller
|
|||
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function makeTree(IQContentTree $iq_content_tree, $lvl = 0, $parent_id = false, $url = "")
|
||||
{
|
||||
|
||||
|
|
@ -412,4 +656,63 @@ class ContentLinkController extends Controller
|
|||
|
||||
|
||||
|
||||
//tree_title
|
||||
/* public function tree()
|
||||
{
|
||||
$text = "";
|
||||
$val = [];
|
||||
$trees = IQContentTree::all();
|
||||
foreach ($trees as $tree){
|
||||
foreach ($tree->iq_content_tree_nodes as $tree_node){
|
||||
|
||||
$text .= $tree_node->id." -- ".$tree_node->title."\n";
|
||||
foreach ($tree_node->iq_content_sites as $site){
|
||||
if(isset($site->travel_guide->meta_title)){
|
||||
if(isset($val[$tree_node->id])){
|
||||
if(strlen($site->travel_guide->meta_title) > strlen($val[$tree_node->id])){
|
||||
$val[$tree_node->id] = $site->travel_guide->meta_title;
|
||||
}
|
||||
}else{
|
||||
$val[$tree_node->id] = $site->travel_guide->meta_title;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$data = [
|
||||
'text' => $text,
|
||||
'values' => $val,
|
||||
];
|
||||
return view('sys.tools.trees', $data);
|
||||
}
|
||||
|
||||
public function treeStore()
|
||||
{
|
||||
|
||||
$trees = IQContentTree::all();
|
||||
$val = [];
|
||||
foreach ($trees as $tree){
|
||||
foreach ($tree->iq_content_tree_nodes as $tree_node){
|
||||
foreach ($tree_node->iq_content_sites as $site){
|
||||
if(isset($site->travel_guide->meta_title)){
|
||||
if(isset($val[$tree_node->id])){
|
||||
if(strlen($site->travel_guide->meta_title) > strlen($val[$tree_node->id])){
|
||||
$val[$tree_node->id] = $site->travel_guide->meta_title;
|
||||
}
|
||||
}else{
|
||||
$val[$tree_node->id] = $site->travel_guide->meta_title;
|
||||
}
|
||||
}
|
||||
}
|
||||
if(isset($val[$tree_node->id])){
|
||||
$tree_node->title = $val[$tree_node->id];
|
||||
$tree_node->save();
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
return redirect()->back();
|
||||
}*/
|
||||
|
||||
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue