Kaydet (Commit) 60173f93 authored tarafından mertcelen's avatar mertcelen

Extension add views added.

üst c26d6693
......@@ -27,7 +27,7 @@ sudo apt update
#### PHP ve diger kutuphanelerin kurulumu
```bash
sudo apt install php7.3-fpm -y
sudo apt install php7.3 php7.3-mongodb php7.3-ldap php7.3-mbstring php7.3-xml php7.3-zip php7.3-simplexml php7.3-ssh2 -y
sudo apt install php7.3 php7.3-mongodb php7.3-ldap php7.3-mbstring php7.3-xml php7.3-zip php7.3-simplexml php7.3-ssh2 php7.3-mysqli -y
```
#### Nginx Kurulumu
```bash
......
......@@ -20,6 +20,7 @@ class SSHConnector implements Connector
protected $connection;
protected $server;
protected $ssh;
protected $key;
protected $user_id;
protected $username;
/**
......@@ -85,7 +86,7 @@ class SSHConnector implements Connector
*/
public function runScript($script, $parameters, $extra = null)
{
$flag = $this->sendFile(storage_path('app/scripts/' . $script->_id), '/tmp/' . $script->_id,0555);
$this->sendFile(storage_path('app/scripts/' . $script->_id), '/tmp/' . $script->_id,0555);
$query = ($script->root == 1) ? 'sudo ' : '';
$query = $query . $script->language . ' /tmp/' . $script->_id . " run " . $parameters . $extra;
return $this->execute($query);
......
......@@ -26,7 +26,8 @@ class Extension extends Eloquent
* @var array
*/
protected $fillable = [
"name" , "status" , "service" , "icon", "publisher", "support", "serverless", "setup", "views", "parameters" , "install" , "install_script", "version"
"name" , "status" , "service" , "icon", "publisher", "support", "serverless",
"setup", "views", "parameters" , "install" , "install_script", "version", "database", "widgets"
];
/**
......
......@@ -186,4 +186,27 @@ class MainController extends Controller
}
rmdir($dir);
}
public function newExtension()
{
$ext = new \App\Extension();
$ext->name = request('name');
$ext->publisher = auth()->user()->name;
$ext->version = "1.0";
$ext->database = [];
$ext->widgets = [];
$ext->views = [
[
"name" => "index",
"scripts" => ""
]
];
$ext->status = 0;
$ext->save();
$folder = resource_path('views/extensions/') . strtolower(request('name'));
mkdir($folder);
touch($folder . '/index.blade.php');
touch($folder . '/functions.php');
return respond(route('extension_one',$ext->_id),300);
}
}
......@@ -15,11 +15,11 @@ class OneController extends Controller
public function server()
{
// Now that we have server, let's check if required parameters set for extension.
foreach (extension()->setup as $key => $setting) {
foreach (extension()->database as $setting) {
if (!auth()->user()->getAttribute('settings') ||
!array_key_exists(server()->_id,auth()->user()->settings) ||
!array_key_exists(extension()->_id,auth()->user()->settings[server()->_id]) ||
!array_key_exists($key, auth()->user()->settings[server()->_id][extension()->_id])) {
!array_key_exists($setting["variable"], auth()->user()->settings[server()->_id][extension()->_id])) {
return redirect(route('extension_server_settings_page', [
"server_id" => server()->_id,
"extension_id" => extension()->_id
......@@ -30,25 +30,33 @@ class OneController extends Controller
$outputs = [];
// Go through each required scripts and run each of them.
if (extension()->views["index"]) {
foreach (extension()->views["index"] as $unique_code) {
// Get Script
$script = extension()->scripts()->where('unique_code', $unique_code)->first();
// Check if required script is available or not.
if (!$script) {
return respond("Eklenti için gerekli olan betik yüklü değil, lütfen yöneticinizle görüşün.", 404);
$views = extension()->views;
foreach ($views as $view){
if($view["name"] == "index"){
$scripts = explode(',',$view["scripts"]);
if(count($scripts) == 1 && $scripts[0] == ""){
break;
}
foreach ($scripts as $unique_code){
// Get Script
$script = extension()->scripts()->where('unique_code', $unique_code)->first();
// Check if required script is available or not.
if (!$script) {
return respond("Eklenti için gerekli olan betik yüklü değil, lütfen yöneticinizle görüşün.", 404);
}
// Run Script with no parameters.
$output = server()->runScript($script, '');
// Run Script with no parameters.
$output = server()->runScript($script, '');
// Decode output and set it into outputs array.
$output = str_replace('\n', '', $output);
$outputs[$unique_code] = json_decode($output, true);
// Decode output and set it into outputs array.
$output = str_replace('\n', '', $output);
$outputs[$unique_code] = json_decode($output, true);
}
break;
}
}
// Return all required parameters.
return view('extension_pages.server', [
"extension" => extension(),
......@@ -119,8 +127,8 @@ class OneController extends Controller
public function serverSettings()
{
$extension_config = [];
foreach (array_keys(extension()->setup) as $key) {
$extension_config[$key] = request($key);
foreach (extension()->database as $key) {
$extension_config[$key["variable"]] = request($key["variable"]);
}
$settings = auth()->user()->settings;
......@@ -168,7 +176,8 @@ class OneController extends Controller
public function updateCode()
{
file_put_contents(public_path('deneme.blade.php'),json_decode(request('code')));
return "OK";
$file = resource_path('views/extensions/') . strtolower(extension()->name) . '/' . request('page') . '.blade.php';
file_put_contents($file,json_decode(request('code')));
return respond("Kaydedildi",200);
}
}
......@@ -28,7 +28,7 @@ class SettingsController extends Controller
*/
public function settings_one()
{
$extension = Extension::where('_id',\request('extension_id'))->first();
$extension = Extension::where('_id', \request('extension_id'))->first();
// Go through all files and list them as tree style in array.
$files = $this->tree(resource_path('views' . DIRECTORY_SEPARATOR . 'extensions' . DIRECTORY_SEPARATOR . strtolower($extension->name)));
......@@ -88,11 +88,12 @@ class SettingsController extends Controller
/**
* @return array
*/
public function getScriptsOfView(){
public function getScriptsOfView()
{
$extension = Extension::find(request('extension_id'));
if(array_key_exists(request('view'),$extension->views)){
if (array_key_exists(request('view'), $extension->views)) {
$arr = $extension->views[request('view')];
}else{
} else {
$arr = [];
}
return $arr;
......@@ -101,42 +102,122 @@ class SettingsController extends Controller
/**
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
public function addScriptToView(){
public function addScriptToView()
{
$extension = Extension::find(request('extension_id'));
$temp = $extension->views;
if(array_key_exists(request('view'),$extension->views)){
array_push($temp[request('view')],request('unique_code'));
}else{
if (array_key_exists(request('view'), $extension->views)) {
array_push($temp[request('view')], request('unique_code'));
} else {
$temp[request('view')] = [request('unique_code')];
}
$extension->views = $temp;
$extension->save();
return response(__("Başarıyla Eklendi."),200);
return response(__("Başarıyla Eklendi."), 200);
}
/**
* @return \Illuminate\Contracts\Routing\ResponseFactory|\Illuminate\Http\Response
*/
public function removeScriptFromView(){
public function removeScriptFromView()
{
$extension = Extension::find(request('extension_id'));
$temp = $extension->views;
if(array_key_exists(request('view'),$extension->views)){
if (array_key_exists(request('view'), $extension->views)) {
unset($temp[request('view')][array_search(request('unique_code'), $temp[request('view')])]);
}else{
return response(__("Sayfa Bulunamadı."),404);
} else {
return response(__("Sayfa Bulunamadı."), 404);
}
return response(__("Başarıyla kaldırıldı."),200);
return response(__("Başarıyla kaldırıldı."), 200);
}
public function update()
{
$params = [];
if(request('type') == "general"){
if (request('type') == "general") {
$params = request()->all();
}else{
$params = [request('type') => request(request('type'))];
} else {
$values = extension()->__get(request('table'));
foreach ($values as $key => $value) {
if ($value["name"] == request('name_old')) {
switch (request('table')) {
case "database":
$values[$key]["variable"] = request('variable');
$values[$key]["type"] = request('type');
$values[$key]["name"] = request('name');
break;
case "widgets":
$values[$key]["target"] = request('target');
$values[$key]["type"] = request('type');
$values[$key]["name"] = request('name');
break;
case "views":
$values[$key]["scripts"] = request('scripts');
$values[$key]["name"] = request('name');
break;
}
break;
}
}
$params = [request('table') => $values];
}
extension()->update($params);
return respond("Guncellendi", 200);
}
public function add()
{
$params = [];
$values = extension()->__get(request('table'));
switch (request('table')) {
case "database":
array_push($values, [
"variable" => request('variable'),
"type" => request('type'),
"name" => request('name'),
]);
break;
case "widgets":
array_push($values, [
"target" => request('target'),
"type" => request('type'),
"name" => request('name'),
]);
break;
case "views":
array_push($values, [
"scripts" => request('scripts'),
"name" => request('name'),
]);
$file = resource_path('views/extensions/') . strtolower(extension()->name) . '/' . request('name') . '.blade.php';
touch($file);
break;
}
$params = [request('table') => $values];
extension()->update($params);
return respond("Guncellendi",200);
return respond("Eklendi", 200);
}
public function remove()
{
$params = [];
$values = extension()->__get(request('table'));
foreach ($values as $key => $value) {
if ($value["name"] == request('name')) {
unset($values[$key]);
break;
}
}
if(request('table') == "views"){
$file = resource_path('views/extensions/') . strtolower(extension()->name) . '/' . request('name') . '.blade.php';
unlink($file);
}
$params = [request('table') => $values];
extension()->update($params);
return respond("Silindi", 200);
}
}
......@@ -48,12 +48,16 @@ Route::post('/yukle/eklenti/','Extension\MainController@upload')->name('extensio
// Extension Remove Page
Route::post('/eklenti/sil','Extension\OneController@remove')->name('extension_remove')->middleware('admin');
Route::view('/eklenti/yeni','extension_pages.new')->name('extension_new_view')->middleware('admin');
Route::post('/eklenti/yeni','Extension\MainController@newExtension')->name('extension_new')->middleware('admin');
Route::get('/eklentiler/{extension_id}/{page_name}','Extension\OneController@page')->middleware('admin');
Route::get('/eklentiler/{extension_id}/{page_name}','Extension\OneController@page')->middleware('admin')->name('extension_page_edit_view');
Route::post('/ayar/eklenti/guncelle','Extension\SettingsController@update')->middleware('admin')->name('extension_settings_update');
Route::post('/ayar/eklenti/ekle','Extension\SettingsController@add')->middleware('admin')->name('extension_settings_add');
Route::post('/ayar/eklenti/kod','Extension\OneController@updateCode')->middleware('admin')->name('extension_code_update');
\ No newline at end of file
Route::post('/ayar/eklenti/sil','Extension\SettingsController@remove')->middleware('admin')->name('extension_settings_remove');
Route::post('/ayar/eklenti/kod','Extension\OneController@updateCode')->middleware('admin')->name('extension_code_update');
Route::post('/ayar/eklenti/yeni/sayfa','Extension\MainController@newExtensionPage')->middleware('admin')->name('extension_new_page');
\ No newline at end of file
......@@ -39,20 +39,6 @@
0 => 'JeroenNoten\\LaravelAdminLte\\ServiceProvider',
),
),
'laravel/nexmo-notification-channel' =>
array (
'providers' =>
array (
0 => 'Illuminate\\Notifications\\NexmoChannelServiceProvider',
),
),
'laravel/slack-notification-channel' =>
array (
'providers' =>
array (
0 => 'Illuminate\\Notifications\\SlackChannelServiceProvider',
),
),
'laravel/tinker' =>
array (
'providers' =>
......
......@@ -29,17 +29,15 @@
25 => 'Jenssegers\\Mongodb\\MongodbServiceProvider',
26 => 'Jenssegers\\Mongodb\\MongodbQueueServiceProvider',
27 => 'JeroenNoten\\LaravelAdminLte\\ServiceProvider',
28 => 'Illuminate\\Notifications\\NexmoChannelServiceProvider',
29 => 'Illuminate\\Notifications\\SlackChannelServiceProvider',
30 => 'Laravel\\Tinker\\TinkerServiceProvider',
31 => 'Carbon\\Laravel\\ServiceProvider',
32 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
33 => 'App\\Providers\\AppServiceProvider',
34 => 'App\\Providers\\AuthServiceProvider',
35 => 'App\\Providers\\EventServiceProvider',
36 => 'App\\Providers\\RouteServiceProvider',
37 => 'Jenssegers\\Mongodb\\MongodbServiceProvider',
38 => 'Jenssegers\\Mongodb\\MongodbQueueServiceProvider',
28 => 'Laravel\\Tinker\\TinkerServiceProvider',
29 => 'Carbon\\Laravel\\ServiceProvider',
30 => 'NunoMaduro\\Collision\\Adapters\\Laravel\\CollisionServiceProvider',
31 => 'App\\Providers\\AppServiceProvider',
32 => 'App\\Providers\\AuthServiceProvider',
33 => 'App\\Providers\\EventServiceProvider',
34 => 'App\\Providers\\RouteServiceProvider',
35 => 'Jenssegers\\Mongodb\\MongodbServiceProvider',
36 => 'Jenssegers\\Mongodb\\MongodbQueueServiceProvider',
),
'eager' =>
array (
......@@ -57,14 +55,12 @@
11 => 'BeyondCode\\DumpServer\\DumpServerServiceProvider',
12 => 'Jenssegers\\Mongodb\\MongodbServiceProvider',
13 => 'JeroenNoten\\LaravelAdminLte\\ServiceProvider',
14 => 'Illuminate\\Notifications\\NexmoChannelServiceProvider',
15 => 'Illuminate\\Notifications\\SlackChannelServiceProvider',
16 => 'Carbon\\Laravel\\ServiceProvider',
17 => 'App\\Providers\\AppServiceProvider',
18 => 'App\\Providers\\AuthServiceProvider',
19 => 'App\\Providers\\EventServiceProvider',
20 => 'App\\Providers\\RouteServiceProvider',
21 => 'Jenssegers\\Mongodb\\MongodbServiceProvider',
14 => 'Carbon\\Laravel\\ServiceProvider',
15 => 'App\\Providers\\AppServiceProvider',
16 => 'App\\Providers\\AuthServiceProvider',
17 => 'App\\Providers\\EventServiceProvider',
18 => 'App\\Providers\\RouteServiceProvider',
19 => 'Jenssegers\\Mongodb\\MongodbServiceProvider',
),
'deferred' =>
array (
......
......@@ -12,10 +12,11 @@
"ext-xml": "*",
"ext-ssh2": "*",
"ext-zip": "*",
"ext-mysqli" : "*",
"guzzlehttp/guzzle": "~6.0",
"jenssegers/mongodb": "^3.4",
"jeroennoten/laravel-adminlte": "^1.24",
"laravel/framework": "5.7.*",
"laravel/framework": "5.8.*",
"laravel/tinker": "^1.0",
"phpseclib/phpseclib": "^2.0"
},
......
......@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "1de0dbe7a70a69037410fc211ef8f01b",
"content-hash": "fc847937cfd760296d4b448009c81426",
"packages": [
{
"name": "dnoegel/php-xdg-base-dir",
......@@ -268,16 +268,16 @@
},
{
"name": "erusev/parsedown",
"version": "1.7.1",
"version": "v1.7.2",
"source": {
"type": "git",
"url": "https://github.com/erusev/parsedown.git",
"reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1"
"reference": "d60bcdc46978357759ecb13cb4b078da783f8faf"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/erusev/parsedown/zipball/92e9c27ba0e74b8b028b111d1b6f956a15c01fc1",
"reference": "92e9c27ba0e74b8b028b111d1b6f956a15c01fc1",
"url": "https://api.github.com/repos/erusev/parsedown/zipball/d60bcdc46978357759ecb13cb4b078da783f8faf",
"reference": "d60bcdc46978357759ecb13cb4b078da783f8faf",
"shasum": ""
},
"require": {
......@@ -310,7 +310,7 @@
"markdown",
"parser"
],
"time": "2018-03-08T01:11:30+00:00"
"time": "2019-03-17T17:19:46+00:00"
},
{
"name": "guzzlehttp/guzzle",
......@@ -585,23 +585,23 @@
},
{
"name": "jenssegers/mongodb",
"version": "v3.5.0",
"version": "v3.5.1",
"source": {
"type": "git",
"url": "https://github.com/jenssegers/laravel-mongodb.git",
"reference": "58972584d1b5ea61101a9aaa80c84e22f19d1daa"
"reference": "bdb15c948cb1f3d703df0996753d7e5336950bee"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jenssegers/laravel-mongodb/zipball/58972584d1b5ea61101a9aaa80c84e22f19d1daa",
"reference": "58972584d1b5ea61101a9aaa80c84e22f19d1daa",
"url": "https://api.github.com/repos/jenssegers/laravel-mongodb/zipball/bdb15c948cb1f3d703df0996753d7e5336950bee",
"reference": "bdb15c948cb1f3d703df0996753d7e5336950bee",
"shasum": ""
},
"require": {
"illuminate/container": "^5.6",
"illuminate/database": "^5.6",
"illuminate/events": "^5.6",
"illuminate/support": "^5.6",
"illuminate/container": "^5.8",
"illuminate/database": "^5.8",
"illuminate/events": "^5.8",
"illuminate/support": "^5.8",
"mongodb/mongodb": "^1.0.0"
},
"require-dev": {
......@@ -650,24 +650,24 @@
"mongo",
"mongodb"
],
"time": "2019-02-27T16:24:21+00:00"
"time": "2019-03-12T06:49:10+00:00"
},
{
"name": "jeroennoten/laravel-adminlte",
"version": "v1.24.2",
"version": "v1.25.1",
"source": {
"type": "git",
"url": "https://github.com/jeroennoten/Laravel-AdminLTE.git",
"reference": "ec38b6ac3cc845347f604dc387adf60b063d0b7e"
"reference": "4a6de826c488cfff01d673ed87aa35f7af402374"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/jeroennoten/Laravel-AdminLTE/zipball/ec38b6ac3cc845347f604dc387adf60b063d0b7e",
"reference": "ec38b6ac3cc845347f604dc387adf60b063d0b7e",
"url": "https://api.github.com/repos/jeroennoten/Laravel-AdminLTE/zipball/4a6de826c488cfff01d673ed87aa35f7af402374",
"reference": "4a6de826c488cfff01d673ed87aa35f7af402374",
"shasum": ""
},
"require": {
"laravel/framework": "~5.1.12|~5.2.0|~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0",
"laravel/framework": "~5.1.12|~5.2.0|~5.3.0|~5.4.0|~5.5.0|~5.6.0|~5.7.0|~5.8.0",
"php": ">=5.5.9"
},
"require-dev": {
......@@ -703,49 +703,49 @@
"administrator",
"laravel"
],
"time": "2018-09-20T20:51:42+00:00"
"time": "2019-03-10T09:17:09+00:00"
},
{
"name": "laravel/framework",
"version": "v5.7.28",
"version": "v5.8.4",
"source": {
"type": "git",
"url": "https://github.com/laravel/framework.git",
"reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192"
"reference": "d651f8bd25c6baf7ae4913bc51f02849fad4e925"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/8e69728f1c80a024588adbd24c65c4fcf9aa9192",
"reference": "8e69728f1c80a024588adbd24c65c4fcf9aa9192",
"url": "https://api.github.com/repos/laravel/framework/zipball/d651f8bd25c6baf7ae4913bc51f02849fad4e925",
"reference": "d651f8bd25c6baf7ae4913bc51f02849fad4e925",
"shasum": ""
},
"require": {
"doctrine/inflector": "^1.1",
"dragonmantank/cron-expression": "^2.0",
"egulias/email-validator": "^2.0",
"erusev/parsedown": "^1.7",
"ext-json": "*",
"ext-mbstring": "*",
"ext-openssl": "*",
"laravel/nexmo-notification-channel": "^1.0",
"laravel/slack-notification-channel": "^1.0",
"league/flysystem": "^1.0.8",
"monolog/monolog": "^1.12",
"nesbot/carbon": "^1.26.3",
"nesbot/carbon": "^1.26.3 || ^2.0",
"opis/closure": "^3.1",
"php": "^7.1.3",
"psr/container": "^1.0",
"psr/simple-cache": "^1.0",
"ramsey/uuid": "^3.7",
"swiftmailer/swiftmailer": "^6.0",
"symfony/console": "^4.1",
"symfony/debug": "^4.1",
"symfony/finder": "^4.1",
"symfony/http-foundation": "^4.1",
"symfony/http-kernel": "^4.1",
"symfony/process": "^4.1",
"symfony/routing": "^4.1",
"symfony/var-dumper": "^4.1",
"symfony/console": "^4.2",
"symfony/debug": "^4.2",
"symfony/finder": "^4.2",
"symfony/http-foundation": "^4.2",
"symfony/http-kernel": "^4.2",
"symfony/process": "^4.2",
"symfony/routing": "^4.2",
"symfony/var-dumper": "^4.2",
"tijsverkoyen/css-to-inline-styles": "^2.2.1",
"vlucas/phpdotenv": "^2.2"
"vlucas/phpdotenv": "^3.3"
},
"conflict": {
"tightenco/collect": "<5.5.33"
......@@ -788,12 +788,12 @@
"league/flysystem-cached-adapter": "^1.0",
"mockery/mockery": "^1.0",
"moontoast/math": "^1.1",
"orchestra/testbench-core": "3.7.*",
"pda/pheanstalk": "^3.0|^4.0",
"phpunit/phpunit": "^7.5",
"orchestra/testbench-core": "3.8.*",
"pda/pheanstalk": "^4.0",
"phpunit/phpunit": "^7.5|^8.0",
"predis/predis": "^1.1.1",
"symfony/css-selector": "^4.1",
"symfony/dom-crawler": "^4.1",
"symfony/css-selector": "^4.2",
"symfony/dom-crawler": "^4.2",
"true/punycode": "^2.1"
},
"suggest": {
......@@ -811,17 +811,18 @@
"league/flysystem-sftp": "Required to use the Flysystem SFTP driver (^1.0).",
"moontoast/math": "Required to use ordered UUIDs (^1.1).",
"nexmo/client": "Required to use the Nexmo transport (^1.0).",
"pda/pheanstalk": "Required to use the beanstalk queue driver (^3.0|^4.0).",
"pda/pheanstalk": "Required to use the beanstalk queue driver (^4.0).",
"predis/predis": "Required to use the redis cache and queue drivers (^1.0).",
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (^3.0).",
"symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.1).",
"symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.1).",
"symfony/psr-http-message-bridge": "Required to psr7 bridging features (^1.0)."
"symfony/css-selector": "Required to use some of the crawler integration testing tools (^4.2).",
"symfony/dom-crawler": "Required to use most of the crawler integration testing tools (^4.2).",
"symfony/psr-http-message-bridge": "Required to use PSR-7 bridging features (^1.1).",
"wildbit/swiftmailer-postmark": "Required to use Postmark mail driver (^3.0)."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "5.7-dev"
"dev-master": "5.8-dev"
}
},
"autoload": {
......@@ -849,121 +850,7 @@
"framework",
"laravel"
],
"time": "2019-02-26T15:41:34+00:00"
},
{
"name": "laravel/nexmo-notification-channel",
"version": "v1.0.1",
"source": {
"type": "git",
"url": "https://github.com/laravel/nexmo-notification-channel.git",
"reference": "03edd42a55b306ff980c9950899d5a2b03260d48"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/nexmo-notification-channel/zipball/03edd42a55b306ff980c9950899d5a2b03260d48",
"reference": "03edd42a55b306ff980c9950899d5a2b03260d48",
"shasum": ""
},
"require": {
"nexmo/client": "^1.0",
"php": "^7.1.3"
},
"require-dev": {
"illuminate/notifications": "~5.7",
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
},
"laravel": {
"providers": [
"Illuminate\\Notifications\\NexmoChannelServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Illuminate\\Notifications\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
}
],
"description": "Nexmo Notification Channel for laravel.",
"keywords": [
"laravel",
"nexmo",
"notifications"
],
"time": "2018-12-04T12:57:08+00:00"
},
{
"name": "laravel/slack-notification-channel",
"version": "v1.0.3",
"source": {
"type": "git",
"url": "https://github.com/laravel/slack-notification-channel.git",
"reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/laravel/slack-notification-channel/zipball/6e164293b754a95f246faf50ab2bbea3e4923cc9",
"reference": "6e164293b754a95f246faf50ab2bbea3e4923cc9",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": "^6.0",
"php": "^7.1.3"
},
"require-dev": {
"illuminate/notifications": "~5.7",
"mockery/mockery": "^1.0",
"phpunit/phpunit": "^7.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.0-dev"
},
"laravel": {
"providers": [
"Illuminate\\Notifications\\SlackChannelServiceProvider"
]
}
},
"autoload": {
"psr-4": {
"Illuminate\\Notifications\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Taylor Otwell",
"email": "taylor@laravel.com"
}
],
"description": "Slack Notification Channel for laravel.",
"keywords": [
"laravel",
"notifications",
"slack"
],
"time": "2018-12-12T13:12:06+00:00"
"time": "2019-03-12T13:33:14+00:00"
},
{
"name": "laravel/tinker",
......@@ -1028,64 +915,6 @@
],
"time": "2018-10-12T19:39:35+00:00"
},
{
"name": "lcobucci/jwt",
"version": "3.2.5",
"source": {
"type": "git",
"url": "https://github.com/lcobucci/jwt.git",
"reference": "82be04b4753f8b7693b62852b7eab30f97524f9b"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/lcobucci/jwt/zipball/82be04b4753f8b7693b62852b7eab30f97524f9b",
"reference": "82be04b4753f8b7693b62852b7eab30f97524f9b",
"shasum": ""
},
"require": {
"ext-openssl": "*",
"php": ">=5.5"
},
"require-dev": {
"mdanter/ecc": "~0.3.1",
"mikey179/vfsstream": "~1.5",
"phpmd/phpmd": "~2.2",
"phpunit/php-invoker": "~1.1",
"phpunit/phpunit": "~4.5",
"squizlabs/php_codesniffer": "~2.3"
},
"suggest": {
"mdanter/ecc": "Required to use Elliptic Curves based algorithms."
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "3.1-dev"
}
},
"autoload": {
"psr-4": {
"Lcobucci\\JWT\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-3-Clause"
],
"authors": [
{
"name": "Luís Otávio Cobucci Oblonczyk",
"email": "lcobucci@gmail.com",
"role": "developer"
}
],
"description": "A simple library to work with JSON Web Token and JSON Web Signature",
"keywords": [
"JWS",
"jwt"
],
"time": "2018-11-11T12:22:26+00:00"
},
{
"name": "league/flysystem",
"version": "1.0.50",
......@@ -1315,28 +1144,30 @@
},
{
"name": "nesbot/carbon",
"version": "1.36.2",
"version": "2.16.0",
"source": {
"type": "git",
"url": "https://github.com/briannesbitt/Carbon.git",
"reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9"
"reference": "dd16fedc022180ea4292a03aabe95e9895677911"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9",
"reference": "cd324b98bc30290f233dd0e75e6ce49f7ab2a6c9",
"url": "https://api.github.com/repos/briannesbitt/Carbon/zipball/dd16fedc022180ea4292a03aabe95e9895677911",
"reference": "dd16fedc022180ea4292a03aabe95e9895677911",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"symfony/translation": "~2.6 || ~3.0 || ~4.0"
"ext-json": "*",
"php": "^7.1.8 || ^8.0",
"symfony/translation": "^3.4 || ^4.0"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.7"
},
"suggest": {
"friendsofphp/php-cs-fixer": "Needed for the `composer phpcs` command. Allow to automatically fix code style.",
"phpstan/phpstan": "Needed for the `composer phpstan` command. Allow to detect potential errors."
"friendsofphp/php-cs-fixer": "^2.14 || ^3.0",
"kylekatarnls/multi-tester": "^0.1",
"phpmd/phpmd": "^2.6",
"phpstan/phpstan": "^0.10.8",
"phpunit/phpunit": "^7.5 || ^8.0",
"squizlabs/php_codesniffer": "^3.4"
},
"type": "library",
"extra": {
......@@ -1348,7 +1179,7 @@
},
"autoload": {
"psr-4": {
"": "src/"
"Carbon\\": "src/Carbon/"
}
},
"notification-url": "https://packagist.org/downloads/",
......@@ -1369,55 +1200,7 @@
"datetime",
"time"
],
"time": "2018-12-28T10:07:33+00:00"
},
{
"name": "nexmo/client",
"version": "1.6.2",
"source": {
"type": "git",
"url": "https://github.com/Nexmo/nexmo-php.git",
"reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/Nexmo/nexmo-php/zipball/2f79f67f24225ea627ee14578e98c96276cdd4c5",
"reference": "2f79f67f24225ea627ee14578e98c96276cdd4c5",
"shasum": ""
},
"require": {
"lcobucci/jwt": "^3.2",
"php": ">=5.6",
"php-http/client-implementation": "^1.0",
"php-http/guzzle6-adapter": "^1.0",
"zendframework/zend-diactoros": "^1.3"
},
"require-dev": {
"estahn/phpunit-json-assertions": "^1.0.0",
"php-http/mock-client": "^0.3.0",
"phpunit/phpunit": "^5.7",
"squizlabs/php_codesniffer": "^3.1"
},
"type": "library",
"autoload": {
"psr-4": {
"Nexmo\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Tim Lytle",
"email": "tim@nexmo.com",
"homepage": "http://twitter.com/tjlytle",
"role": "Developer"
}
],
"description": "PHP Client for using Nexmo's API.",
"time": "2019-02-07T11:14:34+00:00"
"time": "2019-03-12T09:31:40+00:00"
},
{
"name": "nikic/php-parser",
......@@ -1577,183 +1360,67 @@
"time": "2018-07-02T15:55:56+00:00"
},
{
"name": "php-http/guzzle6-adapter",
"version": "v1.1.1",
"source": {
"type": "git",
"url": "https://github.com/php-http/guzzle6-adapter.git",
"reference": "a56941f9dc6110409cfcddc91546ee97039277ab"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/guzzle6-adapter/zipball/a56941f9dc6110409cfcddc91546ee97039277ab",
"reference": "a56941f9dc6110409cfcddc91546ee97039277ab",
"shasum": ""
},
"require": {
"guzzlehttp/guzzle": "^6.0",
"php": ">=5.5.0",
"php-http/httplug": "^1.0"
},
"provide": {
"php-http/async-client-implementation": "1.0",
"php-http/client-implementation": "1.0"
},
"require-dev": {
"ext-curl": "*",
"php-http/adapter-integration-tests": "^0.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.2-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Adapter\\Guzzle6\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com"
},
{
"name": "David de Boer",
"email": "david@ddeboer.nl"
}
],
"description": "Guzzle 6 HTTP Adapter",
"homepage": "http://httplug.io",
"keywords": [
"Guzzle",
"http"
],
"time": "2016-05-10T06:13:32+00:00"
},
{
"name": "php-http/httplug",
"version": "v1.1.0",
"name": "phpoption/phpoption",
"version": "1.5.0",
"source": {
"type": "git",
"url": "https://github.com/php-http/httplug.git",
"reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018"
"url": "https://github.com/schmittjoh/php-option.git",
"reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/httplug/zipball/1c6381726c18579c4ca2ef1ec1498fdae8bdf018",
"reference": "1c6381726c18579c4ca2ef1ec1498fdae8bdf018",
"url": "https://api.github.com/repos/schmittjoh/php-option/zipball/94e644f7d2051a5f0fcf77d81605f152eecff0ed",
"reference": "94e644f7d2051a5f0fcf77d81605f152eecff0ed",
"shasum": ""
},
"require": {
"php": ">=5.4",
"php-http/promise": "^1.0",
"psr/http-message": "^1.0"
},
"require-dev": {
"henrikbjorn/phpspec-code-coverage": "^1.0",
"phpspec/phpspec": "^2.4"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Client\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Eric GELOEN",
"email": "geloen.eric@gmail.com"
},
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com"
}
],
"description": "HTTPlug, the HTTP client abstraction for PHP",
"homepage": "http://httplug.io",
"keywords": [
"client",
"http"
],
"time": "2016-08-31T08:30:17+00:00"
},
{
"name": "php-http/promise",
"version": "v1.0.0",
"source": {
"type": "git",
"url": "https://github.com/php-http/promise.git",
"reference": "dc494cdc9d7160b9a09bd5573272195242ce7980"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/php-http/promise/zipball/dc494cdc9d7160b9a09bd5573272195242ce7980",
"reference": "dc494cdc9d7160b9a09bd5573272195242ce7980",
"shasum": ""
"php": ">=5.3.0"
},
"require-dev": {
"henrikbjorn/phpspec-code-coverage": "^1.0",
"phpspec/phpspec": "^2.4"
"phpunit/phpunit": "4.7.*"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.1-dev"
"dev-master": "1.3-dev"
}
},
"autoload": {
"psr-4": {
"Http\\Promise\\": "src/"
"psr-0": {
"PhpOption\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
"Apache2"
],
"authors": [
{
"name": "Márk Sági-Kazár",
"email": "mark.sagikazar@gmail.com"
},
{
"name": "Joel Wurtz",
"email": "joel.wurtz@gmail.com"
"name": "Johannes M. Schmitt",
"email": "schmittjoh@gmail.com"
}
],
"description": "Promise used for asynchronous HTTP requests",
"homepage": "http://httplug.io",
"description": "Option Type for PHP",
"keywords": [
"promise"
"language",
"option",
"php",
"type"
],
"time": "2016-01-26T13:27:02+00:00"
"time": "2015-07-25T16:39:46+00:00"
},
{
"name": "phpseclib/phpseclib",
"version": "2.0.14",
"version": "2.0.15",
"source": {
"type": "git",
"url": "https://github.com/phpseclib/phpseclib.git",
"reference": "8ebfcadbf30524aeb75b2c446bc2519d5b321478"
"reference": "11cf67cf78dc4acb18dc9149a57be4aee5036ce0"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/8ebfcadbf30524aeb75b2c446bc2519d5b321478",
"reference": "8ebfcadbf30524aeb75b2c446bc2519d5b321478",
"url": "https://api.github.com/repos/phpseclib/phpseclib/zipball/11cf67cf78dc4acb18dc9149a57be4aee5036ce0",
"reference": "11cf67cf78dc4acb18dc9149a57be4aee5036ce0",
"shasum": ""
},
"require": {
......@@ -1832,7 +1499,7 @@
"x.509",
"x509"
],
"time": "2019-01-27T19:37:29+00:00"
"time": "2019-03-10T16:53:45+00:00"
},
{
"name": "psr/container",
......@@ -2226,25 +1893,28 @@
},
{
"name": "swiftmailer/swiftmailer",
"version": "v6.1.3",
"version": "v6.2.0",
"source": {
"type": "git",
"url": "https://github.com/swiftmailer/swiftmailer.git",
"reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4"
"reference": "6fa3232ff9d3f8237c0fae4b7ff05e1baa4cd707"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/8ddcb66ac10c392d3beb54829eef8ac1438595f4",
"reference": "8ddcb66ac10c392d3beb54829eef8ac1438595f4",
"url": "https://api.github.com/repos/swiftmailer/swiftmailer/zipball/6fa3232ff9d3f8237c0fae4b7ff05e1baa4cd707",
"reference": "6fa3232ff9d3f8237c0fae4b7ff05e1baa4cd707",
"shasum": ""
},
"require": {
"egulias/email-validator": "~2.0",
"php": ">=7.0.0"
"php": ">=7.0.0",
"symfony/polyfill-iconv": "^1.0",
"symfony/polyfill-intl-idn": "^1.10",
"symfony/polyfill-mbstring": "^1.0"
},
"require-dev": {
"mockery/mockery": "~0.9.1",
"symfony/phpunit-bridge": "~3.3@dev"
"symfony/phpunit-bridge": "^3.4.19|^4.1.8"
},
"suggest": {
"ext-intl": "Needed to support internationalized email addresses",
......@@ -2253,7 +1923,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "6.1-dev"
"dev-master": "6.2-dev"
}
},
"autoload": {
......@@ -2281,7 +1951,7 @@
"mail",
"mailer"
],
"time": "2018-09-11T07:12:52+00:00"
"time": "2019-03-10T07:52:41+00:00"
},
{
"name": "symfony/console",
......@@ -2846,6 +2516,127 @@
],
"time": "2018-08-06T14:22:27+00:00"
},
{
"name": "symfony/polyfill-iconv",
"version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-iconv.git",
"reference": "97001cfc283484c9691769f51cdf25259037eba2"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-iconv/zipball/97001cfc283484c9691769f51cdf25259037eba2",
"reference": "97001cfc283484c9691769f51cdf25259037eba2",
"shasum": ""
},
"require": {
"php": ">=5.3.3"
},
"suggest": {
"ext-iconv": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Iconv\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Symfony polyfill for the Iconv extension",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"iconv",
"polyfill",
"portable",
"shim"
],
"time": "2018-09-21T06:26:08+00:00"
},
{
"name": "symfony/polyfill-intl-idn",
"version": "v1.10.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/polyfill-intl-idn.git",
"reference": "89de1d44f2c059b266f22c9cc9124ddc4cd0987a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/polyfill-intl-idn/zipball/89de1d44f2c059b266f22c9cc9124ddc4cd0987a",
"reference": "89de1d44f2c059b266f22c9cc9124ddc4cd0987a",
"shasum": ""
},
"require": {
"php": ">=5.3.3",
"symfony/polyfill-mbstring": "^1.3",
"symfony/polyfill-php72": "^1.9"
},
"suggest": {
"ext-intl": "For best performance"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.9-dev"
}
},
"autoload": {
"psr-4": {
"Symfony\\Polyfill\\Intl\\Idn\\": ""
},
"files": [
"bootstrap.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
},
{
"name": "Laurent Bassin",
"email": "laurent@bassin.info"
}
],
"description": "Symfony polyfill for intl's idn_to_ascii and idn_to_utf8 functions",
"homepage": "https://symfony.com",
"keywords": [
"compatibility",
"idn",
"intl",
"polyfill",
"portable",
"shim"
],
"time": "2018-09-30T16:36:12+00:00"
},
{
"name": "symfony/polyfill-mbstring",
"version": "v1.10.0",
......@@ -3284,29 +3075,30 @@
},
{
"name": "vlucas/phpdotenv",
"version": "v2.6.1",
"version": "v3.3.3",
"source": {
"type": "git",
"url": "https://github.com/vlucas/phpdotenv.git",
"reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5"
"reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/2a7dcf7e3e02dc5e701004e51a6f304b713107d5",
"reference": "2a7dcf7e3e02dc5e701004e51a6f304b713107d5",
"url": "https://api.github.com/repos/vlucas/phpdotenv/zipball/dbcc609971dd9b55f48b8008b553d79fd372ddde",
"reference": "dbcc609971dd9b55f48b8008b553d79fd372ddde",
"shasum": ""
},
"require": {
"php": ">=5.3.9",
"php": "^5.4 || ^7.0",
"phpoption/phpoption": "^1.5",
"symfony/polyfill-ctype": "^1.9"
},
"require-dev": {
"phpunit/phpunit": "^4.8.35 || ^5.0"
"phpunit/phpunit": "^4.8.35 || ^5.0 || ^6.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "2.6-dev"
"dev-master": "3.3-dev"
}
},
"autoload": {
......@@ -3331,71 +3123,7 @@
"env",
"environment"
],
"time": "2019-01-29T11:11:52+00:00"
},
{
"name": "zendframework/zend-diactoros",
"version": "1.8.6",
"source": {
"type": "git",
"url": "https://github.com/zendframework/zend-diactoros.git",
"reference": "20da13beba0dde8fb648be3cc19765732790f46e"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/zendframework/zend-diactoros/zipball/20da13beba0dde8fb648be3cc19765732790f46e",
"reference": "20da13beba0dde8fb648be3cc19765732790f46e",
"shasum": ""
},
"require": {
"php": "^5.6 || ^7.0",
"psr/http-message": "^1.0"
},
"provide": {
"psr/http-message-implementation": "1.0"
},
"require-dev": {
"ext-dom": "*",
"ext-libxml": "*",
"php-http/psr7-integration-tests": "dev-master",
"phpunit/phpunit": "^5.7.16 || ^6.0.8 || ^7.2.7",
"zendframework/zend-coding-standard": "~1.0"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-master": "1.8.x-dev",
"dev-develop": "1.9.x-dev",
"dev-release-2.0": "2.0.x-dev"
}
},
"autoload": {
"files": [
"src/functions/create_uploaded_file.php",
"src/functions/marshal_headers_from_sapi.php",
"src/functions/marshal_method_from_sapi.php",
"src/functions/marshal_protocol_version_from_sapi.php",
"src/functions/marshal_uri_from_sapi.php",
"src/functions/normalize_server.php",
"src/functions/normalize_uploaded_files.php",
"src/functions/parse_cookie_header.php"
],
"psr-4": {
"Zend\\Diactoros\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"BSD-2-Clause"
],
"description": "PSR HTTP Message implementations",
"homepage": "https://github.com/zendframework/zend-diactoros",
"keywords": [
"http",
"psr",
"psr-7"
],
"time": "2018-09-05T19:29:37+00:00"
"time": "2019-03-06T09:39:45+00:00"
}
],
"packages-dev": [
......@@ -5042,16 +4770,16 @@
},
{
"name": "phpunit/phpunit",
"version": "7.5.6",
"version": "7.5.7",
"source": {
"type": "git",
"url": "https://github.com/sebastianbergmann/phpunit.git",
"reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9"
"reference": "eb343b86753d26de07ecba7868fa983104361948"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9",
"reference": "09c85e14994df92e5ff1f5ec0b481bdb7d3d3df9",
"url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/eb343b86753d26de07ecba7868fa983104361948",
"reference": "eb343b86753d26de07ecba7868fa983104361948",
"shasum": ""
},
"require": {
......@@ -5069,7 +4797,7 @@
"phpunit/php-code-coverage": "^6.0.7",
"phpunit/php-file-iterator": "^2.0.1",
"phpunit/php-text-template": "^1.2.1",
"phpunit/php-timer": "^2.0",
"phpunit/php-timer": "^2.1",
"sebastian/comparator": "^3.0",
"sebastian/diff": "^3.0",
"sebastian/environment": "^4.0",
......@@ -5122,7 +4850,7 @@
"testing",
"xunit"
],
"time": "2019-02-18T09:24:50+00:00"
"time": "2019-03-16T07:31:17+00:00"
},
{
"name": "sebastian/code-unit-reverse-lookup",
......
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form onsubmit="talkApi(this)">
<input id="girilenVeri" type="text" name="name">
<button type="submit">Ekle</button>
</form>
<div id="gelencevap">
Cevap :
</div>
<script type="text/javascript">
function talkApi(data){
console.log(data);
return true;
let isim = document.getElementById("girilenVeri").value;
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("gelencevap").innerHTML = this.responseText;
}
};
// xhttp.open("POST", "/muhterem/muhterem.php", true);
// let data = new FormData();
// data.append("name",isim);
// xhttp.send(data);
}
</script>
</body>
</html>
\ No newline at end of file
......@@ -17,7 +17,11 @@
"target_id" => "extensionExport",
"text" => "Indir"
])
<button class="btn btn-info" onclick="location.href = '{{route('extension_new_view')}}'">{{__("Yeni")}}</button>
@include('l.modal-button',[
"class" => "btn-info",
"target_id" => "newExtension",
"text" => "Yeni"
])
<br><br>
@include('l.table',[
......@@ -64,6 +68,16 @@
"submit_text" => "İndir"
])
@include('l.modal',[
"id"=>"newExtension",
"url" => route('extension_new'),
"title" => "Yeni Eklenti Oluştur",
"inputs" => [
"Eklenti Adı" => "name:text"
],
"submit_text" => "Oluştur"
])
@include('l.modal',[
"id"=>"delete",
"title" =>"Eklentiyi Sil",
......
@extends('layouts.app')
@section('content')
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__("Ana Sayfa")}}</a></li>
<li class="breadcrumb-item" aria-current="page"><a href="{{route('extensions_settings')}}">{{__("Eklenti Yönetimi")}}</a></li>
<li class="breadcrumb-item active" aria-current="page">{{ __('Yeni Eklenti') }}</li>
</ol>
</nav>
<form action="" class="form-group">
<h3>{{__("Eklenti Adı")}}</h3>
<input type="text" name="name" class="form-control">
<h3>{{__("Yayınlayan")}}</h3>
<input type="text" name="name" class="form-control" value="{{auth()->user()->name}}" disabled>
<h3>{{__("Destek Email'i")}}</h3>
<input type="text" name="email" class="form-control" value="{{auth()->user()->email}}">
<h3>{{__("Eklenti için sunucuda betik çalıştırılması gerekiyor mu?")}}</h3>
<div class="bd-example">
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="serverless" id="inlineRadio1" value="true">
<label class="form-check-label" for="inlineRadio1">{{__("Evet")}}</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" type="radio" name="serverless" id="inlineRadio2" value="false">
<label class="form-check-label" for="inlineRadio2">{{__("Hayır")}}</label>
</div>
</div>
<h3>{{__("Logo (Font Awesome Ikon)")}}</h3>
<input type="text" name="icon" class="form-control">
</form>
@endsection
\ No newline at end of file
@extends('layouts.app')
@section('content')
@php($flag = ($extension->serverless == true) ? true : false)
@php($flag = ($extension->serverless == "true") ? true : false)
<nav aria-label="breadcrumb">
<ol class="breadcrumb">
<li class="breadcrumb-item"><a href="{{route('home')}}">{{__("Ana Sayfa")}}</a></li>
......@@ -13,17 +13,15 @@
<div class="nav-tabs-custom">
<ul class="nav nav-tabs">
<li class="active"><a href="#tab_1" data-toggle="tab" aria-expanded="true">{{__("Genel Ayarlar")}}</a></li>
@if($flag)
<li id="server_type"><a href="#tab_2" data-toggle="tab"
aria-expanded="false">{{__("Kurulum Parametreleri")}}</a></li>
@endif
aria-expanded="false">{{__("Eklenti Veritabanı")}}</a></li>
<li id="server_type"><a href="#tab_2_2" data-toggle="tab" aria-expanded="false">{{__("Sayfa Ayarları")}}</a>
</li>
<li class=""><a href="#tab_3" data-toggle="tab" aria-expanded="false">{{__("Widgetlar")}}</a></li>
</ul>
<div class="tab-content">
<div class="tab-pane active" id="tab_1">
<button class="btn btn-primary btn-sm" onclick="updateExtension('general')">{{__("Kaydet")}}</button>
<button class="btn btn-success btn-sm" onclick="updateExtension('general')">{{__("Kaydet")}}</button>
<h3>{{__("Eklenti Adı")}}</h3>
<input id="extensionName" type="text" name="name" class="form-control" value="{{$extension->name}}">
<h3>{{__("Yayınlayan")}}</h3>
......@@ -32,184 +30,280 @@
<input id="support" type="text" name="email" class="form-control" value="{{$extension->support}}">
<h3>{{__("Logo (Font Awesome Ikon)")}}</h3>
<input id="icon" type="text" name="icon" class="form-control" value="{{$extension->icon}}">
<h3>{{__("Versiyon")}}</h3>
<input id="version" type="text" name="version" class="form-control" value="{{$extension->version}}">
<h3>{{__("Eklenti için sunucuda betik çalıştırılması gerekiyor mu?")}}</h3>
<div class="bd-example">
<div class="form-check form-check-inline">
<input class="form-check-input" onchange="alert('geldi')" type="radio" name="serverless"
value="true" @if(!$flag)checked @endif>
<input class="form-check-input" type="radio" name="serverless"
value="true" @if($flag)checked @endif>
<label class="form-check-label" for="inlineRadio1">{{__("Evet")}}</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" onchange="alert('qwe')" type="radio" name="serverless"
value="false" @if($flag)checked @endif>
<input class="form-check-input" type="radio" name="serverless"
value="false" @if(!$flag)checked @endif>
<label class="form-check-label" for="inlineRadio2">{{__("Hayır")}}</label>
</div>
</div>
</div>
<!-- /.tab-pane -->
<div class="tab-pane" id="tab_2">
<button class="btn btn-primary btn-sm" onclick="updateExtension('setup','setupTable')">{{__("Kaydet")}}</button>
<button class="btn btn-success btn-sm" onclick="addRow('setup','setupTable','{{__("Kurulum Parametresi")}}')">{{__("Ekle")}}</button><br><br>
<table class="table table-striped table-hover" id="setupTable">
<thead>
<tr>
<th scope="col" variable-name="name">{{ __("İnput Adı") }}</th>
<th scope="col" variable-name="type">{{ __("Türü") }}</th>
<th scope="col" variable-name="variable">{{ __("Veri Adı") }}</th>
</tr>
</thead>
<tbody class="table-striped">
@foreach($extension->setup as $key=>$item)
<tr class="tableRow">
<td>{{$item["name"]}}</td>
<td>{{$item["type"]}}</td>
<td>{{$key}}</td>
</tr>
@endforeach
</tbody>
</table>
@include('l.modal-button',[
"class" => "btn-success btn-sm",
"target_id" => "add_database",
"text" => "Veri Ekle"
])<br><br>
@include('l.table',[
"value" => $extension->database,
"title" => [
"Adı" , "Türü" , "Variable Adı", "" , "", ""
],
"display" => [
"name" , "type", "variable", "variable:variable_old", "type:type_old", "name:name_old"
],
"menu" => [
"Ayarları Düzenle" => [
"target" => "edit_database",
"icon" => "fa-edit"
],
"Sil" => [
"target" => "remove_database",
"icon" => "fa-trash"
]
]
])
@include('l.modal',[
"id"=>"add_database",
"title" => "Veri Ekle",
"url" => route('extension_settings_add'),
"next" => "reload",
"inputs" => [
"Sayfa Adı" => "name:text",
"Türü" => "type:text",
"Variable Adı" => "variable:text",
"table:database" => "table:hidden",
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Veri Ekle"
])
@include('l.modal',[
"id"=>"edit_database",
"title" => "Veri Düzenle",
"url" => route('extension_settings_update'),
"next" => "updateTable",
"inputs" => [
"Adı" => "name:text",
"Türü" => "type:text",
"Variable Adı" => "variable:text",
"Sayfa Adı:a" => "name_old:hidden",
"Türü:a" => "type_old:hidden",
"Variable Adı:a" => "variable_old:hidden",
"table:database" => "table:hidden",
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Veri Düzenle"
])
@include('l.modal',[
"id"=>"remove_database",
"title" => "Veri'yi Sil",
"url" => route('extension_settings_remove'),
"next" => "reload",
"text" => "Veri'yi silmek istediğinize emin misiniz? Bu işlem geri alınamayacaktır.",
"inputs" => [
"Sayfa Adı:a" => "name:hidden",
"Türü:a" => "type:hidden",
"Variable Adı:a" => "variable:hidden",
"table:database" => "table:hidden",
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Veri'yi Sil"
])
</div>
<div class="tab-pane" id="tab_2_2">
<button class="btn btn-primary btn-sm" onclick="updateExtension('view','viewTable')">{{__("Kaydet")}}</button>
<button class="btn btn-success btn-sm" onclick="addRow('view','viewTable','{{__("Sayfa")}}')">{{__("Ekle")}}</button><br><br>
<table class="table table-striped table-hover" id="viewTable">
<thead>
<tr>
<th scope="col" variable-name="name">{{ __("Sayfa Adı") }}</th>
<th scope="col" variable-name="variable">{{ __("Çalışacak Betik/Fonksiyon") }}</th>
<th scope="col">{{ __("#") }}</th>
</tr>
</thead>
<tbody class="table-striped">
@foreach($extension->views as $key=>$view)
<tr class="tableRow">
<td>{{$key}}</td>
<td>{{implode(",",$view)}}</td>
<td>
@if($key != "install")
<button class="btn btn-info btn-sm form-inline"
onclick="location.href = location.href + '/{{$key}}'">{{__("Kodu Düzenle")}}</button>
</td>
@endif
</tr>
@endforeach
</tbody>
</table>
@include('l.modal-button',[
"class" => "btn-success btn-sm",
"target_id" => "add_view",
"text" => "Sayfa Ekle"
])<br><br>
@include('l.table',[
"value" => $extension->views,
"title" => [
"Sayfa Adı" , "Çalışacak Betik/Fonksiyon" , "", ""
],
"display" => [
"name" , "scripts", "name:name_old", "scripts:scripts_old"
],
"menu" => [
"Ayarları Düzenle" => [
"target" => "edit_view",
"icon" => "fa-edit"
],
"Kodu Düzenle" => [
"target" => "editPage",
"icon" => "fa-edit"
],
"Sil" => [
"target" => "remove_view",
"icon" => "fa-trash"
]
]
])
@include('l.modal',[
"id"=>"add_view",
"title" => "Sayfa Ekle",
"url" => route('extension_settings_add'),
"next" => "reload",
"inputs" => [
"Sayfa Adı" => "name:text",
"table:views" => "table:hidden",
"Çalışacak Betik/Fonksiyon" => "scripts:text",
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Sayfa Ekle"
])
@include('l.modal',[
"id"=>"edit_view",
"title" => "Sayfa Düzenle",
"url" => route('extension_settings_update'),
"next" => "updateTable",
"inputs" => [
"Sayfa Adı" => "name:text",
"Çalışacak Betik/Fonksiyon" => "scripts:text",
"Sayfa Adı:a" => "name_old:hidden",
"table:views" => "table:hidden",
"Çalışacak Betik/Fonksiyon:a" => "scripts_old:hidden",
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Sayfa Düzenle"
])
@include('l.modal',[
"id"=>"remove_view",
"title" => "Sayfa'yı Sil",
"url" => route('extension_settings_remove'),
"next" => "reload",
"text" => "Sayfa' silmek istediğinize emin misiniz? Bu işlem geri alınamayacaktır.",
"inputs" => [
"Sayfa Adı:a" => "name:hidden",
"table:views" => "table:hidden",
"Çalışacak Betik/Fonksiyon:a" => "scripts:hidden",
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Sayfa'yı Sil"
])
</div>
<!-- /.tab-pane -->
<div class="tab-pane" id="tab_3">
<button class="btn btn-primary btn-sm" onclick="updateExtension('widget','widgetTable')">{{__("Kaydet")}}</button>
<button class="btn btn-success btn-sm" onclick="addRow('widget','widgetTable','{{__("Widget")}}')">{{__("Ekle")}}</button><br><br>
<table class="table table-striped table-hover" id="widgetTable">
<thead>
<tr>
<th scope="col" variable-name="variable">{{ __("Çalışacak Betik/Fonksiyon") }}</th>
<th scope="col" variable-name="type">{{ __("Türü") }}</th>
<th scope="col" variable-name="name">{{ __("Widget Adı") }}</th>
</tr>
</thead>
<tbody class="table-striped">
@foreach($extension->widgets as $key=>$widget)
<tr class="tableRow">
<td>{{$key}}</td>
<td>{{$widget["type"]}}</td>
<td>{{$widget["name"]}}</td>
</tr>
@endforeach
</tbody>
</table>
@include('l.modal-button',[
"class" => "btn-success btn-sm",
"target_id" => "add_widget",
"text" => "Widget Ekle"
])<br><br>
@include('l.table',[
"value" => $extension->widgets,
"title" => [
"Widget Adı" , "Türü" , "Çalışacak Betik/Fonksiyon" , "", "", ""
],
"display" => [
"name" , "type", "target", "name:name_old", "type:type_old", "target:target_old"
],
"menu" => [
"Düzenle" => [
"target" => "edit_widget",
"icon" => "fa-edit"
],
"Sil" => [
"target" => "remove_widget",
"icon" => "fa-trash"
]
]
])
@include('l.modal',[
"id"=>"add_widget",
"title" => "Widget Ekle",
"url" => route('extension_settings_add'),
"next" => "reload",
"inputs" => [
"Widget Adı" => "name:text",
"Türü" => "type:text",
"table:widgets" => "table:hidden",
"Çalışacak Betik/Fonksiyon" => "target:text",
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Widget Ekle"
])
@include('l.modal',[
"id"=>"edit_widget",
"title" => "Widget Düzenle",
"url" => route('extension_settings_update'),
"next" => "updateTable",
"inputs" => [
"Widget Adı" => "name:text",
"Türü" => "type:text",
"Çalışacak Betik/Fonksiyon" => "target:text",
"Widget Adı:a" => "name_old:hidden",
"table:widgets" => "table:hidden",
"Türü:a" => "type_old:hidden",
"Çalışacak Betik/Fonksiyon:a" => "target_old:hidden",
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Widget Düzenle"
])
@include('l.modal',[
"id"=>"remove_widget",
"title" => "Widget'ı Sil",
"url" => route('extension_settings_remove'),
"next" => "reload",
"text" => "Widget'ı silmek istediğinize emin misiniz? Bu işlem geri alınamayacaktır.",
"inputs" => [
"Widget Adı:a" => "name:hidden",
"Türü:a" => "type:hidden",
"table:widgets" => "table:hidden",
"Çalışacak Betik/Fonksiyon:a" => "target:hidden",
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Widget'ı Sil"
])
</div>
<!-- /.tab-pane -->
</div>
<!-- /.tab-content -->
</div>
<script>
let currentTable = "";
function addRow(type,tableId,title){
currentTable = $("#" + tableId);
let modal = $("#add_record");
modal.find('.modal-title').html(title + " {{__("Ekle")}}");
modal.find('.modal-body').html('');
currentTable.find('thead th').each(function(){
if($(this).html() === "#"){
return;
}
$('<label>').attr({
class : 'form-check-label h5',
}).html($(this).html()).appendTo(modal.find('.modal-body'));
$('<input>').attr({
class : 'form-control',
placeholder: $(this).html(),
name: $(this).attr('variable-name'),
}).appendTo(modal.find('.modal-body'));
$('<br>').appendTo(modal.find('.modal-body'));
});
$('<input>').attr({
value : '',
type : 'hidden',
name: 'type',
required : true,
}).appendTo(modal.find('.modal-body'));
modal.modal('show');
}
function addTable(dummy){
let data = new FormData(dummy);
$("#add_record").modal('hide');
let table = currentTable.DataTable();
let row = [];
for(var pair of data.entries()) {
row.push(pair[1]);
}
table.row.add(row).draw(true);
return false;
function editPage(element){
let page = $(element).find("#name").html();
window.location.href = window.location.href + '/' + page;
}
function updateExtension(type,tableId = null){
Swal.fire({
position: 'center',
type: 'info',
title: '{{__("Kaydediliyor...")}}',
showConfirmButton: false,
});
let data = new FormData();
data.append('extension_id','{{extension()->_id}}');
data.append('type',type);
if(type === "general"){
data.append('name',$("#extensionName").val());
data.append('icon',$("#icon").val());
data.append('support',$("#support").val());
data.append('serverless',$("input[name=serverless]:checked").val());
}else{
let table = $("#" + tableId);
let array = [];
table.find('.tableRow').each(function(){
let currentRow = [];
if(type === "view"){
$(this).find('td').each(function(){
let value = this.innerHTML.trim();
if(value === "" || value.startsWith('<button')){
return;
}
currentRow.push(value);
});
}else{
data.append('name',$("#extensionName").val());
data.append('icon',$("#icon").val());
data.append('support',$("#support").val());
data.append('version',$("#version").val());
data.append('serverless',$("input[name=serverless]:checked").val());
}
array.push({
[currentRow[0]] : currentRow.shift()
});
});
console.log(array);
return false;
}
request('{{route('extension_settings_update')}}',data,function(){
location.reload();
Swal.fire({
position: 'center',
type: 'success',
title: "{{__("Başarıyla kaydedildi")}}",
showConfirmButton: false,
timer: 1500
});
setTimeout(function(){
location.reload();
},1500);
});
}
</script>
@include('l.modal',[
"id"=>"add_record",
"title" => "",
"onsubmit" => "addTable",
"next" => "debug",
"inputs" => [
"-:" . extension()->_id => "extension_id:hidden"
],
"submit_text" => "Düzenle"
])
@endsection
\ No newline at end of file
......@@ -12,10 +12,10 @@
"server_id" => request()->route('server_id')
])}}" method="POST">
@csrf
@foreach($extension->setup as $key => $item)
@foreach($extension->database as $item)
@include('l.inputs',[
"inputs" => [
$item["name"] => $key . ":" . $item["type"]
$item["name"] => $item["variable"] . ":" . $item["type"]
]
])
@endforeach
......
......@@ -37,7 +37,7 @@
"id"=>"add_key",
"title" => "SSH Anahtar Ekle",
"url" => route('key_add'),
"next" => "reload",
"next" => "debug",
"inputs" => [
"Sunucu Seçin:server_id" => objectToArray($servers,"name","_id"),
"Kullanıcı Adı" => "username:text",
......
......@@ -44,12 +44,25 @@
}
function save(){
Swal.fire({
position: 'center',
type: 'info',
title: '{{__("Kaydediliyor...")}}',
showConfirmButton: false,
});
let code = JSON.stringify(window.editor.getValue());
let data = new FormData();
data.append('code',code);
data.append('page','{{request('page_name')}}');
data.append('extension_id','{{extension()->_id}}');
request('{{route('extension_code_update')}}',data,function(response){
console.log(response);
Swal.fire({
position: 'center',
type: 'success',
title: "{{__("Başarıyla kaydedildi")}}",
showConfirmButton: false,
timer: 1500
});
});
}
</script>
......
......@@ -25,14 +25,7 @@
<tr class="tableRow" id="{{str_random(10)}}" @isset($onclick)style="cursor: pointer;" onclick="{{$onclick}}(this)" @endisset>
<td>{{$loop->iteration}}</td>
@foreach($display as $item)
@if($item == "server_id" || $item == "extension_id" || $item == "script_id")
@if(is_array($k))
<td id="{{$item}}" hidden>{{$k[$item]}}</td>
@else
<td id="{{$item}}" hidden>{{$k->__get($item)}}</td>
@endif
@elseif(count(explode(':',$item)) > 1)
@if(count(explode(':',$item)) > 1)
@if(is_array($k))
<td id="{{explode(':',$item)[1]}}" hidden>{{$k[explode(':',$item)[0]]}}</td>
@else
......@@ -62,6 +55,10 @@
{{$setCurrentVariable}} = options.$trigger[0].getAttribute("id");
@endisset
let target = $("#" + key);
if(target.length === 0){
window[key](options.$trigger[0]);
return;
}
inputs =[];
$("#" + key + " input , #" + key + ' select').each(function (index, value) {
let element_value = $("#" + options.$trigger[0].getAttribute("id") + " #" + value.getAttribute('name')).html();
......@@ -71,7 +68,6 @@
+ "#" + key + " input[name='" + value.getAttribute('name') + "']").val(element_value);
}
});
console.log(inputs);
target.modal('show');
},
items: {
......
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