FEATURE: ugly commit - rewritten widgets, menu made more compact, added profile menu, few bugfixes etc. Sorry..

This commit is contained in:
Michal Kváček
2016-09-04 01:52:17 +02:00
parent 9c02c63704
commit 66caf7ce05
44 changed files with 1006 additions and 192 deletions
@@ -0,0 +1,20 @@
@extends('admin.layout')
@section('pageName', @trans('widgets/menu.edit', ['name' => $widget->name]))
@section('content')
<h1>@lang('widgets/menu.edit', ['name' => $widget->name])</h1>
<div class="row">
<div class="column large-8">
@include('admin.widgets.menu.form', ['formAction' => route('widgets.postEdit', ['id' => $widget->id])])
</div>
<div class="column large-4">
<h3>@lang('widgets/menu.preview')</h3>
@widgetPreview($widget)
</div>
</div>
@stop
@@ -0,0 +1,97 @@
@if (!isset($hideMessages))
@if (session('success'))
<div class="callout success">
{{ session('success') }}
</div>
@endif
@if (session('error'))
<div class="callout alert">
{{ session('error') }}
</div>
@endif
@endif
<form action="{{$formAction}}" method="POST">
{!! csrf_field() !!}
<label>
@lang('widgets/menu.name')
<input type="text" name="name" value="{{old("name", $widget->name)}}" placeholder="@lang('widgets/menu.name')" />
@if (isset($errors) && $errors->has('name'))
<div class="callout alert">
{{ $errors->first('name') }}
</div>
@endif
</label>
<label>
@lang('widgets/menu.description')
<input type="text" name="description" placeholder="@lang('widgets/menu.description')"
value="{{old("description", $widget->description)}}" />
@if (isset($errors) && $errors->has('description'))
<div class="callout alert">
{{ $errors->first('description') }}
</div>
@endif
</label>
<textarea name="moduleSettings" id="menuConfig">{}</textarea>
<button type="submit" class="button success">@lang('widgets/menu.createNew')</button>
</form>
<ul class="tabs" data-tabs id="createMenu">
@foreach($extensions as $extension)
<li class="tabs-title @if($extension->getId() == reset($extensions)->getId()) is-active @endif">
<a href="#{{$extension->getId()}}" @if($extension->getId() == reset($extensions)->getId()) aria-selected="true" @endif>
{{trans($extension->getName())}}
</a>
</li>
@endforeach
</ul>
<div class="tabs-content" data-tabs-content="createMenu">
@foreach($extensions as $extension)
<div class="tabs-panel @if($extension->getId() == reset($extensions)->getId()) is-active @endif" id="{{$extension->getId()}}">
<h4>{{$extension->getName()}}</h4>
<p>{{$extension->getDescription()}}</p>
<form action="#" id="menuItem-{{$extension->getId()}}" class="menuItems" data-extension="{{$extension->getId()}}">
@include($extension->getFormExtensionTemplate())
<div class="row">
<button class="button" type="submit"><i class="fa fa-plus"></i></button>
</div>
</form>
</div>
@endforeach
</div>
@section('javascripts')
<script type="text/javascript">
$('.menuItems').submit(function () {
var id = $(this).data('extension');
var existingSettings = {};
try {
existingSettings = JSON.parse ($ ('#menuConfig').val ());
} catch (err) {
// ignore
}
$(this).find(':input').each(function () {
var name = $(this).attr('name');
var value = $(this).val();
alert('name: '+name+", value: "+value);
});
return false;
});
</script>
@stop
@@ -0,0 +1,10 @@
@extends('admin.layout')
@section('pageName', @trans('widgets/menu.new'))
@section('content')
<h1>@lang('widgets/menu.new')</h1>
@include('admin.widgets.menu.form', ['formAction' => route('widgets.postNew', ['type' => $type])])
@stop
@@ -0,0 +1,17 @@
<label>
@lang('widgets.url')
<input type="text" name="url" id="urlField"/>
</label>
<label>
@lang('widgets.anchor')
<input type="text" name="anchor" id="anchorField"/>
</label>
<label>
@lang('widgets.openInNewWindow')
<input type="checkbox" checked="checked" name="openInNewWindow" id="openInNewWindowField"/>
</label>
@@ -0,0 +1,18 @@
@extends('admin.layoutWithNavigation')
@section('pageHeading', @trans('widgets/menu.edit', ['name' => $widget->name]))
@section('content')
<div class="row">
<div class="col-lg-8">
@include('admin.widgets.menu.form', ['formAction' => route('widgets.postEdit', ['id' => $widget->id])])
</div>
<div class="col-lg-4">
<h3>@lang('widgets/menu.preview')</h3>
@widgetPreview($widget)
</div>
</div>
@stop
@@ -0,0 +1,103 @@
<form action="{{$formAction}}" id="widget-menu" method="POST">
{!! csrf_field() !!}
<input type="hidden" name="settings" id="widgetSettings" value="{{json_encode($widget->settingsObj->links)}}" />
<label class="label-control">
@lang('widgets/menu.name')
</label>
<input class="form-control" required type="text" name="name" value="{{old("name", $widget->name)}}"
placeholder="@lang('widgets/menu.name')" />
<label class="label-control">
@lang('widgets/menu.description')
</label>
<input class="form-control" type="text" name="description" placeholder="@lang('widgets/menu.description')"
value="{{old("description", $widget->description)}}" />
<label class="label-control">
@lang('widgets/menu.containerClass')
</label>
<input class="form-control" type="text" name="containerClass" placeholder="@lang('widgets/menu.containerClass')"
value="{{old("containerClass")}}" />
<div class="row">
<div class="col-lg-6">
<h3>@lang('widgets/menu.addedPages')</h3>
<div id="menu-items-container">
@foreach($widget->settingsObj->links as $pageId => $details)
<span class="btn btn-sm btn-info" data-page-id="{{$pageId}}"
id="item-{{$pageId}}">{{$details->text}}</span>
@endforeach
</div>
</div>
<div class="col-lg-6">
<h3>@lang('widgets/menu.availablePages')</h3>
@foreach ($pages as $page)
<a href="#"
class="btn btn-sm menu-item @if(isset($widget->settingsObj->links->{$page->id})) btn-secondary @else btn-info @endif "
data-page-url="{{$page->url}}" data-page-id="{{$page->id}}"
id="page-{{$page->id}}">{{$page->title}}</a>
@endforeach
</div>
</div>
<button type="submit" class="btn btn-primary">@lang('widgets/menu.save')</button>
</form>
@section('javascripts')
<script type="text/javascript">
$ ('#widget-menu').submit (function () {
var items = {};
var i = 0;
$ ('#menu-items-container').children ().each (function () {
var id = $ (this).data ('page-id');
items[id] = {
id: id,
type: 'content',
text: $ (this).text (),
order: i++,
children: {}
};
});
// check if menu is not empty
if (i == 0) {
alert ('@lang('widgets/menu.noLinks')');
return false;
}
$ ('#widgetSettings').val (JSON.stringify (items));
});
$ ('.menu-item').click (function () {
var url = $ (this).data ('page-url');
var text = $ (this).text ();
var id = $ (this).data ('page-id');
if ($ (this).hasClass ('btn-secondary')) {
// remove
$ ('#item-' + id).remove ();
$ (this).addClass ('btn-info');
$ (this).removeClass ('btn-secondary')
} else {
// add
$ ('#menu-items-container').append ('<span class="btn btn-sm btn-info" id="item-' + id + '" data-page-id="' + id + '">' + text + '</span> ');
$ (this).addClass ('btn-secondary');
$ (this).removeClass ('btn-info');
}
// distinguish between added and not-added page
$ (this).toggleClass ('secondary');
});
</script>
@endsection
@@ -0,0 +1,7 @@
@extends('admin.layoutWithNavigation')
@section('pageHeading', trans('widgets/menu.new'))
@section('content')
@include('admin.widgets.menu.form', ['formAction' => route('widgets.postNew', ['type' => $type])])
@endsection