Merge pull request #6 from cuneytsenturk/master

replace offline to offlinepayment  payment gateways
This commit is contained in:
Cüneyt Şentürk 2017-09-18 20:00:41 +03:00 committed by GitHub
commit 0be2385343
37 changed files with 272 additions and 167 deletions

View File

@ -48,7 +48,7 @@ class Settings extends Seeder
'general.session_lifetime' => '30',
'general.file_size' => '2',
'general.file_types' => 'pdf,jpeg,jpg,png',
'offline.payment.methods' => '[{"code":"offline.cash.1","name":"Cash","order":"1","description":null},{"code":"offline.bank_transfer.2","name":"Bank Transfer","order":"2","description":null}]',
'offlinepayment.methods' => '[{"code":"offlinepayment.cash.1","name":"Cash","order":"1","description":null},{"code":"offlinepayment.bank_transfer.2","name":"Bank Transfer","order":"2","description":null}]',
]);
}
}

View File

@ -1,7 +0,0 @@
<?php
return [
'name' => 'Offline',
];

View File

@ -1,115 +0,0 @@
<?php
namespace Modules\Offline\Http\Controllers;
use Artisan;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\Offline\Http\Requests\Setting as Request;
use Modules\Offline\Http\Requests\SettingGet as GRequest;
use Modules\Offline\Http\Requests\SettingDelete as DRequest;
class Settings extends Controller
{
/**
* Show the form for editing the specified resource.
* @return Response
*/
public function edit()
{
$items = json_decode(setting('offline.payment.methods'));
return view('offline::edit', compact('items'));
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(Request $request)
{
$offline = json_decode(setting('offline.payment.methods'), true);
if (isset($request['method'])) {
foreach ($offline as $key => $method) {
if ($method['code'] == $request['method']) {
$offline[$key]['code'] = 'offline.' . $request['code'] . '.' . (count($offline) + 1);
$offline[$key]['name'] = $request['name'];
$offline[$key]['order'] = $request['order'];
$offline[$key]['description'] = $request['description'];
}
}
} else {
$offline[] = array(
'code' => 'offline.' . $request['code'] . '.' . (count($offline) + 1),
'name' => $request['name'],
'order' => $request['order'],
'description' => $request['description']
);
}
// Set Api Token
setting()->set('offline.payment.methods', json_encode($offline));
setting()->save();
Artisan::call('cache:clear');
return redirect('modules/offline/settings');
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function get(GRequest $request)
{
$code = $request['code'];
$offline = json_decode(setting('offline.payment.methods'), true);
foreach ($offline as $key => $method) {
if ($method['code'] == $code) {
$data = $method;
}
}
return response()->json([
'errors' => false,
'success' => true,
'data' => $data
]);
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function delete(DRequest $request)
{
$code = $request['code'];
$offline = json_decode(setting('offline.payment.methods'), true);
foreach ($offline as $key => $method) {
if ($method['code'] == $code) {
unset($offline[$key]);
}
}
// Set Api Token
setting()->set('offline.payment.methods', json_encode($offline));
setting()->save();
Artisan::call('cache:clear');
return response()->json([
'errors' => false,
'success' => true,
]);
}
}

View File

@ -0,0 +1,7 @@
<?php
return [
'name' => 'OfflinePayment',
];

View File

@ -1,12 +1,12 @@
<?php
namespace Modules\Offline\Database\Seeders;
namespace Modules\OfflinePayment\Database\Seeders;
use Illuminate\Database\Seeder;
use Illuminate\Database\Eloquent\Model;
use Setting;
class OfflineDatabaseSeeder extends Seeder
class OfflinePaymentDatabaseSeeder extends Seeder
{
/**
* Run the database seeds.
@ -27,19 +27,19 @@ class OfflineDatabaseSeeder extends Seeder
$methods = array();
$methods[] = array(
'code' => 'offline.cash.1',
'code' => 'offlinepayment.cash.1',
'name' => 'Cash',
'order' => '1',
'description' => null,
);
$methods[] = array(
'code' => 'offline.bank_transfer.2',
'code' => 'offlinepayment.bank_transfer.2',
'name' => 'Bank Transfer',
'order' => '2',
'description' => null,
);
Setting::set('offline.payment.methods', json_encode($methods));
Setting::set('offlinepayment.methods', json_encode($methods));
}
}

View File

@ -1,10 +1,10 @@
<?php
namespace Modules\Offline\Events\Handlers;
namespace Modules\OfflinePayment\Events\Handlers;
use App\Events\AdminMenuCreated;
class OfflineAdminMenu
class OfflinePaymentAdminMenu
{
/**
* Handle the event.
@ -16,6 +16,7 @@ class OfflineAdminMenu
{
// Add child to existing item
$item = $event->menu->whereTitle(trans_choice('general.settings', 2));
$item->url('modules/offline/settings', trans('offline::offline.offline'), 4, ['icon' => 'fa fa-angle-double-right']);
$item->url('modules/offlinepayment/settings', trans('offlinepayment::offlinepayment.offlinepayment'), 4, ['icon' => 'fa fa-angle-double-right']);
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace Modules\Offline\Events\Handlers;
namespace Modules\OfflinePayment\Events\Handlers;
use App\Events\PaymentGatewayListing;
@ -14,6 +14,6 @@ class OfflinePaymentGateway
*/
public function handle(PaymentGatewayListing $event)
{
return json_decode(setting('offline.payment.methods'), true);
return json_decode(setting('offlinepayment.methods'), true);
}
}

View File

@ -0,0 +1,121 @@
<?php
namespace Modules\OfflinePayment\Http\Controllers;
use Artisan;
use Illuminate\Http\Response;
use Illuminate\Routing\Controller;
use Modules\OfflinePayment\Http\Requests\Setting as Request;
use Modules\OfflinePayment\Http\Requests\SettingGet as GRequest;
use Modules\OfflinePayment\Http\Requests\SettingDelete as DRequest;
class Settings extends Controller
{
/**
* Show the form for editing the specified resource.
* @return Response
*/
public function edit()
{
$items = json_decode(setting('offlinepayment.methods'));
return view('offlinepayment::edit', compact('items'));
}
/**
* Update the specified resource in storage.
* @param Request $request
* @return Response
*/
public function update(Request $request)
{
$offlinepayment = json_decode(setting('offlinepayment.methods'), true);
if (isset($request['method'])) {
foreach ($offlinepayment as $key => $method) {
if ($method['code'] == $request['method']) {
$offlinepayment[$key]['code'] = 'offlinepayment.' . $request['code'] . '.' . (count($offlinepayment) + 1);
$offlinepayment[$key]['name'] = $request['name'];
$offlinepayment[$key]['order'] = $request['order'];
$offlinepayment[$key]['description'] = $request['description'];
}
}
} else {
$offlinepayment[] = array(
'code' => 'offlinepayment.' . $request['code'] . '.' . (count($offlinepayment) + 1),
'name' => $request['name'],
'order' => $request['order'],
'description' => $request['description']
);
}
// Set Api Token
setting()->set('offlinepayment.methods', json_encode($offlinepayment));
setting()->save();
Artisan::call('cache:clear');
return redirect('modules/offlinepayment/settings');
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function get(GRequest $request)
{
$code = $request['code'];
$offlinepayment = json_decode(setting('offlinepayment.methods'), true);
foreach ($offlinepayment as $key => $method) {
if ($method['code'] == $code) {
$method['title'] = trans('offlinepayment::offlinepayment.edit', ['method' => $method['name']]);
$code = explode('.', $method['code']);
$method['code'] = $code[1];
$data = $method;
}
}
return response()->json([
'errors' => false,
'success' => true,
'data' => $data
]);
}
/**
* Remove the specified resource from storage.
* @return Response
*/
public function delete(DRequest $request)
{
$code = $request['code'];
$offlinepayment = json_decode(setting('offlinepayment.methods'), true);
foreach ($offlinepayment as $key => $method) {
if ($method['code'] == $code) {
unset($offlinepayment[$key]);
}
}
// Set Api Token
setting()->set('offlinepayment.methods', json_encode($offlinepayment));
setting()->save();
Artisan::call('cache:clear');
return response()->json([
'errors' => false,
'success' => true,
]);
}
}

View File

@ -1,6 +1,6 @@
<?php
namespace Modules\Offline\Http\Requests;
namespace Modules\OfflinePayment\Http\Requests;
use App\Http\Requests\Request;

View File

@ -1,6 +1,6 @@
<?php
namespace Modules\Offline\Http\Requests;
namespace Modules\OfflinePayment\Http\Requests;
use App\Http\Requests\Request;

View File

@ -1,6 +1,6 @@
<?php
namespace Modules\Offline\Http\Requests;
namespace Modules\OfflinePayment\Http\Requests;
use App\Http\Requests\Request;

View File

@ -1,6 +1,6 @@
<?php
Route::group(['middleware' => ['web', 'auth', 'language', 'adminmenu', 'permission:read-admin-panel'], 'prefix' => 'modules/offline', 'namespace' => 'Modules\Offline\Http\Controllers'], function () {
Route::group(['middleware' => ['web', 'auth', 'language', 'adminmenu', 'permission:read-admin-panel'], 'prefix' => 'modules/offlinepayment', 'namespace' => 'Modules\OfflinePayment\Http\Controllers'], function () {
Route::get('settings', 'settings@edit');
Route::post('settings', 'settings@update');
Route::post('settings/get', 'settings@get');

View File

@ -1,17 +1,17 @@
<?php
namespace Modules\Offline\Providers;
namespace Modules\OfflinePayment\Providers;
use Illuminate\Support\ServiceProvider;
use Illuminate\Database\Eloquent\Factory;
use App\Events\AdminMenuCreated;
use Modules\Offline\Events\Handlers\OfflineAdminMenu;
use Modules\OfflinePayment\Events\Handlers\OfflinePaymentAdminMenu;
use App\Events\PaymentGatewayListing;
use Modules\Offline\Events\Handlers\OfflinePaymentGateway;
use Modules\OfflinePayment\Events\Handlers\OfflinePaymentGateway;
class OfflineServiceProvider extends ServiceProvider
class OfflinePaymentServiceProvider extends ServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
@ -32,7 +32,7 @@ class OfflineServiceProvider extends ServiceProvider
$this->registerViews();
$this->registerFactories();
$this->app['events']->listen(AdminMenuCreated::class, OfflineAdminMenu::class);
$this->app['events']->listen(AdminMenuCreated::class, OfflinePaymentAdminMenu::class);
$this->app['events']->listen(PaymentGatewayListing::class, OfflinePaymentGateway::class);
}
@ -54,10 +54,10 @@ class OfflineServiceProvider extends ServiceProvider
protected function registerConfig()
{
$this->publishes([
__DIR__.'/../Config/config.php' => config_path('offline.php'),
__DIR__.'/../Config/config.php' => config_path('offlinepayment.php'),
], 'config');
$this->mergeConfigFrom(
__DIR__.'/../Config/config.php', 'offline'
__DIR__.'/../Config/config.php', 'offlinepayment'
);
}
@ -68,7 +68,7 @@ class OfflineServiceProvider extends ServiceProvider
*/
public function registerViews()
{
$viewPath = resource_path('views/modules/offline');
$viewPath = resource_path('views/modules/offlinepayment');
$sourcePath = __DIR__.'/../Resources/views';
@ -77,8 +77,8 @@ class OfflineServiceProvider extends ServiceProvider
]);
$this->loadViewsFrom(array_merge(array_map(function ($path) {
return $path . '/modules/offline';
}, \Config::get('view.paths')), [$sourcePath]), 'offline');
return $path . '/modules/offlinepayment';
}, \Config::get('view.paths')), [$sourcePath]), 'offlinepayment');
}
/**
@ -88,12 +88,12 @@ class OfflineServiceProvider extends ServiceProvider
*/
public function registerTranslations()
{
$langPath = resource_path('lang/modules/offline');
$langPath = resource_path('lang/modules/offlinepayment');
if (is_dir($langPath)) {
$this->loadTranslationsFrom($langPath, 'offline');
$this->loadTranslationsFrom($langPath, 'offlinepayment');
} else {
$this->loadTranslationsFrom(__DIR__ .'/../Resources/lang', 'offline');
$this->loadTranslationsFrom(__DIR__ .'/../Resources/lang', 'offlinepayment');
}
}

View File

@ -0,0 +1,59 @@
<?php
namespace Modules\OfflinePayment\Providers;
use Artisan;
use Module;
use Illuminate\Support\ServiceProvider;
class OfflineServiceProvider extends ServiceProvider
{
/**
* Indicates if loading of the provider is deferred.
*
* @var bool
*/
protected $defer = false;
/**
* Boot the application events.
*
* @return void
*/
public function boot()
{
$module = Module::get('OfflinePayment');
if (!empty($module) && version_compare($module->get('version'), '1.0.0') == 0) {
$offline_payments = json_decode(setting('offline.payment.methods'), true);
if (!empty($offline_payments)) {
$offlinepayment = array();
foreach ($offline_payments as $offline_payment) {
$code = explode('.', $offline_payment['code']);
$offline_payment['code'] = $code[1];
$offlinepayment[] = array(
'code' => 'offlinepayment.' . $code[1] . '.' . $code[2],
'name' => $offline_payment['name'],
'order' => $offline_payment['order'],
'description' => $offline_payment['description']
);
}
setting()->set('offlinepayment.methods', json_encode($offlinepayment));
setting()->forget('offline.payment.methods');
setting()->save();
}
$module->delete();
Artisan::call('cache:clear');
}
}
}

View File

@ -2,8 +2,9 @@
return [
'offline' => 'Offline Payments',
'offlinepayment' => 'Offline Payments',
'add_new' => 'Add New',
'edit' => 'Edit: :method',
'code' => 'Code',
'order' => 'Order',
'payment_gateways' => 'Offline Payment Methods',

View File

@ -1,31 +1,33 @@
@extends('layouts.admin')
@section('title', trans('offline::offline.offline'))
@section('title', trans('offlinepayment::offlinepayment.offlinepayment'))
@section('content')
<div class="col-md-4 no-padding-left">
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('offline::offline.add_new') }}</h3>
<h3 class="box-title">{{ trans('offlinepayment::offlinepayment.add_new') }}</h3>
<!-- /.box-tools -->
</div>
<!-- /.box-header -->
{!! Form::open(['url' => 'modules/offline/settings', 'files' => true, 'role' => 'form']) !!}
{!! Form::open(['url' => 'modules/offlinepayment/settings', 'files' => true, 'role' => 'form']) !!}
<div class="box-body">
<div id="install-loading"></div>
{{ Form::textGroup('name', trans('general.name'), 'id-card-o', ['required' => 'required'], null, 'col-md-12') }}
{{ Form::textGroup('code', trans('offline::offline.code'), 'key', ['required' => 'required'], null, 'col-md-12') }}
{{ Form::textGroup('code', trans('offlinepayment::offlinepayment.code'), 'key', ['required' => 'required'], null, 'col-md-12') }}
{{ Form::textGroup('order', trans('offline::offline.order'), 'sort', [], 0, 'col-md-12') }}
{{ Form::textGroup('order', trans('offlinepayment::offlinepayment.order'), 'sort', [], 0, 'col-md-12') }}
{{ Form::textareaGroup('description', trans('general.description')) }}
</div>
<!-- /.box-body -->
<div class="box-footer">
{{ Form::saveButtons('modules/offline/settings') }}
{{ Form::saveButtons('modules/offlinepayment/settings') }}
</div>
<!-- /.box-footer -->
@ -37,7 +39,7 @@
<!-- Default box -->
<div class="box box-success">
<div class="box-header with-border">
<h3 class="box-title">{{ trans('offline::offline.payment_gateways') }}</h3>
<h3 class="box-title">{{ trans('offlinepayment::offlinepayment.payment_gateways') }}</h3>
<!-- /.box-tools -->
</div>
<!-- /.box-header -->
@ -47,8 +49,8 @@
<thead>
<tr>
<th class="col-md-3">{{ trans('general.name') }}</th>
<th class="col-md-3">{{ trans('offline::offline.code') }}</th>
<th class="col-md-3">{{ trans('offline::offline.order') }}</th>
<th class="col-md-3">{{ trans('offlinepayment::offlinepayment.code') }}</th>
<th class="col-md-3">{{ trans('offlinepayment::offlinepayment.order') }}</th>
<th class="col-md-3">{{ trans('general.actions') }}</th>
</tr>
</thead>
@ -78,6 +80,33 @@
</div>
@endsection
@section('stylesheet')
<style type="text/css">
.install-loading-bar {
font-size: 35px;
position: absolute;
z-index: 500;
top: 0px;
left: 0px;
width: 100%;
background: rgb(136, 136, 136);
opacity: 0.2;
-moz-border-radius-bottomleft: 1px;
-moz-border-radius-bottomright: 1px;
border-bottom-left-radius: 1px;
border-bottom-right-radius: 1px;
}
.install-loading-spin {
font-size: 100px;
position: absolute;
margin: auto;
color: #fff;
padding: 28% 40%;
}
</style>
@endsection
@section('scripts')
<script type="text/javascript">
$(document).ready(function() {
@ -85,16 +114,24 @@
var code = $(this).attr('id').replace('edit-', '');
$.ajax({
url: '{{ url("modules/offline/settings/get") }}',
url: '{{ url("modules/offlinepayment/settings/get") }}',
type: 'post',
dataType: 'json',
data: {code: code},
headers: { 'X-CSRF-TOKEN': '{{ csrf_token() }}' },
beforeSend: function() {
$('#install-loading').html('<span class="install-loading-bar"><span class="install-loading-spin"><i class="fa fa-spinner fa-spin"></i></span></span>');
$('.install-loading-bar').css({"height": $('.col-md-4.no-padding-left').height() - 23});
},
complete: function() {
$('#install-loading .install-loading-bar').remove();
},
success: function(json) {
if (json['error']) {
}
if (json['success']) {
$('.col-md-4.no-padding-left .box-header.with-border .box-title').html(json['data']['title']);
$('input[name="name"]').val(json['data']['name']);
$('input[name="code"]').val(json['data']['code']);
$('input[name="sort"]').val(json['data']['sort']);
@ -112,7 +149,7 @@
var code = $(this).attr('id').replace('delete-', '');
$.ajax({
url: '{{ url("modules/offline/settings/delete") }}',
url: '{{ url("modules/offlinepayment/settings/delete") }}',
type: 'post',
dataType: 'json',
data: {code: code},

View File

@ -1,5 +1,5 @@
{
"name": "akaunting/offline",
"name": "akaunting/offlinepayment",
"description": "",
"authors": [
{
@ -9,7 +9,7 @@
],
"autoload": {
"psr-4": {
"Modules\\Offline\\": ""
"Modules\\OfflinePayment\\": ""
}
}
}

View File

@ -1,6 +1,6 @@
{
"name": "Offline",
"alias": "offline",
"name": "OfflinePayment",
"alias": "offlinepayment",
"description": "",
"version": "1.0.0",
"category": "payment-gateways",
@ -8,7 +8,8 @@
"active": 1,
"order": 0,
"providers": [
"Modules\\Offline\\Providers\\OfflineServiceProvider"
"Modules\\OfflinePayment\\Providers\\OfflineServiceProvider",
"Modules\\OfflinePayment\\Providers\\OfflinePaymentServiceProvider"
],
"aliases": {},
"files": [