From a380d58146cd9f2153adc9e2c2807cee91a2fa04 Mon Sep 17 00:00:00 2001 From: Marco Mapelli Date: Thu, 2 Feb 2017 22:14:18 +0100 Subject: [PATCH 01/11] modifie into laravel 5.4 --- src/CodeGenerator.php | 2 +- src/Commands/LAInstall.php | 16 ++++++++-------- src/Commands/Packaging.php | 2 +- src/Controllers/ModuleController.php | 2 +- src/Installs/app/admin_routes.php | 2 +- src/LAProvider.php | 12 ++++++------ src/routes.php | 2 +- 7 files changed, 19 insertions(+), 19 deletions(-) diff --git a/src/CodeGenerator.php b/src/CodeGenerator.php index 7637ebe7..1bd9cb3d 100644 --- a/src/CodeGenerator.php +++ b/src/CodeGenerator.php @@ -168,7 +168,7 @@ public static function appendRoutes($config, $comm = null) $templateDirectory = __DIR__ . '/stubs'; LAHelper::log("info", "Appending routes...", $comm); - if(\Dwij\Laraadmin\Helpers\LAHelper::laravel_ver() == 5.3) { + if(\Dwij\Laraadmin\Helpers\LAHelper::laravel_ver() >= 5.3) { $routesFile = base_path('routes/admin_routes.php'); } else { $routesFile = app_path('Http/admin_routes.php'); diff --git a/src/Commands/LAInstall.php b/src/Commands/LAInstall.php index f916a152..9dc5cfaa 100644 --- a/src/Commands/LAInstall.php +++ b/src/Commands/LAInstall.php @@ -60,7 +60,7 @@ public function handle() $this->line("DB Assistant Initiated...."); $db_data = array(); - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $db_data['host'] = $this->ask('Database Host', '127.0.0.1'); $db_data['port'] = $this->ask('Database Port', '3306'); } @@ -76,7 +76,7 @@ public function handle() $default_db_conn = env('DB_CONNECTION', 'mysql'); - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { config(['database.connections.' . $default_db_conn . '.host' => $db_data['host']]); config(['database.connections.' . $default_db_conn . '.port' => $db_data['port']]); LAHelper::setenv("DB_HOST", $db_data['host']); @@ -107,7 +107,7 @@ public function handle() // Controllers $this->line("\n" . 'Generating Controllers...'); $this->copyFolder($from . "/app/Controllers/Auth", $to . "/app/Http/Controllers/Auth"); - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { // Delete Redundant Controllers unlink($to . "/app/Http/Controllers/Auth/PasswordController.php"); unlink($to . "/app/Http/Controllers/Auth/AuthController.php"); @@ -118,7 +118,7 @@ public function handle() unlink($to . "/app/Http/Controllers/Auth/ResetPasswordController.php"); } $this->replaceFolder($from . "/app/Controllers/LA", $to . "/app/Http/Controllers/LA"); - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $this->copyFile($from . "/app/Controllers/Controller.5.3.php", $to . "/app/Http/Controllers/Controller.php"); } else { $this->copyFile($from . "/app/Controllers/Controller.php", $to . "/app/Http/Controllers/Controller.php"); @@ -126,7 +126,7 @@ public function handle() $this->copyFile($from . "/app/Controllers/HomeController.php", $to . "/app/Http/Controllers/HomeController.php"); // Middleware - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $this->copyFile($from . "/app/Middleware/RedirectIfAuthenticated.php", $to . "/app/Http/Middleware/RedirectIfAuthenticated.php"); } @@ -143,7 +143,7 @@ public function handle() } foreach($this->modelsInstalled as $model) { if($model == "User") { - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $this->copyFile($from . "/app/Models/" . $model . "5.3.php", $to . "/app/" . $model . ".php"); } else { $this->copyFile($from . "/app/Models/" . $model . ".php", $to . "/app/" . $model . ".php"); @@ -251,7 +251,7 @@ public function handle() // Routes $this->line('Appending routes...'); //if(!$this->fileContains($to."/app/Http/routes.php", "laraadmin.adminRoute")) { - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { if(LAHelper::getLineWithString($to . "/routes/web.php", "require __DIR__.'/admin_routes.php';") == -1) { $this->appendFile($from . "/app/routes.php", $to . "/routes/web.php"); } @@ -266,7 +266,7 @@ public function handle() // tests $this->line('Generating tests...'); $this->copyFolder($from . "/tests", $to . "/tests"); - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { unlink($to . '/tests/TestCase.php'); rename($to . '/tests/TestCase5.3.php', $to . '/tests/TestCase.php'); } else { diff --git a/src/Commands/Packaging.php b/src/Commands/Packaging.php index 08a6be0d..c3060c33 100644 --- a/src/Commands/Packaging.php +++ b/src/Commands/Packaging.php @@ -71,7 +71,7 @@ public function handle() // Routes $this->line('Exporting Routes...'); - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { // $this->copyFile($from."/routes/web.php", $to."/app/routes.php"); // Not needed anymore $this->copyFile($from . "/routes/admin_routes.php", $to . "/app/admin_routes.php"); } else { diff --git a/src/Controllers/ModuleController.php b/src/Controllers/ModuleController.php index 1844b6ce..4d3ea434 100644 --- a/src/Controllers/ModuleController.php +++ b/src/Controllers/ModuleController.php @@ -165,7 +165,7 @@ public function destroy($id) } // Delete Admin Routes - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $file_admin_routes = base_path("/routes/admin_routes.php"); } else { $file_admin_routes = base_path("/app/Http/admin_routes.php"); diff --git a/src/Installs/app/admin_routes.php b/src/Installs/app/admin_routes.php index 3814dd63..667b3286 100644 --- a/src/Installs/app/admin_routes.php +++ b/src/Installs/app/admin_routes.php @@ -15,7 +15,7 @@ */ $as = ""; -if(\Dwij\Laraadmin\Helpers\LAHelper::laravel_ver() == 5.3) { +if(\Dwij\Laraadmin\Helpers\LAHelper::laravel_ver() >= 5.3) { $as = config('laraadmin.adminRoute').'.'; // Routes for Laravel 5.3 diff --git a/src/LAProvider.php b/src/LAProvider.php index 3d475a9e..1238319f 100644 --- a/src/LAProvider.php +++ b/src/LAProvider.php @@ -51,7 +51,7 @@ public function boot() | Blade Directives for Entrust not working in Laravel 5.3 |-------------------------------------------------------------------------- */ - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { // Call to Entrust::hasRole Blade::directive('role', function ($expression) { @@ -161,7 +161,7 @@ public function register() // LAForm Input Maker Blade::directive('la_input', function ($expression) { - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $expression = "(" . $expression . ")"; } return ""; @@ -169,7 +169,7 @@ public function register() // LAForm Form Maker Blade::directive('la_form', function ($expression) { - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $expression = "(" . $expression . ")"; } return ""; @@ -177,7 +177,7 @@ public function register() // LAForm Maker - Display Values Blade::directive('la_display', function ($expression) { - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $expression = "(" . $expression . ")"; } return ""; @@ -185,7 +185,7 @@ public function register() // LAForm Maker - Check Whether User has Module Access Blade::directive('la_access', function ($expression) { - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $expression = "(" . $expression . ")"; } return ""; @@ -196,7 +196,7 @@ public function register() // LAForm Maker - Check Whether User has Module Field Access Blade::directive('la_field_access', function ($expression) { - if(LAHelper::laravel_ver() == 5.3) { + if(LAHelper::laravel_ver() >= 5.3) { $expression = "(" . $expression . ")"; } return ""; diff --git a/src/routes.php b/src/routes.php index 551f9f20..144f4751 100644 --- a/src/routes.php +++ b/src/routes.php @@ -1,7 +1,7 @@ = 5.3) { $as = config('laraadmin.adminRoute') . '.'; } From e1d0a0a8348b340ad20f153f4a5f2b6bac566340 Mon Sep 17 00:00:00 2001 From: Marco Mapelli Date: Thu, 2 Feb 2017 23:18:23 +0100 Subject: [PATCH 02/11] modifie laravel_ver --- src/Helpers/LAHelper.php | 87 +++++++++++++++++++++------------------- 1 file changed, 45 insertions(+), 42 deletions(-) diff --git a/src/Helpers/LAHelper.php b/src/Helpers/LAHelper.php index 3cf4703e..3e14b574 100644 --- a/src/Helpers/LAHelper.php +++ b/src/Helpers/LAHelper.php @@ -36,7 +36,7 @@ public static function generateModuleNames($module_name, $icon) $array = array(); $module_name = trim($module_name); $module_name = str_replace(" ", "_", $module_name); - + $array['module'] = ucfirst(str_plural($module_name)); $array['label'] = ucfirst(str_plural($module_name)); $array['table'] = strtolower(str_plural($module_name)); @@ -45,10 +45,10 @@ public static function generateModuleNames($module_name, $icon) $array['controller'] = $array['module'] . "Controller"; $array['singular_l'] = strtolower(str_singular($module_name)); $array['singular_c'] = ucfirst(str_singular($module_name)); - + return (object)$array; } - + /** * Get list of Database tables excluding LaraAdmin Context tables like * backups, la_configs, la_menus, migrations, modules, module_fields, module_field_types @@ -84,7 +84,7 @@ public static function getDBTables($remove_tables = []) } else { $tables = DB::select('SHOW TABLES'); } - + $tables_out = array(); foreach($tables as $table) { $table = (Array)$table; @@ -112,15 +112,15 @@ public static function getDBTables($remove_tables = []) $remove_tables = array_merge($remove_tables, $remove_tables2); $remove_tables = array_unique($remove_tables); $tables_out = array_diff($tables_out, $remove_tables); - + $tables_out2 = array(); foreach($tables_out as $table) { $tables_out2[$table] = $table; } - + return $tables_out2; } - + /** * Get Array of All Modules * @@ -132,21 +132,21 @@ public static function getDBTables($remove_tables = []) public static function getModuleNames($remove_modules = []) { $modules = Module::all(); - + $modules_out = array(); foreach($modules as $module) { $modules_out[] = $module->name; } $modules_out = array_diff($modules_out, $remove_modules); - + $modules_out2 = array(); foreach($modules_out as $module) { $modules_out2[$module] = $module; } - + return $modules_out2; } - + /** * Method to parse the dropdown, Multiselect, Taginput and radio values which are linked with * either other tables via "@" e.g. "@employees" or string array of values @@ -182,7 +182,7 @@ public static function parseValues($value) } return $valueOut; } - + /** * Log method to log either in command line or in Log file depending on $type. * @@ -203,7 +203,7 @@ public static function log($type, $text, $commandObject) Log::$type($text); } } - + /** * Method copies folder recursively into another * @@ -230,7 +230,7 @@ public static function recurse_copy($src, $dst) } closedir($dir); } - + /** * Method deletes folder and its content * @@ -253,7 +253,7 @@ public static function recurse_delete($dir) rmdir($dir); } } - + /** * Generate Random Password * @@ -283,7 +283,7 @@ public static function gen_password($chars_min = 6, $chars_max = 8, $use_upper_c } return $password; } - + /** * Get url of image by using $upload_id * @@ -301,7 +301,7 @@ public static function img($upload_id) return ""; } } - + /** * Get Thumbnail image path of Uploaded image * @@ -355,7 +355,7 @@ public static function createThumbnail($filepath, $thumbpath, $thumbnail_width, $imgt($new_image, $thumbpath); return file_exists($thumbpath); } - + /** * Print the menu editor view. * This needs to be done recursively @@ -377,15 +377,15 @@ public static function print_menu_editor($menu) $info->url = $menu->url; $info->type = $menu->type; $info->icon = $menu->icon; - + $editing .= ''; } $str = '
  • ' . $menu->name . ' ' . $editing . '
    '; - + $childrens = \Dwij\Laraadmin\Models\Menu::where("parent", $menu->id)->orderBy('hierarchy', 'asc')->get(); - + if(count($childrens) > 0) { $str .= '
      '; foreach($childrens as $children) { @@ -396,7 +396,7 @@ public static function print_menu_editor($menu) $str .= ''; return $str; } - + /** * Print the sidebar menu view. * This needs to be done recursively @@ -420,9 +420,9 @@ public static function print_menu($menu, $active = false) if($active) { $active_str = 'class="active"'; } - + $str = 'url) . '"> ' . LAHelper::real_module_name($menu->name) . ' ' . $subviewSign . ''; - + if(count($childrens)) { $str .= '
        '; foreach($childrens as $children) { @@ -436,7 +436,7 @@ public static function print_menu($menu, $active = false) $str .= ''; return $str; } - + /** * Print the top navbar menu view. * This needs to be done recursively @@ -450,7 +450,7 @@ public static function print_menu($menu, $active = false) public static function print_menu_topnav($menu, $active = false) { $childrens = \Dwij\Laraadmin\Models\Menu::where("parent", $menu->id)->orderBy('hierarchy', 'asc')->get(); - + $treeview = ""; $treeview2 = ""; $subviewSign = ""; @@ -463,9 +463,9 @@ public static function print_menu_topnav($menu, $active = false) if($active) { $active_str = 'class="active"'; } - + $str = '
      • url) . '">' . LAHelper::real_module_name($menu->name) . $subviewSign . ''; - + if(count($childrens)) { $str .= '
    '; } $str .= '
  • '; + return $str; } diff --git a/src/Installs/resources/views/la/modules/field_edit.blade.php b/src/Installs/resources/views/la/modules/field_edit.blade.php index 09714f21..a27a0cb0 100644 --- a/src/Installs/resources/views/la/modules/field_edit.blade.php +++ b/src/Installs/resources/views/la/modules/field_edit.blade.php @@ -11,29 +11,29 @@ @section("main-content")
    - +
    {!! Form::model($field, ['route' => [config('laraadmin.adminRoute') . '.module_fields.update', $field->id ], 'method'=>'PUT', 'id' => 'field-edit-form']) !!} {{ Form::hidden("module_id", $module->id) }} - +
    - {{ Form::text("label", null, ['class'=>'form-control', 'placeholder'=>'Field Label', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>20, 'required' => 'required']) }} + {{ Form::text("label", null, ['class'=>'form-control', 'placeholder'=>'Field Label', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>30, 'required' => 'required']) }}
    - +
    - {{ Form::text("colname", null, ['class'=>'form-control', 'placeholder'=>'Column Name (lowercase)', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>20, 'data-rule-banned-words' => 'true', 'required' => 'required']) }} + {{ Form::text("colname", null, ['class'=>'form-control', 'placeholder'=>'Column Name (lowercase)', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>30, 'data-rule-banned-words' => 'true', 'required' => 'required']) }}
    - +
    {{ Form::select("field_type", $ftypes, null, ['class'=>'form-control', 'required' => 'required']) }}
    - +
    @@ -46,19 +46,19 @@ {{ Form::text("defaultvalue", null, ['class'=>'form-control', 'placeholder'=>'Default Value']) }}
    - +
    {{ Form::number("minlength", null, ['class'=>'form-control', 'placeholder'=>'Default Value']) }}
    - +
    {{ Form::number("maxlength", null, ['class'=>'form-control', 'placeholder'=>'Default Value']) }}
    - +
    {{ Form::checkbox("required", "required") }} @@ -70,7 +70,7 @@ {{ Form::checkbox("listing_col", "listing_col") }}
    - +
    {{ Form::radio("popup_value_type", "list", $popup_value_type_list) }} From List
    {{ Form::select("popup_vals_table", $tables, $default_val, ['class'=>'form-control', 'rel' => '']) }} - + - +
    - +
    {!! Form::submit( 'Update', ['class'=>'btn btn-success']) !!} Cancel
    {!! Form::close() !!} - + @if($errors->any())
      @foreach($errors->all() as $error) @@ -130,7 +130,7 @@ $("select.popup_vals_list").show(); $("select.popup_vals_list").next().show(); $("select[name='popup_vals_table']").hide(); - + function showValuesSection() { var ft_val = $("select[name='field_type']").val(); if(ft_val == 7 || ft_val == 15 || ft_val == 18 || ft_val == 20) { @@ -138,12 +138,12 @@ function showValuesSection() { } else { $(".form-group.values").hide(); } - + $('#length_div').removeClass("hide"); if(ft_val == 2 || ft_val == 4 || ft_val == 5 || ft_val == 7 || ft_val == 9 || ft_val == 11 || ft_val == 12 || ft_val == 15 || ft_val == 18 || ft_val == 21 || ft_val == 24 ) { $('#length_div').addClass("hide"); } - + $('#unique_val').removeClass("hide"); if(ft_val == 1 || ft_val == 2 || ft_val == 3 || ft_val == 7 || ft_val == 9 || ft_val == 11 || ft_val == 12 || ft_val == 15 || ft_val == 18 || ft_val == 20 || ft_val == 21 || ft_val == 24 ) { $('#unique_val').addClass("hide"); @@ -167,7 +167,7 @@ function showValuesTypes() { $("select.popup_vals_list").next().hide(); } } - + $("input[name='popup_value_type']").on("change", function() { showValuesTypes(); }); @@ -178,8 +178,8 @@ function showValuesTypes() { }, "Column name not allowed."); $("#field-edit-form").validate({ - + }); }); -@endpush \ No newline at end of file +@endpush diff --git a/src/Installs/resources/views/la/modules/index.blade.php b/src/Installs/resources/views/la/modules/index.blade.php index 0603d8b8..3b3f9f4b 100644 --- a/src/Installs/resources/views/la/modules/index.blade.php +++ b/src/Installs/resources/views/la/modules/index.blade.php @@ -30,7 +30,7 @@ Actions - + @foreach ($modules as $module) @@ -63,8 +63,8 @@
      + {{ Form::text("name", null, ['class'=>'form-control', 'placeholder'=>'Module Name', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>30, 'required' => 'required']) }} +
      -->
      - {{ Form::text("name", null, ['class'=>'form-control', 'placeholder'=>'Module Name', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>20, 'required' => 'required']) }} + {{ Form::text("name", null, ['class'=>'form-control', 'placeholder'=>'Module Name', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>30, 'required' => 'required']) }}
      @@ -149,7 +149,7 @@ {{ Form::open(['route' => [config('laraadmin.adminRoute') . '.modules.destroy', 0], 'id' => 'module_del_form', 'method' => 'delete', 'style'=>'display:inline']) }} {{ Form::close() }} - No + No
      @@ -221,7 +221,7 @@ success: function(data) { var files = data.files; var filesList = "
        "; - for ($i = 0; $i < files.length; $i++) { + for ($i = 0; $i < files.length; $i++) { filesList += "
      • " + files[$i] + "
      • "; } filesList += "
      "; @@ -231,11 +231,11 @@ }); $('.update_module').on("click", function () { - var module_id = $(this).attr('module_id'); + var module_id = $(this).attr('module_id'); var module_label = $(this).attr('module_label'); var module_icon = $(this).attr('module_icon'); $(".module_label_edit").val(module_label); - $(".module_icon_edit").val(module_icon); + $(".module_icon_edit").val(module_icon); $("#module_update").modal('show'); $(".update-icon").html('
      '); @@ -252,13 +252,13 @@ }); }); }); - + $('input[name=icon]').iconpicker(); $("#dt_modules").DataTable({ - + }); $("#module-add-form").validate({ - + }); }); diff --git a/src/Installs/resources/views/la/modules/show.blade.php b/src/Installs/resources/views/la/modules/show.blade.php index b9f13b6d..dd8dacc2 100644 --- a/src/Installs/resources/views/la/modules/show.blade.php +++ b/src/Installs/resources/views/la/modules/show.blade.php @@ -40,7 +40,7 @@ @endif
    - +
    @if($module->view_col != "") @if(isset($module->is_gen) && $module->is_gen) @@ -48,14 +48,14 @@ @else - + @endif @else
    To generate Migration or CRUD, set the view column using the icon next to a column
    @endif
    - +
    @@ -63,19 +63,19 @@ @@ -105,7 +105,7 @@ - + @foreach ($module->fields as $field) {{ $field['sort'] }} @@ -173,7 +173,7 @@ @foreach($roles as $role) {{ $role->name }} - + view == 1) { echo 'checked="checked"'; } ?> > create == 1) { echo 'checked="checked"'; } ?> > edit == 1) { echo 'checked="checked"'; } ?> > @@ -241,7 +241,7 @@ {{ Form::open(['route' => [config('laraadmin.adminRoute') . '.modules.destroy', 0], 'id' => 'module_del_form', 'method' => 'delete', 'style'=>'display:inline']) }} {{ Form::close() }} - No + No
    @@ -262,9 +262,9 @@
    - {{ Form::text("label", null, ['class'=>'form-control', 'placeholder'=>'Field Label', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>20, 'required' => 'required']) }} + {{ Form::text("label", null, ['class'=>'form-control', 'placeholder'=>'Field Label', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>30, 'required' => 'required']) }}
    - +
    getDefault(); - } - $col_list[$col] = $col." - ".$column->getType().' - '.$column->getLength().' - '.$default; + } + $col_list[$col] = $col." - ".$column->getType().' - '.$column->getLength().' - '.$default; } } if($module->is_gen == 0 && count($col_list) > 0) { ?> {{ Form::select("colname", $col_list, $col_list, ['class'=>'form-control', 'required' => 'required']) }} - {{ Form::text("colname", null, ['class'=>'form-control', 'placeholder'=>'Column Name (lowercase)', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>20, 'data-rule-banned-words' => 'true', 'required' => 'required']) }} + {{ Form::text("colname", null, ['class'=>'form-control', 'placeholder'=>'Column Name (lowercase)', 'data-rule-minlength' => 2, 'data-rule-maxlength'=>30, 'data-rule-banned-words' => 'true', 'required' => 'required']) }}
    - +
    {{ Form::select("field_type", $ftypes, null, ['class'=>'form-control', 'required' => 'required']) }}
    - +
    {{ Form::checkbox("unique", "unique", false, []) }}
    -
    - +
    +
    @@ -317,19 +317,19 @@ {{ Form::number("minlength", null, ['class'=>'form-control', 'placeholder'=>'Minimum Value']) }}
    - +
    {{ Form::number("maxlength", null, ['class'=>'form-control', 'placeholder'=>'Maximum Value']) }}
    - +
    {{ Form::checkbox("required", "required", false, []) }}
    - +
    {{ Form::checkbox("listing_col", "listing_col", false, []) }} @@ -341,7 +341,7 @@ {{-- Form::text("popup_vals", null, ['class'=>'form-control', 'placeholder'=>'Popup Values (Only for Radio, Dropdown, Multiselect, Taginput)']) --}}
    --> - +
    @@ -349,7 +349,7 @@
    {{ Form::select("popup_vals_table", $tables, "", ['id'=>'popup_vals_table', 'class'=>'form-control', 'rel' => '']) }} - +
    - +