Commit 56eb74ae authored by Nicolas Widart's avatar Nicolas Widart

Adding user module as composer package

parent 200db025
rules:
php.interface_has_no_interface_suffix:
enabled: false
language: php
php:
- 5.6
- 5.5
- 5.4
- hhvm
<?php namespace Modules\Setting\Composers;
use Illuminate\Contracts\View\View;
use Modules\Core\Composers\BaseSidebarViewComposer;
class SidebarViewComposer extends BaseSidebarViewComposer
{
public function compose(View $view)
{
$view->items->put('setting', [
'weight' => 5,
'request' => "*/$view->prefix/settings*",
'route' => 'dashboard.setting.index',
'icon-class' => 'fa fa-cog',
'title' => 'Settings',
'permission' => $this->auth->hasAccess('settings.index')
]);
}
}
<?php
return [
'settings' => [
'index'
]
];
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateSettingsTable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('settings', function (Blueprint $table) {
$table->increments('id');
$table->string('name');
$table->string('plainValue');
$table->boolean('isTranslatable');
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('settings');
}
}
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateSettingTranslationsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('setting_translations', function(Blueprint $table)
{
$table->increments('id');
$table->integer('setting_id')->unsigned();
$table->string('locale')->index();
$table->string('value');
$table->text('description');
$table->unique(['setting_id','locale']);
$table->foreign('setting_id')->references('id')->on('settings')->onDelete('cascade');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('setting_translations');
}
}
<?php namespace Modules\Setting\Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
class SettingDatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
*
* @return void
*/
public function run()
{
Model::unguard();
}
}
<?php namespace Modules\Setting\Entities;
use Dimsav\Translatable\Translatable;
use Illuminate\Database\Eloquent\Model;
class Setting extends Model
{
use Translatable;
public $translatedAttributes = ['value', 'description'];
protected $fillable = ['name', 'value', 'description', 'isTranslatable', 'plainValue'];
}
<?php namespace Modules\Setting\Entities;
use Illuminate\Database\Eloquent\Model;
class SettingTranslation extends Model
{
public $timestamps = false;
protected $fillable = ['value', 'description'];
}
<?php namespace Modules\Setting\Facades;
use Illuminate\Support\Facades\Facade;
class Settings extends Facade
{
protected static function getFacadeAccessor() { return 'setting.settings'; }
}
<?php namespace Modules\Setting\Http\Controllers\Admin;
use Illuminate\Session\Store;
use Illuminate\Support\Facades\Redirect;
use Illuminate\Support\Facades\View;
use Laracasts\Flash\Flash;
use Modules\Core\Http\Controllers\Admin\AdminBaseController;
use Modules\Setting\Http\Requests\SettingRequest;
use Modules\Setting\Repositories\SettingRepository;
class SettingController extends AdminBaseController
{
/**
* @var SettingRepository
*/
private $setting;
/**
* @var Module
*/
private $module;
/**
* @var Store
*/
private $session;
public function __construct(SettingRepository $setting, Store $session)
{
parent::__construct();
$this->setting = $setting;
$this->module = app('modules');
$this->session = $session;
}
public function index()
{
return Redirect::route('dashboard.module.settings', ['core']);
}
public function store(SettingRequest $request)
{
$this->setting->createOrUpdate($request->all());
Flash::success(trans('setting::messages.settings saved'));
return Redirect::route('dashboard.module.settings', [$this->session->get('module', 'Core')]);
}
public function getModuleSettings($currentModule)
{
$this->session->set('module', $currentModule);
$modulesWithSettings = $this->setting->moduleSettings($this->module->enabled());
$translatableSettings = $this->setting->translatableModuleSettings($currentModule);
$plainSettings = $this->setting->plainModuleSettings($currentModule);
$dbSettings = $this->setting->savedModuleSettings($currentModule);
return View::make('setting::admin.module-settings',
compact('currentModule', 'translatableSettings', 'plainSettings', 'dbSettings', 'modulesWithSettings'));
}
}
<?php namespace Modules\Setting\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class SettingRequest extends FormRequest
{
public function rules()
{
return [];
}
public function authorize()
{
return true;
}
public function messages()
{
return [];
}
}
<?php
use Illuminate\Routing\Router;
$router->group(['prefix' => LaravelLocalization::setLocale(), 'before' => 'LaravelLocalizationRedirectFilter|auth.admin'], function(Router $router) {
$router->group(['prefix' => Config::get('core::core.admin-prefix'), 'namespace' => 'Modules\Setting\Http\Controllers'], function(Router $router)
{
$router->get('settings/{module}', ['as' => 'dashboard.module.settings', 'uses' => 'Admin\SettingController@getModuleSettings']);
$router->resource('settings', 'Admin\SettingController', ['except' => ['show', 'edit', 'update', 'destroy', 'create'], 'names' => [
'index' => 'dashboard.setting.index',
'store' => 'dashboard.setting.store'
]]);
});
});
<?php namespace Modules\Setting\Providers;
use Illuminate\Routing\Router;
use Illuminate\Foundation\Support\Providers\RouteServiceProvider as ServiceProvider;
class RouteServiceProvider extends ServiceProvider
{
/**
* The root namespace to assume when generating URLs to actions.
*
* @var string
*/
protected $rootUrlNamespace = 'Modules\Setting\Http\Controllers';
/**
* The controllers to scan for route annotations.
*
* @var array
*/
protected $scan = [
'Modules\Setting\Http\Controllers',
];
/**
* Called before routes are registered.
*
* Register any model bindings or pattern based filters.
*
* @param Router $router
* @return void
*/
public function before(Router $router)
{
//
}
/**
* Define the routes for the application.
*
* @return void
*/
public function map(Router $router)
{
require __DIR__ . '/../Http/routes.php';
}
}
<?php namespace Modules\Setting\Providers;
use Illuminate\Foundation\AliasLoader;
use Illuminate\Support\ServiceProvider;
use Modules\Setting\Entities\Setting;
use Modules\Setting\Repositories\Eloquent\EloquentSettingRepository;
use Modules\Setting\Support\Settings;
class SettingServiceProvider extends ServiceProvider {
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = false;
/**
* Register the service provider.
*
* @return void
*/
public function register()
{
$this->app->booted(function () {
$this->registerBindings();
});
$this->app['setting.settings'] = $this->app->share(function($app)
{
return new Settings($app['Modules\Setting\Repositories\SettingRepository'], $app['cache']);
});
$this->app->booting(function()
{
$loader = AliasLoader::getInstance();
$loader->alias('Settings', 'Modules\Setting\Facades\Settings');
});
}
/**
* Get the services provided by the provider.
*
* @return array
*/
public function provides()
{
return array();
}
private function registerBindings()
{
$this->app->bind(
'Modules\Setting\Repositories\SettingRepository',
function() {
return new EloquentSettingRepository(new Setting);
}
);
$this->app->bind(
'Modules\Core\Contracts\Setting',
'Modules\Setting\Support\Settings'
);
}
}
<?php namespace Modules\Setting\Repositories\Eloquent;
use Illuminate\Support\Facades\Config;
use Modules\Core\Repositories\Eloquent\EloquentBaseRepository;
use Modules\Setting\Repositories\SettingRepository;
class EloquentSettingRepository extends EloquentBaseRepository implements SettingRepository
{
/**
* Update a resource
* @param $id
* @param $data
* @return mixed
*/
public function update($id, $data)
{
}
/**
* @param mixed $data
* @return mixed
*/
public function create($data)
{
}
/**
* Return all settings, with the setting name as key
* @return array
*/
public function all()
{
$rawSettings = parent::all();
$settings = [];
foreach ($rawSettings as $setting) {
$settings[$setting->name] = $setting;
}
return $settings;
}
/**
* Create or update the settings
* @param $settings
* @return mixed|void
*/
public function createOrUpdate($settings)
{
$this->removeTokenKey($settings);
foreach ($settings as $settingName => $settingValues) {
if ($setting = $this->findByName($settingName)) {
$this->updateSetting($setting, $settingValues);
continue;
}
$this->createForName($settingName, $settingValues);
}
}
/**
* Remove the token from the input array
* @param $settings
*/
private function removeTokenKey(&$settings)
{
unset($settings['_token']);
}
/**
* Find a setting by its name
* @param $settingName
* @return mixed
*/
public function findByName($settingName)
{
return $this->model->where('name', $settingName)->first();
}
/**
* Create a setting with the given name
* @param string $settingName
* @param $settingValues
*/
private function createForName($settingName, $settingValues)
{
$setting = new $this->model;
$setting->name = $settingName;
if (is_array($settingValues)) {
$setting->isTranslatable = true;
$this->setTranslatedAttributes($settingValues, $setting);
} else {
$setting->isTranslatable = false;
$setting->plainValue = $settingValues;
}
return $setting->save();
}
/**
* Update the given setting
* @param $setting
* @param $settingValues
*/
private function updateSetting($setting, $settingValues)
{
if (is_array($settingValues)) {
$this->setTranslatedAttributes($settingValues, $setting);
} else {
$setting->plainValue = $settingValues;
}
return $setting->save();
}
/**
* @param $settingValues
* @param $setting
*/
private function setTranslatedAttributes($settingValues, $setting)
{
foreach ($settingValues as $lang => $value) {
$setting->translateOrNew($lang)->value = $value;
}
}
/**
* Return all modules that have settings
* with its settings
* @param array|string $modules
* @return array
*/
public function moduleSettings($modules)
{
if (is_string($modules)) {
return Config::get(strtolower($modules) . "::settings");
}
$modulesWithSettings = [];
foreach ($modules as $module) {
if ($moduleSettings = Config::get(strtolower($module->getName()) . "::settings")) {
$modulesWithSettings[$module->getName()] = $moduleSettings;
}
}
return $modulesWithSettings;
}
/**
* Return the saved module settings
* @param $module
* @return mixed
*/
public function savedModuleSettings($module)
{
$moduleSettings = [];
foreach ($this->findByModule($module) as $setting) {
$moduleSettings[$setting->name] = $setting;
}
return $moduleSettings;
}
/**
* Find settings by module name
* @param string $module Module name
* @return mixed
*/
public function findByModule($module)
{
return $this->model->where('name', 'LIKE', $module . '::%')->get();
}
/**
* Find the given setting name for the given module
* @param string $settingName
* @return mixed
*/
public function get($settingName)
{
return $this->model->where('name', 'LIKE', "{$settingName}")->first();
}
/**
* Return the translatable module settings
* @param $module
* @return mixed
*/
public function translatableModuleSettings($module)
{
return array_filter($this->moduleSettings($module), function($setting) {
return isset($setting['translatable']);
});
}
/**
* Return the non translatable module settings
* @param $module
* @return array
*/
public function plainModuleSettings($module)
{
return array_filter($this->moduleSettings($module), function($setting) {
return !isset($setting['translatable']);
});
}
}
<?php namespace Modules\Setting\Repositories;
use Modules\Core\Repositories\BaseRepository;
interface SettingRepository extends BaseRepository
{
/**
* Create or update the settings
* @param $settings
* @return mixed
*/
public function createOrUpdate($settings);
/**
* Find a setting by its name
* @param $settingName
* @return mixed
*/
public function findByName($settingName);
/**
* Return all modules that have settings
* with its settings
* @param array|string $modules
* @return array
*/
public function moduleSettings($modules);
/**
* Return the saved module settings
* @param $module
* @return mixed
*/
public function savedModuleSettings($module);
/**
* Find settings by module name
* @param string $module
* @return mixed
*/
public function findByModule($module);
/**
* Find the given setting name for the given module
* @param string $settingName
* @return mixed
*/
public function get($settingName);
/**
* Return the translatable module settings
* @param $module
* @return array
*/
public function translatableModuleSettings($module);
/**
* Return the non translatable module settings
* @param $module
* @return array
*/
public function plainModuleSettings($module);
}
<?php
return [
'settings saved' => 'Settings saved!'
];
<?php
return [
'title' => [
'settings' => 'Settings',
'general settings' => 'General settings',
'module settings' => 'Module settings',
'module name settings' => ':module module settings',
],
'breadcrumb' => [
'settings' => 'Settings',
'module settings' => ':module module settings',
]
];
<?php
return [
'settings saved' => 'Configurations sauvegardées!'
];
<?php
return [
'title' => [
'settings' => 'Configurations',
'general settings' => 'Configuration générale',
'module settings' => 'Configuration des modules',
'module name settings' => 'Configuration du module :module',
],
'breadcrumb' => [
'settings' => 'Configurations',
'module settings' => 'Configuration du :module',
]
];
<div class="checkbox">
<label for="{{ $settingName }}">
<input id="{{ $settingName }}"
name="{{ $settingName }}"
type="checkbox"
class="flat-blue"
{{ isset($dbSettings[$settingName]) && (bool)$dbSettings[$settingName]->plainValue == true ? 'checked' : '' }}
value="1" />
{{ $moduleInfo['description'] }}
</label>
</div>
<div class='form-group'>
{!! Form::label($settingName, $moduleInfo['description']) !!}
<?php if (isset($dbSettings[$settingName])): ?>
{!! Form::input('number', $settingName, Input::old($settingName, $dbSettings[$settingName]->plainValue), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php else: ?>
{!! Form::input('number', $settingName, Input::old($settingName), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php endif; ?>
</div>
<div class="checkbox">
<?php foreach($moduleInfo['options'] as $value => $optionName): ?>
<label for="{{ $optionName }}">
<input id="{{ $optionName }}"
name="{{ $settingName }}"
type="radio"
class="flat-blue"
{{ isset($dbSettings[$settingName]) && (bool)$dbSettings[$settingName]->plainValue == $value ? 'checked' : '' }}
value="{{ $value }}" />
{{ $optionName }}
</label>
<?php endforeach; ?>
</div>
<div class='form-group'>
{!! Form::label($settingName, $moduleInfo['description']) !!}
<?php if (isset($dbSettings[$settingName])): ?>
{!! Form::text($settingName, Input::old($settingName, $dbSettings[$settingName]->plainValue), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php else: ?>
{!! Form::text($settingName, Input::old($settingName), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php endif; ?>
</div>
<div class='form-group'>
{!! Form::label($settingName, $moduleInfo['description']) !!}
<?php if (isset($dbSettings[$settingName])): ?>
{!! Form::textarea($settingName, Input::old($settingName, $dbSettings[$settingName]->plainValue), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php else: ?>
{!! Form::textarea($settingName, Input::old($settingName), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php endif; ?>
</div>
<div class="checkbox">
<label for="{{ $settingName . "[$lang]" }}">
<input id="{{ $settingName . "[$lang]" }}"
name="{{ $settingName . "[$lang]" }}"
type="checkbox"
class="flat-blue"
{{ isset($dbSettings[$settingName]) && (bool)$dbSettings[$settingName]->translate($lang)->value == true ? 'checked' : '' }}
value="1" />
{{ $moduleInfo['description'] }}
</label>
</div>
<div class='form-group'>
{!! Form::label($settingName . "[$lang]", $moduleInfo['description']) !!}
<?php if (isset($dbSettings[$settingName])): ?>
{!! Form::input('number', $settingName . "[$lang]", Input::old($settingName . "[$lang]", $dbSettings[$settingName]->translate($lang)->value), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php else: ?>
{!! Form::input('number', $settingName . "[$lang]", Input::old($settingName . "[$lang]"), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php endif; ?>
</div>
<div class="checkbox">
<?php foreach($moduleInfo['options'] as $value => $optionName): ?>
<label for="{{ $optionName . "[$lang]" }}">
<input id="{{ $optionName . "[$lang]" }}"
name="{{ $settingName . "[$lang]" }}"
type="radio"
class="flat-blue"
{{ isset($dbSettings[$settingName]) && (bool)$dbSettings[$settingName]->translate($lang)->value == $value ? 'checked' : '' }}
value="{{ $value }}" />
{{ $optionName }}
</label>
<?php endforeach; ?>
</div>
<div class='form-group'>
{!! Form::label($settingName . "[$lang]", $moduleInfo['description']) !!}
<?php if (isset($dbSettings[$settingName])): ?>
{!! Form::text($settingName . "[$lang]", Input::old($settingName . "[$lang]", $dbSettings[$settingName]->translate($lang)->value), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php else: ?>
{!! Form::text($settingName . "[$lang]", Input::old($settingName . "[$lang]"), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php endif; ?>
</div>
<div class='form-group'>
{!! Form::label($settingName . "[$lang]", $moduleInfo['description']) !!}
<?php if (isset($dbSettings[$settingName])): ?>
{!! Form::textarea($settingName . "[$lang]", Input::old($settingName . "[$lang]", $dbSettings[$settingName]->translate($lang)->value), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php else: ?>
{!! Form::textarea($settingName . "[$lang]", Input::old($settingName . "[$lang]"), ['class' => 'form-control', 'placeholder' => $moduleInfo['description']]) !!}
<?php endif; ?>
</div>
@extends('core::layouts.master')
@section('content-header')
<h1>
{{ trans('setting::settings.title.module name settings', ['module' => ucfirst($currentModule)]) }}
</h1>
<ol class="breadcrumb">
<li><a href="#"><i class="fa fa-dashboard"></i> {{ trans('core::core.breadcrumb.home') }}</a></li>
<li><a href="{{ URL::route('dashboard.setting.index') }}"><i class="fa fa-cog"></i> {{ trans('setting::settings.breadcrumb.settings') }}</a></li>
<li class="active"><i class="fa fa-cog"></i> {{ trans('setting::settings.breadcrumb.module settings', ['module' => ucfirst($currentModule)]) }}</li>
</ol>
@stop
@section('styles')
<link href="{!! Module::asset('core:css/vendor/iCheck/flat/blue.css') !!}" rel="stylesheet" type="text/css" />
@stop
@section('content')
{!! Form::open(['route' => ['dashboard.setting.store'], 'method' => 'post']) !!}
<div class="row">
<div class="sidebar-nav col-sm-2">
<div class="box box-info">
<div class="box-header">
<h3 class="box-title">{{ trans('setting::settings.title.module settings') }}</h3>
</div>
<style>
a.active {
text-decoration: none;
background-color: #eee;
}
</style>
<ul class="nav nav-list">
<?php foreach($modulesWithSettings as $module => $settings): ?>
<li>
<a href="{{ URL::route('dashboard.module.settings', [$module]) }}" class="{{ $module == ucfirst($currentModule) ? 'active' : '' }}">
{{ $module }}
<small class="badge pull-right bg-blue">{{ count($settings) }}</small>
</a>
</li>
<?php endforeach; ?>
</ul>
</div>
</div>
<div class="col-md-10">
<div class="box box-info">
<div class="box-header">
<h3 class="box-title">{{ trans('core::core.title.translatable fields') }}</h3>
</div>
<?php if ($translatableSettings): ?>
<div class="box-body">
<div class="nav-tabs-custom">
@include('core::partials.form-tab-headers')
<div class="tab-content">
<?php $i = 0; ?>
<?php foreach(LaravelLocalization::getSupportedLocales() as $locale => $language): ?>
<?php $i++; ?>
<div class="tab-pane {{ App::getLocale() == $locale ? 'active' : '' }}" id="tab_{{ $i }}">
@include('setting::admin.partials.fields', ['settings' => $translatableSettings])
</div>
<?php endforeach; ?>
</div>
</div>
</div>
<?php endif; ?>
</div>
<?php if ($plainSettings): ?>
<div class="box box-info">
<div class="box-header">
<h3 class="box-title">{{ trans('core::core.title.non translatable fields') }}</h3>
</div>
<div class="box-body">
@include('setting::admin.partials.fields', ['settings' => $plainSettings])
</div>
</div>
<?php endif; ?>
<div class="box-footer">
<button type="submit" class="btn btn-primary btn-flat">{{ trans('core::core.button.update') }}</button>
<a class="btn btn-danger pull-right btn-flat" href="{{ URL::route('dashboard.setting.index')}}"><i class="fa fa-times"></i> {{ trans('core::core.button.cancel') }}</a>
</div>
</div>
</div>
{!! Form::close() !!}
@stop
@section('scripts')
<script>
$( document ).ready(function() {
$('input[type="checkbox"].flat-blue, input[type="radio"].flat-blue').iCheck({
checkboxClass: 'icheckbox_flat-blue',
radioClass: 'iradio_flat-blue'
});
$('input[type="checkbox"]').on('ifChecked', function(){
$(this).parent().find('input[type=hidden]').remove();
});
$('input[type="checkbox"]').on('ifUnchecked', function(){
var name = $(this).attr('name'),
input = '<input type="hidden" name="' + name + '" value="0" />';
$(this).parent().append(input);
});
});
</script>
@stop
<?php use Illuminate\Support\Str; ?>
<?php foreach($settings as $settingName => $moduleInfo): ?>
<?php $fieldView = Str::contains($moduleInfo['view'], '::') ? $moduleInfo['view'] : "setting::admin.fields.translatable.{$moduleInfo['view']}" ?>
@include($fieldView, [
'lang' => $locale,
'settings' => $settings,
'setting' => $settingName,
'moduleInfo' => $moduleInfo,
'settingName' => strtolower($currentModule) . '::' . $settingName
])
<?php endforeach;
<?php namespace Modules\Setting\Support;
use Illuminate\Cache\CacheManager;
use Modules\Core\Contracts\Setting;
use Modules\Setting\Repositories\SettingRepository;
class Settings implements Setting
{
/**
* @var SettingRepository
*/
private $setting;
/**
* @var Repository
*/
private $cache;
/**
* @param SettingRepository $setting
* @param CacheManager $cache
*/
public function __construct(SettingRepository $setting, CacheManager $cache)
{
$this->setting = $setting;
$this->cache = $cache;
}
/**
* Getting the setting
* @param string $name
* @param null $locale
* @param null $default
* @return mixed
*/
public function get($name, $locale = null, $default = null)
{
if (!$this->cache->has("setting.$name")) {
$setting = $this->setting->get($name);
if ($setting) {
if ($setting->isTranslatable) {
$this->cache->put("setting.$name", $setting->translate($locale)->value, '3600');
} else {
$this->cache->put("setting.$name", $setting->plainValue, '3600');
}
} else {
$default = is_null($default) ? '' : $default;
$this->cache->put("setting.$name", $default, '3600');
}
}
return $this->cache->get("setting.$name");
}
/**
* Determine if the given configuration value exists.
*
* @param string $name
* @return bool
*/
public function has($name)
{
$default = microtime(true);
return $this->get($name, null, $default) !== $default;
}
/**
* Set a given configuration value.
*
* @param string $key
* @param mixed $value
* @return void
*/
public function set($key, $value)
{
}
}
{
"name": "asgardcms/setting-module",
"type": "asgard-module",
"description": "Setting module for AsgardCMS. Handles all the site settings.",
"keywords": [
"asgardcms",
"settings"
],
"license": "MIT",
"authors": [
{
"name": "Nicolas Widart",
"email": "info@asgardcms.com",
"role": "Developer"
}
],
"support": {
"email": "support@asgardcms.com",
"issues": "https://github.com/AsgardCms/Setting/issues",
"source": "https://github.com/AsgardCms/Setting"
},
"require": {
"php": ">=5.4",
"composer/installers": "~1.0"
},
"minimum-stability": "dev"
}
<?php
View::composer('core::partials.sidebar-nav', 'Modules\Setting\Composers\SidebarViewComposer');
{
"name": "Setting",
"alias": "setting",
"description": "",
"keywords": [
],
"active": 1,
"providers": [
"Modules\\Setting\\Providers\\SettingServiceProvider",
"Modules\\Setting\\Providers\\RouteServiceProvider"
],
"files": [
"start.php"
]
}
# Setting Module
[![SensioLabsInsight](https://insight.sensiolabs.com/projects/92d544b4-a3ca-4c2a-9ffd-0741c521cb14/mini.png)](https://insight.sensiolabs.com/projects/92d544b4-a3ca-4c2a-9ffd-0741c521cb14)
[![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/AsgardCms/Setting/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/AsgardCms/Setting/?branch=master)
[![Code Climate](https://codeclimate.com/github/AsgardCms/Setting/badges/gpa.svg)](https://codeclimate.com/github/AsgardCms/Setting)
<?php
require __DIR__ . '/composers.php';
......@@ -4,7 +4,7 @@
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically"
],
"hash": "00e6999f37dfff9d00d0b0b636c121e3",
"hash": "ce259660a32247623f80e85b594b5b20",
"packages": [
{
"name": "asgardcms/demo-theme",
......@@ -79,6 +79,45 @@
],
"time": "2014-12-07 19:22:59"
},
{
"name": "asgardcms/user-module",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/AsgardCms/User.git",
"reference": "1153d096e260723b7abf08be3182f690c361cd02"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/AsgardCms/User/zipball/1153d096e260723b7abf08be3182f690c361cd02",
"reference": "1153d096e260723b7abf08be3182f690c361cd02",
"shasum": ""
},
"require": {
"composer/installers": "~1.0",
"php": ">=5.4"
},
"type": "asgard-module",
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Widart",
"email": "info@asgardcms.com",
"role": "Developer"
}
],
"description": "User module for AsgardCMS. Handles the authentication and authorisation as well as the user management.",
"keywords": [
"Authentication",
"asgardcms",
"authorisation",
"user"
],
"time": "2014-12-01 19:24:27"
},
{
"name": "asgardcms/workshop-module",
"version": "dev-master",
......@@ -3692,7 +3731,8 @@
"mpedrera/themify": 20,
"asgardcms/page-module": 20,
"asgardcms/demo-theme": 20,
"asgardcms/workshop-module": 20
"asgardcms/workshop-module": 20,
"asgardcms/user-module": 20
},
"prefer-stable": false,
"platform": [],
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment