Travel Guide Frontend Backend

This commit is contained in:
Kevin Adametz 2020-08-07 16:00:55 +02:00
parent e6cc042aee
commit 0857a34766
681 changed files with 6680 additions and 1689 deletions

View file

@ -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,
];
}

View 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);
}
}

View file

@ -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);

View file

@ -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();
}
}

View file

@ -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]));
}

View file

@ -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]);
}

View 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();
}
}

View file

@ -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&amp;controls=0&amp;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('&', '&amp;', $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();
}*/
}