add: full multi-tenancy control
This commit is contained in:
495
packages/Webkul/Installer/src/Console/Commands/Installer.php
Normal file
495
packages/Webkul/Installer/src/Console/Commands/Installer.php
Normal file
@@ -0,0 +1,495 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Console\Commands;
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Webkul\Core\Providers\CoreServiceProvider;
|
||||
use Webkul\Installer\Database\Seeders\DatabaseSeeder as KrayinDatabaseSeeder;
|
||||
use Webkul\Installer\Events\ComposerEvents;
|
||||
|
||||
use function Laravel\Prompts\password;
|
||||
use function Laravel\Prompts\select;
|
||||
use function Laravel\Prompts\text;
|
||||
|
||||
class Installer extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'krayin-crm:install
|
||||
{ --skip-env-check : Skip env check. }
|
||||
{ --skip-admin-creation : Skip admin creation. }';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'krayin installer.';
|
||||
|
||||
/**
|
||||
* Locales list.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $locales = [
|
||||
'ar' => 'Arabic',
|
||||
'en' => 'English',
|
||||
'tr' => 'Turkish',
|
||||
'es' => 'Spanish',
|
||||
'fa' => 'Persian',
|
||||
'pt_BR' => 'Portuguese',
|
||||
];
|
||||
|
||||
/**
|
||||
* Currencies list.
|
||||
*
|
||||
* @var array
|
||||
*/
|
||||
protected $currencies = [
|
||||
'AED' => 'United Arab Emirates Dirham',
|
||||
'ARS' => 'Argentine Peso',
|
||||
'AUD' => 'Australian Dollar',
|
||||
'BDT' => 'Bangladeshi Taka',
|
||||
'BRL' => 'Brazilian Real',
|
||||
'CAD' => 'Canadian Dollar',
|
||||
'CHF' => 'Swiss Franc',
|
||||
'CLP' => 'Chilean Peso',
|
||||
'CNY' => 'Chinese Yuan',
|
||||
'COP' => 'Colombian Peso',
|
||||
'CZK' => 'Czech Koruna',
|
||||
'DKK' => 'Danish Krone',
|
||||
'DZD' => 'Algerian Dinar',
|
||||
'EGP' => 'Egyptian Pound',
|
||||
'EUR' => 'Euro',
|
||||
'FJD' => 'Fijian Dollar',
|
||||
'GBP' => 'British Pound Sterling',
|
||||
'HKD' => 'Hong Kong Dollar',
|
||||
'HUF' => 'Hungarian Forint',
|
||||
'IDR' => 'Indonesian Rupiah',
|
||||
'ILS' => 'Israeli New Shekel',
|
||||
'INR' => 'Indian Rupee',
|
||||
'JOD' => 'Jordanian Dinar',
|
||||
'JPY' => 'Japanese Yen',
|
||||
'KRW' => 'South Korean Won',
|
||||
'KWD' => 'Kuwaiti Dinar',
|
||||
'KZT' => 'Kazakhstani Tenge',
|
||||
'LBP' => 'Lebanese Pound',
|
||||
'LKR' => 'Sri Lankan Rupee',
|
||||
'LYD' => 'Libyan Dinar',
|
||||
'MAD' => 'Moroccan Dirham',
|
||||
'MUR' => 'Mauritian Rupee',
|
||||
'MXN' => 'Mexican Peso',
|
||||
'MYR' => 'Malaysian Ringgit',
|
||||
'NGN' => 'Nigerian Naira',
|
||||
'NOK' => 'Norwegian Krone',
|
||||
'NPR' => 'Nepalese Rupee',
|
||||
'NZD' => 'New Zealand Dollar',
|
||||
'OMR' => 'Omani Rial',
|
||||
'PAB' => 'Panamanian Balboa',
|
||||
'PEN' => 'Peruvian Nuevo Sol',
|
||||
'PHP' => 'Philippine Peso',
|
||||
'PKR' => 'Pakistani Rupee',
|
||||
'PLN' => 'Polish Zloty',
|
||||
'PYG' => 'Paraguayan Guarani',
|
||||
'QAR' => 'Qatari Rial',
|
||||
'RON' => 'Romanian Leu',
|
||||
'RUB' => 'Russian Ruble',
|
||||
'SAR' => 'Saudi Riyal',
|
||||
'SEK' => 'Swedish Krona',
|
||||
'SGD' => 'Singapore Dollar',
|
||||
'THB' => 'Thai Baht',
|
||||
'TND' => 'Tunisian Dinar',
|
||||
'TRY' => 'Turkish Lira',
|
||||
'TWD' => 'New Taiwan Dollar',
|
||||
'UAH' => 'Ukrainian Hryvnia',
|
||||
'USD' => 'United States Dollar',
|
||||
'UZS' => 'Uzbekistani Som',
|
||||
'VEF' => 'Venezuelan Bolívar',
|
||||
'VND' => 'Vietnamese Dong',
|
||||
'XAF' => 'CFA Franc BEAC',
|
||||
'XOF' => 'CFA Franc BCEAO',
|
||||
'ZAR' => 'South African Rand',
|
||||
'ZMW' => 'Zambian Kwacha',
|
||||
];
|
||||
|
||||
/**
|
||||
* Install and configure krayin.
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
$applicationDetails = ! $this->option('skip-env-check')
|
||||
? $this->checkForEnvFile()
|
||||
: [];
|
||||
|
||||
$this->loadEnvConfigAtRuntime();
|
||||
|
||||
$this->warn('Step: Generating key...');
|
||||
$this->call('key:generate');
|
||||
|
||||
$this->warn('Step: Migrating all tables...');
|
||||
$this->call('migrate:fresh');
|
||||
|
||||
$this->warn('Step: Seeding basic data for Krayin kickstart...');
|
||||
$this->info(app(KrayinDatabaseSeeder::class)->run([
|
||||
'locale' => $applicationDetails['locale'] ?? 'en',
|
||||
'currency' => $applicationDetails['currency'] ?? 'USD',
|
||||
]));
|
||||
|
||||
$this->warn('Step: Publishing assets and configurations...');
|
||||
$result = $this->call('vendor:publish', ['--provider' => CoreServiceProvider::class, '--force' => true]);
|
||||
$this->info($result);
|
||||
|
||||
$this->warn('Step: Linking storage directory...');
|
||||
$this->call('storage:link');
|
||||
|
||||
$this->warn('Step: Clearing cached bootstrap files...');
|
||||
$this->call('optimize:clear');
|
||||
|
||||
if (! $this->option('skip-admin-creation')) {
|
||||
$this->warn('Step: Create admin credentials...');
|
||||
|
||||
$this->createAdminCredentials();
|
||||
}
|
||||
|
||||
ComposerEvents::postCreateProject();
|
||||
}
|
||||
|
||||
/**
|
||||
* Checking .env file and if not found then create .env file
|
||||
*
|
||||
* @return ?array
|
||||
*/
|
||||
protected function checkForEnvFile()
|
||||
{
|
||||
if (! file_exists(base_path('.env'))) {
|
||||
$this->info('Creating the environment configuration file.');
|
||||
|
||||
File::copy('.env.example', '.env');
|
||||
} else {
|
||||
$this->info('Great! your environment configuration file already exists.');
|
||||
}
|
||||
|
||||
return $this->createEnvFile();
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new .env file. Afterwards, request environment configuration details and set them
|
||||
* in the .env file to facilitate the migration to our database.
|
||||
*
|
||||
* @return ?array
|
||||
*/
|
||||
protected function createEnvFile()
|
||||
{
|
||||
try {
|
||||
$applicationDetails = $this->askForApplicationDetails();
|
||||
|
||||
$this->askForDatabaseDetails();
|
||||
|
||||
return $applicationDetails;
|
||||
} catch (\Exception $e) {
|
||||
$this->error('Error in creating .env file, please create it manually and then run `php artisan migrate` again.');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Ask for application details.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
protected function askForApplicationDetails()
|
||||
{
|
||||
$this->updateEnvVariable(
|
||||
'APP_NAME',
|
||||
'Please enter the application name',
|
||||
env('APP_NAME', 'Krayin CRM')
|
||||
);
|
||||
|
||||
$this->updateEnvVariable(
|
||||
'APP_URL',
|
||||
'Please enter the application URL',
|
||||
env('APP_URL', 'http://localhost:8000')
|
||||
);
|
||||
|
||||
$this->envUpdate(
|
||||
'APP_TIMEZONE',
|
||||
date_default_timezone_get()
|
||||
);
|
||||
|
||||
$this->info('Your Default Timezone is '.date_default_timezone_get());
|
||||
|
||||
$locale = $this->updateEnvChoice(
|
||||
'APP_LOCALE',
|
||||
'Please select the default application locale',
|
||||
$this->locales
|
||||
);
|
||||
|
||||
$currency = $this->updateEnvChoice(
|
||||
'APP_CURRENCY',
|
||||
'Please select the default currency',
|
||||
$this->currencies
|
||||
);
|
||||
|
||||
return [
|
||||
'locale' => $locale,
|
||||
'currency' => $currency,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Add the database credentials to the .env file.
|
||||
*/
|
||||
protected function askForDatabaseDetails()
|
||||
{
|
||||
$databaseDetails = [
|
||||
'DB_CONNECTION' => select(
|
||||
'Please select the database connection',
|
||||
['mysql', 'pgsql', 'sqlsrv']
|
||||
),
|
||||
|
||||
'DB_HOST' => text(
|
||||
label: 'Please enter the database host',
|
||||
default: env('DB_HOST', '127.0.0.1'),
|
||||
required: true
|
||||
),
|
||||
|
||||
'DB_PORT' => text(
|
||||
label: 'Please enter the database port',
|
||||
default: env('DB_PORT', '3306'),
|
||||
required: true
|
||||
),
|
||||
|
||||
'DB_DATABASE' => text(
|
||||
label: 'Please enter the database name',
|
||||
default: env('DB_DATABASE', ''),
|
||||
required: true
|
||||
),
|
||||
|
||||
'DB_PREFIX' => text(
|
||||
label: 'Please enter the database prefix',
|
||||
default: env('DB_PREFIX', ''),
|
||||
hint: 'or press enter to continue',
|
||||
validate: function ($value) {
|
||||
$input = strlen($value);
|
||||
|
||||
if ($input
|
||||
&& ($input < 1
|
||||
|| $input > 6)
|
||||
) {
|
||||
return 'The database prefix must be between 1 and 6 characters.';
|
||||
}
|
||||
|
||||
if (preg_match('/[^a-zA-Z0-9_]/', $value)) {
|
||||
return 'The database prefix may only contain letters, numbers, and underscores.';
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
),
|
||||
|
||||
'DB_USERNAME' => text(
|
||||
label: 'Please enter your database username',
|
||||
default: env('DB_USERNAME', ''),
|
||||
required: true
|
||||
),
|
||||
|
||||
'DB_PASSWORD' => password(
|
||||
label: 'Please enter your database password',
|
||||
required: true
|
||||
),
|
||||
];
|
||||
|
||||
if (
|
||||
! $databaseDetails['DB_DATABASE']
|
||||
|| ! $databaseDetails['DB_USERNAME']
|
||||
|| ! $databaseDetails['DB_PASSWORD']
|
||||
) {
|
||||
return $this->error('Please enter the database credentials.');
|
||||
}
|
||||
|
||||
foreach ($databaseDetails as $key => $value) {
|
||||
if ($value) {
|
||||
$this->envUpdate($key, $value);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a admin credentials.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
protected function createAdminCredentials()
|
||||
{
|
||||
$adminName = text(
|
||||
label: 'Enter the name of the admin user',
|
||||
default: 'Example',
|
||||
required: true
|
||||
);
|
||||
|
||||
$adminEmail = text(
|
||||
label: 'Enter the email address of the admin user',
|
||||
default: 'admin@example.com',
|
||||
validate: fn (string $value) => match (true) {
|
||||
! filter_var($value, FILTER_VALIDATE_EMAIL) => 'The email address you entered is not valid please try again.',
|
||||
default => null
|
||||
}
|
||||
);
|
||||
|
||||
$adminPassword = text(
|
||||
label: 'Configure the password for the admin user',
|
||||
default: 'admin123',
|
||||
required: true
|
||||
);
|
||||
|
||||
$password = password_hash($adminPassword, PASSWORD_BCRYPT, ['cost' => 10]);
|
||||
|
||||
try {
|
||||
DB::table('users')->updateOrInsert(
|
||||
['id' => 1],
|
||||
[
|
||||
'name' => $adminName,
|
||||
'email' => $adminEmail,
|
||||
'password' => $password,
|
||||
'role_id' => 1,
|
||||
'status' => 1,
|
||||
]
|
||||
);
|
||||
|
||||
$filePath = storage_path('installed');
|
||||
|
||||
File::put($filePath, 'Krayin is successfully installed');
|
||||
|
||||
$this->info('-----------------------------');
|
||||
$this->info('Congratulations!');
|
||||
$this->info('The installation has been finished and you can now use Krayin.');
|
||||
$this->info('Go to '.env('APP_URL').'/admin/dashboard'.' and authenticate with:');
|
||||
$this->info('Email: '.$adminEmail);
|
||||
$this->info('Password: '.$adminPassword);
|
||||
$this->info('Cheers!');
|
||||
|
||||
Event::dispatch('krayin.installed');
|
||||
} catch (\Exception $e) {
|
||||
return $this->error($e->getMessage());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Loaded Env variables for config files.
|
||||
*/
|
||||
protected function loadEnvConfigAtRuntime(): void
|
||||
{
|
||||
$this->warn('Loading configs...');
|
||||
|
||||
/**
|
||||
* Setting application environment.
|
||||
*/
|
||||
app()['env'] = $this->getEnvAtRuntime('APP_ENV');
|
||||
|
||||
/**
|
||||
* Setting application configuration.
|
||||
*/
|
||||
config([
|
||||
'app.env' => $this->getEnvAtRuntime('APP_ENV'),
|
||||
'app.name' => $this->getEnvAtRuntime('APP_NAME'),
|
||||
'app.url' => $this->getEnvAtRuntime('APP_URL'),
|
||||
'app.timezone' => $this->getEnvAtRuntime('APP_TIMEZONE'),
|
||||
'app.locale' => $this->getEnvAtRuntime('APP_LOCALE'),
|
||||
'app.currency' => $this->getEnvAtRuntime('APP_CURRENCY'),
|
||||
]);
|
||||
|
||||
/**
|
||||
* Setting database configurations.
|
||||
*/
|
||||
$databaseConnection = $this->getEnvAtRuntime('DB_CONNECTION');
|
||||
|
||||
config([
|
||||
"database.connections.{$databaseConnection}.host" => $this->getEnvAtRuntime('DB_HOST'),
|
||||
"database.connections.{$databaseConnection}.port" => $this->getEnvAtRuntime('DB_PORT'),
|
||||
"database.connections.{$databaseConnection}.database" => $this->getEnvAtRuntime('DB_DATABASE'),
|
||||
"database.connections.{$databaseConnection}.username" => $this->getEnvAtRuntime('DB_USERNAME'),
|
||||
"database.connections.{$databaseConnection}.password" => $this->getEnvAtRuntime('DB_PASSWORD'),
|
||||
"database.connections.{$databaseConnection}.prefix" => $this->getEnvAtRuntime('DB_PREFIX'),
|
||||
]);
|
||||
|
||||
DB::purge($databaseConnection);
|
||||
|
||||
$this->info('Configuration loaded...');
|
||||
}
|
||||
|
||||
/**
|
||||
* Method for asking the details of .env files
|
||||
*/
|
||||
protected function updateEnvVariable(string $key, string $question, string $defaultValue): void
|
||||
{
|
||||
$input = text(
|
||||
label: $question,
|
||||
default: $defaultValue,
|
||||
required: true
|
||||
);
|
||||
|
||||
$this->envUpdate($key, $input ?: $defaultValue);
|
||||
}
|
||||
|
||||
/**
|
||||
* Method for asking choice based on the list of options.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
protected function updateEnvChoice(string $key, string $question, array $choices)
|
||||
{
|
||||
$choice = select(
|
||||
label: $question,
|
||||
options: $choices,
|
||||
default: env($key)
|
||||
);
|
||||
|
||||
$this->envUpdate($key, $choice);
|
||||
|
||||
return $choice;
|
||||
}
|
||||
|
||||
/**
|
||||
* Update the .env values.
|
||||
*/
|
||||
protected function envUpdate(string $key, string $value): void
|
||||
{
|
||||
$data = file_get_contents(base_path('.env'));
|
||||
|
||||
// Check if $value contains spaces, and if so, add double quotes
|
||||
if (preg_match('/\s/', $value)) {
|
||||
$value = '"'.$value.'"';
|
||||
}
|
||||
|
||||
$data = preg_replace("/$key=(.*)/", "$key=$value", $data);
|
||||
|
||||
file_put_contents(base_path('.env'), $data);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check key in `.env` file because it will help to find values at runtime.
|
||||
*/
|
||||
protected static function getEnvAtRuntime(string $key): string|bool
|
||||
{
|
||||
if ($data = file(base_path('.env'))) {
|
||||
foreach ($data as $line) {
|
||||
$line = preg_replace('/\s+/', '', $line);
|
||||
|
||||
$rowValues = explode('=', $line);
|
||||
|
||||
if (strlen($line) !== 0) {
|
||||
if (strpos($key, $rowValues[0]) !== false) {
|
||||
return $rowValues[1];
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
1277
packages/Webkul/Installer/src/Data/countries.json
Normal file
1277
packages/Webkul/Installer/src/Data/countries.json
Normal file
File diff suppressed because it is too large
Load Diff
3978
packages/Webkul/Installer/src/Data/states.json
Normal file
3978
packages/Webkul/Installer/src/Data/states.json
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,117 @@
|
||||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
$now = Carbon::now();
|
||||
|
||||
DB::table('attributes')
|
||||
->insert([
|
||||
[
|
||||
'code' => 'name',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.name'),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '1',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'description',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.description'),
|
||||
'type' => 'textarea',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '2',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'contact_name',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.contact-name'),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '3',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'contact_emails',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.contact-emails'),
|
||||
'type' => 'email',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '4',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '1',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'contact_numbers',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.contact-numbers'),
|
||||
'type' => 'phone',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'numeric',
|
||||
'sort_order' => '5',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '1',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'contact_address',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.contact-address'),
|
||||
'type' => 'address',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '6',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::table('attributes', function (Blueprint $table) {
|
||||
//
|
||||
});
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
$now = Carbon::now();
|
||||
|
||||
DB::table('attributes')
|
||||
->insert([
|
||||
[
|
||||
'code' => 'user_id',
|
||||
'name' => trans('installer::app.seeders.attributes.organizations.sales-owner'),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'organizations',
|
||||
'lookup_type' => 'users',
|
||||
'validation' => null,
|
||||
'sort_order' => '5',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void {}
|
||||
};
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
$now = Carbon::now();
|
||||
|
||||
DB::table('attributes')
|
||||
->insert([
|
||||
[
|
||||
'code' => 'job_title',
|
||||
'name' => trans('installer::app.seeders.attributes.persons.job-title'),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'persons',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '4',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void {}
|
||||
};
|
||||
@@ -0,0 +1,40 @@
|
||||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
$now = Carbon::now();
|
||||
|
||||
DB::table('attributes')
|
||||
->insert([
|
||||
[
|
||||
'code' => 'user_id',
|
||||
'name' => trans('installer::app.seeders.attributes.persons.sales-owner'),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'persons',
|
||||
'lookup_type' => 'users',
|
||||
'validation' => null,
|
||||
'sort_order' => '5',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void {}
|
||||
};
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
return new class extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*/
|
||||
public function up(): void
|
||||
{
|
||||
$now = Carbon::now();
|
||||
|
||||
DB::table('attributes')
|
||||
->insert([
|
||||
[
|
||||
'code' => 'lead_pipeline_id',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.pipeline'),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => 'lead_pipelines',
|
||||
'validation' => null,
|
||||
'sort_order' => '9',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'lead_pipeline_stage_id',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.stage'),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => 'lead_pipeline_stages',
|
||||
'validation' => null,
|
||||
'sort_order' => '10',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
//
|
||||
}
|
||||
};
|
||||
@@ -0,0 +1,645 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Attribute;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class AttributeSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('attributes')->delete();
|
||||
|
||||
$now = Carbon::now();
|
||||
|
||||
$defaultLocale = $parameters['locale'] ?? config('app.locale');
|
||||
|
||||
DB::table('attributes')->insert([
|
||||
/**
|
||||
* Leads Attributes
|
||||
*/
|
||||
[
|
||||
'code' => 'title',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.title', [], $defaultLocale),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '1',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'description',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.description', [], $defaultLocale),
|
||||
'type' => 'textarea',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '2',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'lead_value',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.lead-value', [], $defaultLocale),
|
||||
'type' => 'price',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'decimal',
|
||||
'sort_order' => '3',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'lead_source_id',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.source', [], $defaultLocale),
|
||||
'type' => 'select',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => 'lead_sources',
|
||||
'validation' => null,
|
||||
'sort_order' => '4',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'lead_type_id',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.type', [], $defaultLocale),
|
||||
'type' => 'select',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => 'lead_types',
|
||||
'validation' => null,
|
||||
'sort_order' => '5',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'user_id',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.sales-owner', [], $defaultLocale),
|
||||
'type' => 'select',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => 'users',
|
||||
'validation' => null,
|
||||
'sort_order' => '7',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'expected_close_date',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.expected-close-date', [], $defaultLocale),
|
||||
'type' => 'date',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '8',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'lead_pipeline_id',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.pipeline', [], $defaultLocale),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => 'lead_pipelines',
|
||||
'validation' => null,
|
||||
'sort_order' => '9',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'lead_pipeline_stage_id',
|
||||
'name' => trans('installer::app.seeders.attributes.leads.stage', [], $defaultLocale),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'leads',
|
||||
'lookup_type' => 'lead_pipeline_stages',
|
||||
'validation' => null,
|
||||
'sort_order' => '10',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
|
||||
/**
|
||||
* Persons Attributes
|
||||
*/
|
||||
[
|
||||
'code' => 'name',
|
||||
'name' => trans('installer::app.seeders.attributes.persons.name', [], $defaultLocale),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'persons',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '1',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'emails',
|
||||
'name' => trans('installer::app.seeders.attributes.persons.emails', [], $defaultLocale),
|
||||
'type' => 'email',
|
||||
'entity_type' => 'persons',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '2',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '1',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'contact_numbers',
|
||||
'name' => trans('installer::app.seeders.attributes.persons.contact-numbers', [], $defaultLocale),
|
||||
'type' => 'phone',
|
||||
'entity_type' => 'persons',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'numeric',
|
||||
'sort_order' => '3',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '1',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'job_title',
|
||||
'name' => trans('installer::app.seeders.attributes.persons.job-title', [], $defaultLocale),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'persons',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '4',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'user_id',
|
||||
'name' => trans('installer::app.seeders.attributes.persons.sales-owner', [], $defaultLocale),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'persons',
|
||||
'lookup_type' => 'users',
|
||||
'validation' => null,
|
||||
'sort_order' => '5',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'organization_id',
|
||||
'name' => trans('installer::app.seeders.attributes.persons.organization', [], $defaultLocale),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'persons',
|
||||
'lookup_type' => 'organizations',
|
||||
'validation' => null,
|
||||
'sort_order' => '6',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
|
||||
/**
|
||||
* Organizations Attributes
|
||||
*/
|
||||
[
|
||||
'code' => 'name',
|
||||
'name' => trans('installer::app.seeders.attributes.organizations.name', [], $defaultLocale),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'organizations',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '1',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '1',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'address',
|
||||
'name' => trans('installer::app.seeders.attributes.organizations.address', [], $defaultLocale),
|
||||
'type' => 'address',
|
||||
'entity_type' => 'organizations',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '2',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'user_id',
|
||||
'name' => trans('installer::app.seeders.attributes.organizations.sales-owner', [], $defaultLocale),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'organizations',
|
||||
'lookup_type' => 'users',
|
||||
'validation' => null,
|
||||
'sort_order' => '3',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
|
||||
/**
|
||||
* Products Attributes
|
||||
*/
|
||||
[
|
||||
'code' => 'name',
|
||||
'name' => trans('installer::app.seeders.attributes.products.name', [], $defaultLocale),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'products',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '1',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'description',
|
||||
'name' => trans('installer::app.seeders.attributes.products.description', [], $defaultLocale),
|
||||
'type' => 'textarea',
|
||||
'entity_type' => 'products',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '2',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'sku',
|
||||
'name' => trans('installer::app.seeders.attributes.products.sku', [], $defaultLocale),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'products',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '3',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '1',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'quantity',
|
||||
'name' => trans('installer::app.seeders.attributes.products.quantity', [], $defaultLocale),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'products',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'numeric',
|
||||
'sort_order' => '4',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'price',
|
||||
'name' => trans('installer::app.seeders.attributes.products.price', [], $defaultLocale),
|
||||
'type' => 'price',
|
||||
'entity_type' => 'products',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'decimal',
|
||||
'sort_order' => '5',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
|
||||
/**
|
||||
* Quotes Attributes
|
||||
*/
|
||||
[
|
||||
'code' => 'user_id',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.sales-owner', [], $defaultLocale),
|
||||
'type' => 'select',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => 'users',
|
||||
'validation' => null,
|
||||
'sort_order' => '1',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'subject',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.subject', [], $defaultLocale),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '2',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'description',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.description', [], $defaultLocale),
|
||||
'type' => 'textarea',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '3',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'billing_address',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.billing-address', [], $defaultLocale),
|
||||
'type' => 'address',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '4',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'shipping_address',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.shipping-address', [], $defaultLocale),
|
||||
'type' => 'address',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '5',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'discount_percent',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.discount-percent', [], $defaultLocale),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'decimal',
|
||||
'sort_order' => '6',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'discount_amount',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.discount-amount', [], $defaultLocale),
|
||||
'type' => 'price',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'decimal',
|
||||
'sort_order' => '7',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'tax_amount',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.tax-amount', [], $defaultLocale),
|
||||
'type' => 'price',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'decimal',
|
||||
'sort_order' => '8',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'adjustment_amount',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.adjustment-amount', [], $defaultLocale),
|
||||
'type' => 'price',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'decimal',
|
||||
'sort_order' => '9',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'sub_total',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.sub-total', [], $defaultLocale),
|
||||
'type' => 'price',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'decimal',
|
||||
'sort_order' => '10',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'grand_total',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.grand-total', [], $defaultLocale),
|
||||
'type' => 'price',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'decimal',
|
||||
'sort_order' => '11',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'expired_at',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.expired-at', [], $defaultLocale),
|
||||
'type' => 'date',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '12',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'person_id',
|
||||
'name' => trans('installer::app.seeders.attributes.quotes.person', [], $defaultLocale),
|
||||
'type' => 'lookup',
|
||||
'entity_type' => 'quotes',
|
||||
'lookup_type' => 'persons',
|
||||
'validation' => null,
|
||||
'sort_order' => '13',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
|
||||
/**
|
||||
* Warehouses Attributes
|
||||
*/
|
||||
[
|
||||
'code' => 'name',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.name'),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '1',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'description',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.description'),
|
||||
'type' => 'textarea',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '2',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'contact_name',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.contact-name'),
|
||||
'type' => 'text',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '3',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'contact_emails',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.contact-emails'),
|
||||
'type' => 'email',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '4',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '1',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'contact_numbers',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.contact-numbers'),
|
||||
'type' => 'phone',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => 'numeric',
|
||||
'sort_order' => '5',
|
||||
'is_required' => '0',
|
||||
'is_unique' => '1',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'code' => 'contact_address',
|
||||
'name' => trans('installer::app.seeders.attributes.warehouses.contact-address'),
|
||||
'type' => 'address',
|
||||
'entity_type' => 'warehouses',
|
||||
'lookup_type' => null,
|
||||
'validation' => null,
|
||||
'sort_order' => '6',
|
||||
'is_required' => '1',
|
||||
'is_unique' => '0',
|
||||
'quick_add' => '1',
|
||||
'is_user_defined' => '0',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Attribute;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
$this->call(AttributeSeeder::class, false, ['parameters' => $parameters]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Core;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class CountriesSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('countries')->delete();
|
||||
|
||||
$countries = json_decode(file_get_contents(__DIR__.'/../../../Data/countries.json'), true);
|
||||
|
||||
DB::table('countries')->insert($countries);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Core;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
$this->call(CountriesSeeder::class, false, ['parameters' => $parameters]);
|
||||
$this->call(StatesSeeder::class, false, ['parameters' => $parameters]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Core;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class StatesSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('country_states')->delete();
|
||||
|
||||
$states = json_decode(file_get_contents(__DIR__.'/../../../Data/states.json'), true);
|
||||
|
||||
DB::table('country_states')->insert($states);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,30 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Webkul\Installer\Database\Seeders\Attribute\DatabaseSeeder as AttributeSeeder;
|
||||
use Webkul\Installer\Database\Seeders\Core\DatabaseSeeder as CoreSeeder;
|
||||
use Webkul\Installer\Database\Seeders\EmailTemplate\DatabaseSeeder as EmailTemplateSeeder;
|
||||
use Webkul\Installer\Database\Seeders\Lead\DatabaseSeeder as LeadSeeder;
|
||||
use Webkul\Installer\Database\Seeders\User\DatabaseSeeder as UserSeeder;
|
||||
use Webkul\Installer\Database\Seeders\Workflow\DatabaseSeeder as WorkflowSeeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
$this->call(AttributeSeeder::class, false, ['parameters' => $parameters]);
|
||||
$this->call(CoreSeeder::class, false, ['parameters' => $parameters]);
|
||||
$this->call(EmailTemplateSeeder::class, false, ['parameters' => $parameters]);
|
||||
$this->call(LeadSeeder::class, false, ['parameters' => $parameters]);
|
||||
$this->call(UserSeeder::class, false, ['parameters' => $parameters]);
|
||||
$this->call(WorkflowSeeder::class, false, ['parameters' => $parameters]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\EmailTemplate;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
$this->call(EmailTemplateSeeder::class, false, ['parameters' => $parameters]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,85 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\EmailTemplate;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class EmailTemplateSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('email_templates')->delete();
|
||||
|
||||
$now = Carbon::now();
|
||||
|
||||
$defaultLocale = $parameters['locale'] ?? config('app.locale');
|
||||
|
||||
DB::table('email_templates')->insert([
|
||||
[
|
||||
'id' => 1,
|
||||
'name' => trans('installer::app.seeders.email.activity-created', [], $defaultLocale),
|
||||
'subject' => trans('installer::app.seeders.email.activity-created', [], $defaultLocale).': {%activities.title%}',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
'content' => '<p style="font-size: 16px; color: #5e5e5e;">'.trans('installer::app.seeders.email.new-activity', [], $defaultLocale).':</p>
|
||||
<p><strong style="font-size: 16px;">Details</strong></p>
|
||||
<table style="height: 97px; width: 952px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="width: 116.953px; color: #546e7a; font-size: 16px;">'.trans('installer::app.seeders.email.title', [], $defaultLocale).'</td>
|
||||
<td style="width: 770.047px; font-size: 16px;">{%activities.title%}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 116.953px; color: #546e7a; font-size: 16px;">'.trans('installer::app.seeders.email.type', [], $defaultLocale).'</td>
|
||||
<td style="width: 770.047px; font-size: 16px;">{%activities.type%}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 116.953px; color: #546e7a; font-size: 16px;">'.trans('installer::app.seeders.email.date', [], $defaultLocale).'</td>
|
||||
<td style="width: 770.047px; font-size: 16px;">{%activities.schedule_from%} to {%activities.schedule_to%}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 116.953px; color: #546e7a; font-size: 16px; vertical-align: text-top;">'.trans('installer::app.seeders.email.participants', [], $defaultLocale).'</td>
|
||||
<td style="width: 770.047px; font-size: 16px;">{%activities.participants%}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>',
|
||||
], [
|
||||
'id' => 2,
|
||||
'name' => trans('installer::app.seeders.email.activity-modified', [], $defaultLocale),
|
||||
'subject' => trans('installer::app.seeders.email.activity-modified', [], $defaultLocale).': {%activities.title%}',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
'content' => '<p style="font-size: 16px; color: #5e5e5e;">'.trans('installer::app.seeders.email.new-activity-modified', [], $defaultLocale).':</p>
|
||||
<p><strong style="font-size: 16px;">Details</strong></p>
|
||||
<table style="height: 97px; width: 952px;">
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="width: 116.953px; color: #546e7a; font-size: 16px;">'.trans('installer::app.seeders.email.title', [], $defaultLocale).'</td>
|
||||
<td style="width: 770.047px; font-size: 16px;">{%activities.title%}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 116.953px; color: #546e7a; font-size: 16px;">'.trans('installer::app.seeders.email.type', [], $defaultLocale).'</td>
|
||||
<td style="width: 770.047px; font-size: 16px;">{%activities.type%}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 116.953px; color: #546e7a; font-size: 16px;">'.trans('installer::app.seeders.email.date', [], $defaultLocale).'</td>
|
||||
<td style="width: 770.047px; font-size: 16px;">{%activities.schedule_from%} to {%activities.schedule_to%}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="width: 116.953px; color: #546e7a; font-size: 16px; vertical-align: text-top;">'.trans('installer::app.seeders.email.participants', [], $defaultLocale).'</td>
|
||||
<td style="width: 770.047px; font-size: 16px;">{%activities.participants%}</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>',
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,21 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Lead;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
$this->call(PipelineSeeder::class, false, ['parameters' => $parameters]);
|
||||
$this->call(TypeSeeder::class, false, ['parameters' => $parameters]);
|
||||
$this->call(SourceSeeder::class, false, ['parameters' => $parameters]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,83 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Lead;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class PipelineSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('lead_pipelines')->delete();
|
||||
|
||||
DB::table('lead_pipeline_stages')->delete();
|
||||
|
||||
$now = Carbon::now();
|
||||
|
||||
$defaultLocale = $parameters['locale'] ?? config('app.locale');
|
||||
|
||||
DB::table('lead_pipelines')->insert([
|
||||
[
|
||||
'id' => 1,
|
||||
'name' => trans('installer::app.seeders.lead.pipeline.default', [], $defaultLocale),
|
||||
'is_default' => 1,
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
|
||||
DB::table('lead_pipeline_stages')->insert($data = [
|
||||
[
|
||||
'id' => 1,
|
||||
'code' => 'new',
|
||||
'name' => trans('installer::app.seeders.lead.pipeline.pipeline-stages.new', [], $defaultLocale),
|
||||
'probability' => 100,
|
||||
'sort_order' => 1,
|
||||
'lead_pipeline_id' => 1,
|
||||
], [
|
||||
'id' => 2,
|
||||
'code' => 'follow-up',
|
||||
'name' => trans('installer::app.seeders.lead.pipeline.pipeline-stages.follow-up', [], $defaultLocale),
|
||||
'probability' => 100,
|
||||
'sort_order' => 2,
|
||||
'lead_pipeline_id' => 1,
|
||||
], [
|
||||
'id' => 3,
|
||||
'code' => 'prospect',
|
||||
'name' => trans('installer::app.seeders.lead.pipeline.pipeline-stages.prospect', [], $defaultLocale),
|
||||
'probability' => 100,
|
||||
'sort_order' => 3,
|
||||
'lead_pipeline_id' => 1,
|
||||
], [
|
||||
'id' => 4,
|
||||
'code' => 'negotiation',
|
||||
'name' => trans('installer::app.seeders.lead.pipeline.pipeline-stages.negotiation', [], $defaultLocale),
|
||||
'probability' => 100,
|
||||
'sort_order' => 4,
|
||||
'lead_pipeline_id' => 1,
|
||||
], [
|
||||
'id' => 5,
|
||||
'code' => 'won',
|
||||
'name' => trans('installer::app.seeders.lead.pipeline.pipeline-stages.won', [], $defaultLocale),
|
||||
'probability' => 100,
|
||||
'sort_order' => 5,
|
||||
'lead_pipeline_id' => 1,
|
||||
], [
|
||||
'id' => 6,
|
||||
'code' => 'lost',
|
||||
'name' => trans('installer::app.seeders.lead.pipeline.pipeline-stages.lost', [], $defaultLocale),
|
||||
'probability' => 0,
|
||||
'sort_order' => 6,
|
||||
'lead_pipeline_id' => 1,
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Lead;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class SourceSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('lead_sources')->delete();
|
||||
|
||||
$now = Carbon::now();
|
||||
|
||||
$defaultLocale = $parameters['locale'] ?? config('app.locale');
|
||||
|
||||
DB::table('lead_sources')->insert([
|
||||
[
|
||||
'id' => 1,
|
||||
'name' => trans('installer::app.seeders.lead.source.email', [], $defaultLocale),
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'id' => 2,
|
||||
'name' => trans('installer::app.seeders.lead.source.web', [], $defaultLocale),
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'id' => 3,
|
||||
'name' => trans('installer::app.seeders.lead.source.web-form', [], $defaultLocale),
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'id' => 4,
|
||||
'name' => trans('installer::app.seeders.lead.source.phone', [], $defaultLocale),
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'id' => 5,
|
||||
'name' => trans('installer::app.seeders.lead.source.direct', [], $defaultLocale),
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,39 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Lead;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class TypeSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('lead_types')->delete();
|
||||
|
||||
$now = Carbon::now();
|
||||
|
||||
$defaultLocale = $parameters['locale'] ?? config('app.locale');
|
||||
|
||||
DB::table('lead_types')->insert([
|
||||
[
|
||||
'id' => 1,
|
||||
'name' => trans('installer::app.seeders.lead.type.new-business', [], $defaultLocale),
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'id' => 2,
|
||||
'name' => trans('installer::app.seeders.lead.type.existing-business', [], $defaultLocale),
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\User;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
$this->call(RoleSeeder::class, false, ['parameters' => $parameters]);
|
||||
$this->call(UserSeeder::class, false, ['parameters' => $parameters]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,31 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\User;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class RoleSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('users')->delete();
|
||||
|
||||
DB::table('roles')->delete();
|
||||
|
||||
$defaultLocale = $parameters['locale'] ?? config('app.locale');
|
||||
|
||||
DB::table('roles')->insert([
|
||||
'id' => 1,
|
||||
'name' => trans('installer::app.seeders.user.role.administrator', [], $defaultLocale),
|
||||
'description' => trans('installer::app.seeders.user.role.administrator-role', [], $defaultLocale),
|
||||
'permission_type' => 'all',
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\User;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Str;
|
||||
|
||||
class UserSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('users')->delete();
|
||||
|
||||
DB::table('users')->insert([
|
||||
'id' => 1,
|
||||
'name' => 'Example Admin',
|
||||
'email' => 'admin@example.com',
|
||||
'password' => bcrypt('admin123'),
|
||||
// 'api_token' => Str::random(80),
|
||||
'created_at' => date('Y-m-d H:i:s'),
|
||||
'updated_at' => date('Y-m-d H:i:s'),
|
||||
'status' => 1,
|
||||
'role_id' => 1,
|
||||
'view_permission' => 'global',
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Workflow;
|
||||
|
||||
use Illuminate\Database\Seeder;
|
||||
|
||||
class DatabaseSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
$this->call(WorkflowSeeder::class, false, ['parameters' => $parameters]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Database\Seeders\Workflow;
|
||||
|
||||
use Carbon\Carbon;
|
||||
use Illuminate\Database\Seeder;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
|
||||
class WorkflowSeeder extends Seeder
|
||||
{
|
||||
/**
|
||||
* Seed the application's database.
|
||||
*
|
||||
* @param array $parameters
|
||||
* @return void
|
||||
*/
|
||||
public function run($parameters = [])
|
||||
{
|
||||
DB::table('workflows')->delete();
|
||||
|
||||
$now = Carbon::now();
|
||||
|
||||
$defaultLocale = $parameters['locale'] ?? config('app.locale');
|
||||
|
||||
DB::table('workflows')->insert([
|
||||
[
|
||||
'id' => 1,
|
||||
'name' => trans('installer::app.seeders.workflow.email-to-participants-after-activity-creation', [], $defaultLocale),
|
||||
'description' => trans('installer::app.seeders.workflow.email-to-participants-after-activity-creation', [], $defaultLocale),
|
||||
'entity_type' => 'activities',
|
||||
'event' => 'activity.create.after',
|
||||
'condition_type' => 'and',
|
||||
'conditions' => '[{"value": ["call", "meeting", "lunch"], "operator": "{}", "attribute": "type", "attribute_type": "multiselect"}]',
|
||||
'actions' => '[{"id": "send_email_to_participants", "value": "1"}]',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
], [
|
||||
'id' => 2,
|
||||
'name' => trans('installer::app.seeders.workflow.email-to-participants-after-activity-updation', [], $defaultLocale),
|
||||
'description' => trans('installer::app.seeders.workflow.email-to-participants-after-activity-updation', [], $defaultLocale),
|
||||
'entity_type' => 'activities',
|
||||
'event' => 'activity.update.after',
|
||||
'condition_type' => 'and',
|
||||
'conditions' => '[{"value": ["call", "meeting", "lunch"], "operator": "{}", "attribute": "type", "attribute_type": "multiselect"}]',
|
||||
'actions' => '[{"id": "send_email_to_participants", "value": "2"}]',
|
||||
'created_at' => $now,
|
||||
'updated_at' => $now,
|
||||
],
|
||||
]);
|
||||
}
|
||||
}
|
||||
20
packages/Webkul/Installer/src/Events/ComposerEvents.php
Normal file
20
packages/Webkul/Installer/src/Events/ComposerEvents.php
Normal file
@@ -0,0 +1,20 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Events;
|
||||
|
||||
use Symfony\Component\Console\Output\ConsoleOutput;
|
||||
|
||||
class ComposerEvents
|
||||
{
|
||||
/**
|
||||
* Post create project.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public static function postCreateProject()
|
||||
{
|
||||
$output = new ConsoleOutput;
|
||||
|
||||
$output->writeln(file_get_contents(__DIR__.'/../Templates/on-boarding.php'));
|
||||
}
|
||||
}
|
||||
107
packages/Webkul/Installer/src/Helpers/DatabaseManager.php
Normal file
107
packages/Webkul/Installer/src/Helpers/DatabaseManager.php
Normal file
@@ -0,0 +1,107 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Helpers;
|
||||
|
||||
use Exception;
|
||||
use Illuminate\Support\Facades\Artisan;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Webkul\Installer\Database\Seeders\DatabaseSeeder as KrayinDatabaseSeeder;
|
||||
|
||||
class DatabaseManager
|
||||
{
|
||||
/**
|
||||
* Check Database Connection.
|
||||
*/
|
||||
public function isInstalled()
|
||||
{
|
||||
if (! file_exists(base_path('.env'))) {
|
||||
return false;
|
||||
}
|
||||
|
||||
try {
|
||||
DB::connection()->getPDO();
|
||||
|
||||
$isConnected = (bool) DB::connection()->getDatabaseName();
|
||||
|
||||
if (! $isConnected) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$hasUserTable = Schema::hasTable('users');
|
||||
|
||||
if (! $hasUserTable) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$userCount = DB::table('users')->count();
|
||||
|
||||
if (! $userCount) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Drop all the tables and migrate in the database
|
||||
*
|
||||
* @return void|string
|
||||
*/
|
||||
public function migration()
|
||||
{
|
||||
try {
|
||||
Artisan::call('migrate:fresh');
|
||||
|
||||
return response()->json([
|
||||
'success' => true,
|
||||
'message' => 'Tables is migrated successfully.',
|
||||
]);
|
||||
} catch (Exception $e) {
|
||||
return response()->json([
|
||||
'error' => $e->getMessage(),
|
||||
], 500);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Seed the database.
|
||||
*
|
||||
* @return void|string
|
||||
*/
|
||||
public function seeder($data)
|
||||
{
|
||||
try {
|
||||
app(KrayinDatabaseSeeder::class)->run([
|
||||
'default_locale' => $data['parameter']['default_locales'],
|
||||
'default_currency' => $data['parameter']['default_currency'],
|
||||
]);
|
||||
|
||||
$this->storageLink();
|
||||
} catch (Exception $e) {
|
||||
return $e->getMessage();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Storage Link.
|
||||
*/
|
||||
private function storageLink()
|
||||
{
|
||||
Artisan::call('storage:link');
|
||||
}
|
||||
|
||||
/**
|
||||
* Generate New Application Key
|
||||
*/
|
||||
public function generateKey()
|
||||
{
|
||||
try {
|
||||
Artisan::call('key:generate');
|
||||
} catch (Exception $e) {
|
||||
}
|
||||
}
|
||||
}
|
||||
94
packages/Webkul/Installer/src/Helpers/EnvironmentManager.php
Normal file
94
packages/Webkul/Installer/src/Helpers/EnvironmentManager.php
Normal file
@@ -0,0 +1,94 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Helpers;
|
||||
|
||||
use Exception;
|
||||
|
||||
class EnvironmentManager
|
||||
{
|
||||
/**
|
||||
* Create a helper instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(protected DatabaseManager $databaseManager) {}
|
||||
|
||||
/**
|
||||
* Generate ENV File and Installation.
|
||||
*
|
||||
* @param [object] $request
|
||||
*/
|
||||
public function generateEnv($request)
|
||||
{
|
||||
$envExamplePath = base_path('.env.example');
|
||||
|
||||
$envPath = base_path('.env');
|
||||
|
||||
if (! file_exists($envPath)) {
|
||||
if (file_exists($envExamplePath)) {
|
||||
copy($envExamplePath, $envPath);
|
||||
} else {
|
||||
touch($envPath);
|
||||
}
|
||||
}
|
||||
|
||||
try {
|
||||
$response = $this->setEnvConfiguration($request->all());
|
||||
|
||||
$this->databaseManager->generateKey();
|
||||
|
||||
return $response;
|
||||
} catch (Exception $e) {
|
||||
return $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the ENV file configuration.
|
||||
*
|
||||
* @return string
|
||||
*/
|
||||
public function setEnvConfiguration(array $request)
|
||||
{
|
||||
$envDBParams = [];
|
||||
|
||||
/**
|
||||
* Update params with form-data.
|
||||
*/
|
||||
if (isset($request['db_hostname'])) {
|
||||
$envDBParams['DB_HOST'] = $request['db_hostname'];
|
||||
$envDBParams['DB_DATABASE'] = $request['db_name'];
|
||||
$envDBParams['DB_PREFIX'] = $request['db_prefix'] ?? '';
|
||||
$envDBParams['DB_USERNAME'] = $request['db_username'];
|
||||
$envDBParams['DB_PASSWORD'] = $request['db_password'];
|
||||
$envDBParams['DB_CONNECTION'] = $request['db_connection'];
|
||||
$envDBParams['DB_PORT'] = (int) $request['db_port'];
|
||||
}
|
||||
|
||||
if (isset($request['app_name'])) {
|
||||
$envDBParams['APP_NAME'] = $request['app_name'] ?? null;
|
||||
$envDBParams['APP_URL'] = $request['app_url'];
|
||||
$envDBParams['APP_LOCALE'] = $request['app_locale'];
|
||||
$envDBParams['APP_TIMEZONE'] = $request['app_timezone'];
|
||||
$envDBParams['APP_CURRENCY'] = $request['app_currency'];
|
||||
}
|
||||
|
||||
$data = file_get_contents(base_path('.env'));
|
||||
|
||||
foreach ($envDBParams as $key => $value) {
|
||||
if (preg_match('/\s/', $value)) {
|
||||
$value = '"'.$value.'"';
|
||||
}
|
||||
|
||||
$data = preg_replace("/$key=(.*)/", "$key=$value", $data);
|
||||
}
|
||||
|
||||
try {
|
||||
file_put_contents(base_path('.env'), $data);
|
||||
} catch (Exception $e) {
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
96
packages/Webkul/Installer/src/Helpers/ServerRequirements.php
Normal file
96
packages/Webkul/Installer/src/Helpers/ServerRequirements.php
Normal file
@@ -0,0 +1,96 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Helpers;
|
||||
|
||||
class ServerRequirements
|
||||
{
|
||||
/**
|
||||
* Minimum PHP Version Supported (Override is in installer.php config file).
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
private $minPhpVersion = '8.1.0';
|
||||
|
||||
/**
|
||||
* Check for the server requirements.
|
||||
*/
|
||||
public function validate(): array
|
||||
{
|
||||
// Server Requirements
|
||||
$requirements = [
|
||||
'php' => [
|
||||
'calendar',
|
||||
'ctype',
|
||||
'curl',
|
||||
'dom',
|
||||
'fileinfo',
|
||||
'filter',
|
||||
'gd',
|
||||
'hash',
|
||||
'intl',
|
||||
'json',
|
||||
'mbstring',
|
||||
'openssl',
|
||||
'pcre',
|
||||
'pdo',
|
||||
'session',
|
||||
'tokenizer',
|
||||
'xml',
|
||||
],
|
||||
];
|
||||
|
||||
$results = [];
|
||||
|
||||
foreach ($requirements as $type => $requirement) {
|
||||
foreach ($requirement as $item) {
|
||||
$results['requirements'][$type][$item] = true;
|
||||
|
||||
if (! extension_loaded($item)) {
|
||||
$results['requirements'][$type][$item] = false;
|
||||
|
||||
$results['errors'] = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return $results;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check PHP version requirement.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function checkPHPversion(?string $minPhpVersion = null)
|
||||
{
|
||||
$minVersionPhp = $minPhpVersion ?? $this->minPhpVersion;
|
||||
|
||||
$currentPhpVersion = $this->getPhpVersionInfo();
|
||||
|
||||
$supported = version_compare($currentPhpVersion['version'], $minVersionPhp) >= 0;
|
||||
|
||||
return [
|
||||
'full' => $currentPhpVersion['full'],
|
||||
'current' => $currentPhpVersion['version'],
|
||||
'minimum' => $minVersionPhp,
|
||||
'supported' => $supported,
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Get current Php version information.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
private static function getPhpVersionInfo()
|
||||
{
|
||||
$currentVersionFull = PHP_VERSION;
|
||||
|
||||
preg_match("#^\d+(\.\d+)*#", $currentVersionFull, $filtered);
|
||||
|
||||
return [
|
||||
'full' => $currentVersionFull,
|
||||
'version' => $filtered[0] ?? $currentVersionFull,
|
||||
];
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Http\Controllers;
|
||||
|
||||
use Illuminate\Foundation\Bus\DispatchesJobs;
|
||||
use Illuminate\Foundation\Validation\ValidatesRequests;
|
||||
use Illuminate\Routing\Controller as BaseController;
|
||||
|
||||
class Controller extends BaseController
|
||||
{
|
||||
use DispatchesJobs, ValidatesRequests;
|
||||
}
|
||||
@@ -0,0 +1,108 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Response as IlluminateResponse;
|
||||
use Illuminate\Support\Facades\Cache;
|
||||
|
||||
class ImageCacheController
|
||||
{
|
||||
/**
|
||||
* Cache template
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $template;
|
||||
|
||||
/**
|
||||
* Logo
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const KRAYIN_LOGO = 'https://updates.krayincrm.com/krayin.png';
|
||||
|
||||
/**
|
||||
* Get HTTP response of template applied image file
|
||||
*
|
||||
* @param string $filename
|
||||
* @return Illuminate\Http\Response
|
||||
*/
|
||||
public function getImage($filename)
|
||||
{
|
||||
try {
|
||||
$content = Cache::remember('krayin-logo', 10080, function () {
|
||||
return $this->getImageFromUrl(self::KRAYIN_LOGO);
|
||||
});
|
||||
} catch (\Exception $e) {
|
||||
$content = '';
|
||||
}
|
||||
|
||||
return $this->buildResponse($content);
|
||||
}
|
||||
|
||||
/**
|
||||
* Init from given URL
|
||||
*
|
||||
* @param string $url
|
||||
* @return \Intervention\Image\Image
|
||||
*/
|
||||
public function getImageFromUrl($url)
|
||||
{
|
||||
$domain = config('app.url');
|
||||
|
||||
$options = [
|
||||
'http' => [
|
||||
'method' => 'GET',
|
||||
'protocol_version' => 1.1, // force use HTTP 1.1 for service mesh environment with envoy
|
||||
'header' => "Accept-language: en\r\n".
|
||||
"Domain: $domain\r\n".
|
||||
"User-Agent: Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 Safari/537.36\r\n",
|
||||
],
|
||||
];
|
||||
|
||||
$context = stream_context_create($options);
|
||||
|
||||
if ($data = @file_get_contents($url, false, $context)) {
|
||||
return $data;
|
||||
}
|
||||
|
||||
throw new \Exception(
|
||||
'Unable to init from given url ('.$url.').'
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Builds HTTP response from given image data
|
||||
*
|
||||
* @param string $content
|
||||
* @return Illuminate\Http\Response
|
||||
*/
|
||||
protected function buildResponse($content)
|
||||
{
|
||||
/**
|
||||
* Define mime type
|
||||
*/
|
||||
$mime = finfo_buffer(finfo_open(FILEINFO_MIME_TYPE), $content);
|
||||
|
||||
/**
|
||||
* Respond with 304 not modified if browser has the image cached
|
||||
*/
|
||||
$eTag = md5($content);
|
||||
|
||||
$notModified = isset($_SERVER['HTTP_IF_NONE_MATCH']) && $_SERVER['HTTP_IF_NONE_MATCH'] == $eTag;
|
||||
|
||||
$content = $notModified ? null : $content;
|
||||
|
||||
$statusCode = $notModified ? 304 : 200;
|
||||
|
||||
/**
|
||||
* Return http response
|
||||
*/
|
||||
return new IlluminateResponse($content, $statusCode, [
|
||||
'Content-Type' => $mime,
|
||||
'Cache-Control' => 'max-age=10080, public',
|
||||
'Content-Length' => strlen($content),
|
||||
'Etag' => $eTag,
|
||||
]);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,143 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Facades\File;
|
||||
use Webkul\Installer\Helpers\DatabaseManager;
|
||||
use Webkul\Installer\Helpers\EnvironmentManager;
|
||||
use Webkul\Installer\Helpers\ServerRequirements;
|
||||
|
||||
class InstallerController extends Controller
|
||||
{
|
||||
/**
|
||||
* Const Variable For Min PHP Version
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
const MIN_PHP_VERSION = '8.1.0';
|
||||
|
||||
/**
|
||||
* Const Variable for Static Customer Id
|
||||
*
|
||||
* @var int
|
||||
*/
|
||||
const USER_ID = 1;
|
||||
|
||||
/**
|
||||
* Create a new controller instance
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(
|
||||
protected ServerRequirements $serverRequirements,
|
||||
protected EnvironmentManager $environmentManager,
|
||||
protected DatabaseManager $databaseManager
|
||||
) {}
|
||||
|
||||
/**
|
||||
* Installer View Root Page
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$phpVersion = $this->serverRequirements->checkPHPversion(self::MIN_PHP_VERSION);
|
||||
|
||||
$requirements = $this->serverRequirements->validate();
|
||||
|
||||
if (request()->has('locale')) {
|
||||
return redirect()->route('installer.index');
|
||||
}
|
||||
|
||||
return view('installer::installer.index', compact('requirements', 'phpVersion'));
|
||||
}
|
||||
|
||||
/**
|
||||
* ENV File Setup
|
||||
*/
|
||||
public function envFileSetup(Request $request): JsonResponse
|
||||
{
|
||||
$message = $this->environmentManager->generateEnv($request);
|
||||
|
||||
return new JsonResponse(['data' => $message]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Run Migration
|
||||
*/
|
||||
public function runMigration(): mixed
|
||||
{
|
||||
return $this->databaseManager->migration();
|
||||
}
|
||||
|
||||
/**
|
||||
* Run Seeder.
|
||||
*
|
||||
* @return void|string
|
||||
*/
|
||||
public function runSeeder()
|
||||
{
|
||||
$allParameters = request()->allParameters;
|
||||
|
||||
$parameter = [
|
||||
'parameter' => [
|
||||
'default_locales' => $allParameters['app_locale'] ?? null,
|
||||
'default_currency' => $allParameters['app_currency'] ?? null,
|
||||
],
|
||||
];
|
||||
|
||||
$response = $this->environmentManager->setEnvConfiguration($allParameters);
|
||||
|
||||
if ($response) {
|
||||
$seeder = $this->databaseManager->seeder($parameter);
|
||||
|
||||
return $seeder;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Admin Configuration Setup.
|
||||
*/
|
||||
public function adminConfigSetup(): bool
|
||||
{
|
||||
$password = password_hash(request()->input('password'), PASSWORD_BCRYPT, ['cost' => 10]);
|
||||
|
||||
try {
|
||||
DB::table('users')->updateOrInsert(
|
||||
[
|
||||
'id' => self::USER_ID,
|
||||
], [
|
||||
'name' => request()->input('admin'),
|
||||
'email' => request()->input('email'),
|
||||
'password' => $password,
|
||||
'role_id' => 1,
|
||||
'status' => 1,
|
||||
]
|
||||
);
|
||||
|
||||
$this->smtpConfigSetup();
|
||||
|
||||
return true;
|
||||
} catch (\Throwable $th) {
|
||||
report($th);
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* SMTP connection setup for Mail
|
||||
*/
|
||||
private function smtpConfigSetup()
|
||||
{
|
||||
$filePath = storage_path('installed');
|
||||
|
||||
File::put($filePath, 'Your Krayin App is Successfully Installed');
|
||||
|
||||
Event::dispatch('krayin.installed');
|
||||
|
||||
return $filePath;
|
||||
}
|
||||
}
|
||||
50
packages/Webkul/Installer/src/Http/Middleware/CanInstall.php
Normal file
50
packages/Webkul/Installer/src/Http/Middleware/CanInstall.php
Normal file
@@ -0,0 +1,50 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\Str;
|
||||
use Webkul\Installer\Helpers\DatabaseManager;
|
||||
|
||||
class CanInstall
|
||||
{
|
||||
/**
|
||||
* Handles Requests if application is already installed then redirect to dashboard else to installer.
|
||||
*/
|
||||
public function handle(Request $request, Closure $next): mixed
|
||||
{
|
||||
if (Str::contains($request->getPathInfo(), '/install')) {
|
||||
if ($this->isAlreadyInstalled() && ! $request->ajax()) {
|
||||
return redirect()->route('admin.dashboard.index');
|
||||
}
|
||||
} else {
|
||||
if (! $this->isAlreadyInstalled()) {
|
||||
return redirect()->route('installer.index');
|
||||
}
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if application is already installed.
|
||||
*/
|
||||
public function isAlreadyInstalled(): bool
|
||||
{
|
||||
if (file_exists(storage_path('installed'))) {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (app(DatabaseManager::class)->isInstalled()) {
|
||||
touch(storage_path('installed'));
|
||||
|
||||
Event::dispatch('krayin.installed');
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
27
packages/Webkul/Installer/src/Http/Middleware/Locale.php
Normal file
27
packages/Webkul/Installer/src/Http/Middleware/Locale.php
Normal file
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Http\Middleware;
|
||||
|
||||
use Closure;
|
||||
|
||||
class Locale
|
||||
{
|
||||
/**
|
||||
* Handle an incoming request.
|
||||
*
|
||||
* @param \Illuminate\Http\Request $request
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle($request, Closure $next)
|
||||
{
|
||||
if ($localeCode = $request->query('locale')) {
|
||||
app()->setLocale($localeCode);
|
||||
|
||||
session()->put('installer_locale', $localeCode);
|
||||
} else {
|
||||
app()->setLocale(session()->get('installer_locale') ?? config('app.locale'));
|
||||
}
|
||||
|
||||
return $next($request);
|
||||
}
|
||||
}
|
||||
53
packages/Webkul/Installer/src/Listeners/Installer.php
Normal file
53
packages/Webkul/Installer/src/Listeners/Installer.php
Normal file
@@ -0,0 +1,53 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Listeners;
|
||||
|
||||
use GuzzleHttp\Client;
|
||||
use Webkul\User\Repositories\UserRepository;
|
||||
|
||||
class Installer
|
||||
{
|
||||
/**
|
||||
* Api endpoint
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected const API_ENDPOINT = 'https://updates.krayincrm.com/api/updates';
|
||||
|
||||
/**
|
||||
* Create a new listener instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct(protected UserRepository $userRepository) {}
|
||||
|
||||
/**
|
||||
* After Krayin is successfully installed
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function installed()
|
||||
{
|
||||
$user = $this->userRepository->first();
|
||||
|
||||
$httpClient = new Client;
|
||||
|
||||
try {
|
||||
$httpClient->request('POST', self::API_ENDPOINT, [
|
||||
'headers' => [
|
||||
'Accept' => 'application/json',
|
||||
],
|
||||
'json' => [
|
||||
'domain' => config('app.url'),
|
||||
'email' => $user?->email,
|
||||
'name' => $user?->name,
|
||||
'country_code' => config('app.default_country') ?? 'IN',
|
||||
],
|
||||
]);
|
||||
} catch (\Exception $e) {
|
||||
/**
|
||||
* Skip the error
|
||||
*/
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
<?php
|
||||
|
||||
namespace Webkul\Installer\Providers;
|
||||
|
||||
use Illuminate\Routing\Router;
|
||||
use Illuminate\Support\Facades\Event;
|
||||
use Illuminate\Support\ServiceProvider;
|
||||
use Webkul\Installer\Console\Commands\Installer as InstallerCommand;
|
||||
use Webkul\Installer\Http\Middleware\CanInstall;
|
||||
use Webkul\Installer\Http\Middleware\Locale;
|
||||
|
||||
class InstallerServiceProvider extends ServiceProvider
|
||||
{
|
||||
/**
|
||||
* Indicates if loading of the provider is deferred.
|
||||
*/
|
||||
protected bool $defer = false;
|
||||
|
||||
/**
|
||||
* Bootstrap the application events.
|
||||
*/
|
||||
public function boot(Router $router): void
|
||||
{
|
||||
$router->middlewareGroup('install', [CanInstall::class]);
|
||||
|
||||
$this->loadTranslationsFrom(__DIR__.'/../Resources/lang', 'installer');
|
||||
|
||||
$this->loadRoutesFrom(__DIR__.'/../Routes/web.php');
|
||||
|
||||
$this->loadMigrationsFrom(__DIR__.'/../Database/Migrations');
|
||||
|
||||
$this->loadTranslationsFrom(__DIR__.'/../Resources/lang', 'installer');
|
||||
|
||||
$this->loadViewsFrom(__DIR__.'/../Resources/views', 'installer');
|
||||
|
||||
$router->aliasMiddleware('installer_locale', Locale::class);
|
||||
|
||||
Event::listen('krayin.installed', 'Webkul\Installer\Listeners\Installer@installed');
|
||||
|
||||
$this->loadTranslationsFrom(__DIR__.'/../Resources/lang', 'installer');
|
||||
|
||||
/**
|
||||
* Route to access template applied image file
|
||||
*/
|
||||
$this->app['router']->get('cache/{filename}', [
|
||||
'uses' => 'Webkul\Installer\Http\Controllers\ImageCacheController@getImage',
|
||||
'as' => 'image_cache',
|
||||
])->where(['filename' => '[ \w\\.\\/\\-\\@\(\)\=]+']);
|
||||
}
|
||||
|
||||
/**
|
||||
* Register the service provider.
|
||||
*/
|
||||
public function register(): void
|
||||
{
|
||||
if (! $this->app->runningInConsole()) {
|
||||
return;
|
||||
}
|
||||
|
||||
$this->commands([InstallerCommand::class]);
|
||||
}
|
||||
}
|
||||
182
packages/Webkul/Installer/src/Resources/assets/css/app.css
Normal file
182
packages/Webkul/Installer/src/Resources/assets/css/app.css
Normal file
@@ -0,0 +1,182 @@
|
||||
@tailwind base;
|
||||
@tailwind components;
|
||||
@tailwind utilities;
|
||||
|
||||
/* -------------------------------- new css -------------------------------- */
|
||||
@font-face {
|
||||
font-family: "icomoon";
|
||||
src: url("../fonts/icomoon.eot?w2trdd");
|
||||
src: url("../fonts/icomoon.eot?w2trdd#iefix") format("embedded-opentype"),
|
||||
url("../fonts/icomoon.ttf?w2trdd") format("truetype"),
|
||||
url("../fonts/icomoon.woff?w2trdd") format("woff"),
|
||||
url("../fonts/icomoon.svg?w2trdd#icomoon") format("svg");
|
||||
font-weight: normal;
|
||||
font-style: normal;
|
||||
font-display: block;
|
||||
}
|
||||
|
||||
[class^="icon-"],
|
||||
[class*=" icon-"] {
|
||||
/* use !important to prevent issues with browser extensions that change fonts */
|
||||
font-family: "icomoon" !important;
|
||||
speak: never;
|
||||
font-style: normal;
|
||||
font-weight: normal;
|
||||
font-variant: normal;
|
||||
text-transform: none;
|
||||
line-height: 1;
|
||||
|
||||
/* Better Font Rendering =========== */
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
/* -------------------------------- new css end -------------------------------- */
|
||||
|
||||
@layer components {
|
||||
::-webkit-scrollbar {
|
||||
width: 12px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-track {
|
||||
background: #f1f1f1;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb {
|
||||
background: #888;
|
||||
border-radius: 6px;
|
||||
}
|
||||
|
||||
::-webkit-scrollbar-thumb:hover {
|
||||
background: #555;
|
||||
}
|
||||
|
||||
/* Firefox */
|
||||
* {
|
||||
scrollbar-width: thin;
|
||||
scrollbar-color: #888 #f1f1f1;
|
||||
}
|
||||
|
||||
::selection {
|
||||
background-color: rgba(0, 68, 242, 0.2);
|
||||
}
|
||||
|
||||
body {
|
||||
@apply bg-gray-100 text-sm text-gray-800;
|
||||
}
|
||||
|
||||
button:disabled {
|
||||
@apply cursor-not-allowed opacity-50;
|
||||
}
|
||||
|
||||
button:disabled:hover {
|
||||
@apply cursor-not-allowed opacity-50;
|
||||
}
|
||||
|
||||
.direction-ltr {
|
||||
direction: ltr;
|
||||
}
|
||||
|
||||
.direction-rtl {
|
||||
direction: rtl;
|
||||
}
|
||||
|
||||
.draggable-ghost {
|
||||
opacity: 0.5;
|
||||
background: #e0e7ff;
|
||||
}
|
||||
|
||||
html.dark [class^="icon-"],
|
||||
html.dark [class*=" icon-"] {
|
||||
color: #d1d5db;
|
||||
}
|
||||
|
||||
/* -------------------------------- new css -------------------------------- */
|
||||
.icon-tick:before {
|
||||
content: "\e931";
|
||||
}
|
||||
|
||||
.icon-cross-large:before {
|
||||
content: "\e91c";
|
||||
}
|
||||
|
||||
.icon-left-arrow:before {
|
||||
content: "\e91d";
|
||||
}
|
||||
|
||||
.icon-right-arrow:before {
|
||||
content: "\e91e";
|
||||
}
|
||||
|
||||
.icon-up-arrow:before {
|
||||
content: "\e91f";
|
||||
}
|
||||
|
||||
.icon-down-arrow:before {
|
||||
content: "\e920";
|
||||
}
|
||||
|
||||
/* -------------------------------- new css end -------------------------------- */
|
||||
|
||||
p {
|
||||
@apply text-[14px] !leading-[17px];
|
||||
}
|
||||
|
||||
input,
|
||||
textarea,
|
||||
select {
|
||||
@apply outline-none;
|
||||
}
|
||||
|
||||
.primary-button {
|
||||
@apply bg-brandColor border border-brandColor cursor-pointer flex focus:opacity-[0.9] font-semibold gap-x-1 hover:opacity-[0.9] items-center place-content-center px-3 py-1.5 rounded-md text-gray-50 transition-all;
|
||||
}
|
||||
|
||||
.secondary-button {
|
||||
@apply flex cursor-pointer place-content-center items-center gap-x-1 whitespace-nowrap rounded-md border-2 border-brandColor bg-white px-3 py-1.5 font-semibold text-brandColor transition-all hover: bg-[#eff6ff61] focus:bg-[#eff6ff61] dark:border-gray-400 dark:bg-gray-800 dark:text-white dark:hover:opacity-80;
|
||||
}
|
||||
|
||||
.transparent-button {
|
||||
@apply flex cursor-pointer appearance-none place-content-center items-center gap-x-1 whitespace-nowrap rounded-md border-2 border-transparent px-3 py-1.5 font-semibold text-gray-600 transition-all marker:shadow hover:bg-gray-100 focus:bg-gray-100 dark:hover:bg-gray-950;
|
||||
}
|
||||
|
||||
.journal-scroll::-webkit-scrollbar {
|
||||
width: 14px;
|
||||
cursor: pointer;
|
||||
display: none;
|
||||
}
|
||||
|
||||
.journal-scroll::-webkit-scrollbar-track {
|
||||
background-color: #fff;
|
||||
cursor: pointer;
|
||||
border-radius: 12px;
|
||||
border: 1px solid #e9e9e9;
|
||||
}
|
||||
|
||||
.journal-scroll::-webkit-scrollbar-thumb {
|
||||
cursor: pointer;
|
||||
background-color: #e9e9e9;
|
||||
border-radius: 12px;
|
||||
border: 3px solid transparent;
|
||||
background-clip: content-box;
|
||||
}
|
||||
|
||||
.custom-select {
|
||||
-webkit-appearance: none;
|
||||
-moz-appearance: none;
|
||||
background: transparent;
|
||||
background-image: url("data:image/svg+xml;utf8,<svg fill='black' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>");
|
||||
background-repeat: no-repeat;
|
||||
background-position-x: calc(100% - 10px);
|
||||
background-position-y: 50%;
|
||||
}
|
||||
|
||||
.dark .custom-select {
|
||||
background-image: url("data:image/svg+xml;utf8,<svg fill='white' height='24' viewBox='0 0 24 24' width='24' xmlns='http://www.w3.org/2000/svg'><path d='M7 10l5 5 5-5z'/><path d='M0 0h24v24H0z' fill='none'/></svg>");
|
||||
}
|
||||
|
||||
[dir="rtl"] .custom-select {
|
||||
background-position-x: calc(100% - (100% - 10px));
|
||||
}
|
||||
}
|
||||
/* -------------------------------- new css end -------------------------------- */
|
||||
BIN
packages/Webkul/Installer/src/Resources/assets/fonts/icomoon.eot
Normal file
BIN
packages/Webkul/Installer/src/Resources/assets/fonts/icomoon.eot
Normal file
Binary file not shown.
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 145 KiB |
BIN
packages/Webkul/Installer/src/Resources/assets/fonts/icomoon.ttf
Normal file
BIN
packages/Webkul/Installer/src/Resources/assets/fonts/icomoon.ttf
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
After Width: | Height: | Size: 1.1 KiB |
File diff suppressed because one or more lines are too long
|
After Width: | Height: | Size: 6.3 KiB |
@@ -0,0 +1,18 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24">
|
||||
<circle
|
||||
cx="12"
|
||||
cy="12"
|
||||
r="10"
|
||||
stroke="currentColor"
|
||||
stroke-opacity="0.25"
|
||||
stroke-width="4"
|
||||
>
|
||||
</circle>
|
||||
|
||||
<path
|
||||
fill="currentColor"
|
||||
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
||||
stroke-opacity="0.75"
|
||||
>
|
||||
</path>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 454 B |
89
packages/Webkul/Installer/src/Resources/assets/js/app.js
Normal file
89
packages/Webkul/Installer/src/Resources/assets/js/app.js
Normal file
@@ -0,0 +1,89 @@
|
||||
/**
|
||||
* This will track all the images and fonts for publishing.
|
||||
*/
|
||||
import.meta.glob(["../images/**", "../fonts/**"]);
|
||||
|
||||
/**
|
||||
* Main vue bundler.
|
||||
*/
|
||||
import { createApp } from "vue/dist/vue.esm-bundler";
|
||||
|
||||
/**
|
||||
* We are defining all the global rules here and configuring
|
||||
* all the `vee-validate` settings.
|
||||
*/
|
||||
import { configure, defineRule } from "vee-validate";
|
||||
import { localize } from "@vee-validate/i18n";
|
||||
import en from "@vee-validate/i18n/dist/locale/en.json";
|
||||
import { all } from '@vee-validate/rules';
|
||||
|
||||
/**
|
||||
* Registration of all global validators.
|
||||
*/
|
||||
Object.entries(all).forEach(([name, rule]) => defineRule(name, rule));
|
||||
|
||||
defineRule("", () => true);
|
||||
|
||||
configure({
|
||||
/**
|
||||
* Built-in error messages and custom error messages are available. Multiple
|
||||
* locales can be added in the same way.
|
||||
*/
|
||||
generateMessage: localize({
|
||||
en: {
|
||||
...en,
|
||||
messages: {
|
||||
...en.messages,
|
||||
phone: "This {field} must be a valid phone number",
|
||||
},
|
||||
},
|
||||
}),
|
||||
|
||||
validateOnBlur: true,
|
||||
validateOnInput: true,
|
||||
validateOnChange: true,
|
||||
});
|
||||
|
||||
/**
|
||||
* Main root application registry.
|
||||
*/
|
||||
window.app = createApp({
|
||||
data() {
|
||||
return {};
|
||||
},
|
||||
|
||||
methods: {
|
||||
onSubmit() {},
|
||||
|
||||
onInvalidSubmit() {},
|
||||
},
|
||||
});
|
||||
|
||||
/**
|
||||
* Global plugins registration.
|
||||
*/
|
||||
import Axios from "./plugins/axios";
|
||||
[
|
||||
Axios,
|
||||
].forEach((plugin) => app.use(plugin));
|
||||
|
||||
|
||||
/**
|
||||
* Global components registration;
|
||||
*/
|
||||
import { Field, Form, ErrorMessage } from "vee-validate";
|
||||
|
||||
app.component("VForm", Form);
|
||||
app.component("VField", Field);
|
||||
app.component("VErrorMessage", ErrorMessage);
|
||||
|
||||
|
||||
/**
|
||||
* Load event, the purpose of using the event is to mount the application
|
||||
* after all of our `Vue` components which is present in blade file have
|
||||
* been registered in the app. No matter what `app.mount()` should be
|
||||
* called in the last.
|
||||
*/
|
||||
window.addEventListener("load", function (event) {
|
||||
app.mount("#app");
|
||||
});
|
||||
@@ -0,0 +1,9 @@
|
||||
import axios from "axios";
|
||||
window.axios = axios;
|
||||
window.axios.defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
|
||||
|
||||
export default {
|
||||
install(app) {
|
||||
app.config.globalProperties.$axios = axios;
|
||||
},
|
||||
};
|
||||
289
packages/Webkul/Installer/src/Resources/lang/ar/app.php
Normal file
289
packages/Webkul/Installer/src/Resources/lang/ar/app.php
Normal file
@@ -0,0 +1,289 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'seeders' => [
|
||||
'attributes' => [
|
||||
'leads' => [
|
||||
'description' => 'الوصف',
|
||||
'expected-close-date' => 'تاريخ الإغلاق المتوقع',
|
||||
'lead-value' => 'قيمة العميل المحتمل',
|
||||
'sales-owner' => 'مالك المبيعات',
|
||||
'source' => 'المصدر',
|
||||
'title' => 'العنوان',
|
||||
'type' => 'النوع',
|
||||
'pipeline' => 'قناة المبيعات',
|
||||
'stage' => 'المرحلة',
|
||||
],
|
||||
|
||||
'persons' => [
|
||||
'contact-numbers' => 'أرقام الاتصال',
|
||||
'emails' => 'البريد الإلكتروني',
|
||||
'job-title' => 'المسمى الوظيفي',
|
||||
'name' => 'الاسم',
|
||||
'organization' => 'المنظمة',
|
||||
'sales-owner' => 'مالك المبيعات',
|
||||
],
|
||||
|
||||
'organizations' => [
|
||||
'address' => 'العنوان',
|
||||
'name' => 'الاسم',
|
||||
'sales-owner' => 'مالك المبيعات',
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'description' => 'الوصف',
|
||||
'name' => 'الاسم',
|
||||
'price' => 'السعر',
|
||||
'quantity' => 'الكمية',
|
||||
'sku' => 'SKU',
|
||||
],
|
||||
|
||||
'quotes' => [
|
||||
'adjustment-amount' => 'مبلغ التعديل',
|
||||
'billing-address' => 'عنوان الفواتير',
|
||||
'description' => 'الوصف',
|
||||
'discount-amount' => 'مبلغ الخصم',
|
||||
'discount-percent' => 'نسبة الخصم',
|
||||
'expired-at' => 'منتهي في',
|
||||
'grand-total' => 'الإجمالي',
|
||||
'person' => 'شخص',
|
||||
'sales-owner' => 'مالك المبيعات',
|
||||
'shipping-address' => 'عنوان الشحن',
|
||||
'sub-total' => 'الإجمالي الفرعي',
|
||||
'subject' => 'الموضوع',
|
||||
'tax-amount' => 'مبلغ الضريبة',
|
||||
],
|
||||
|
||||
'warehouses' => [
|
||||
'contact-address' => 'عنوان الاتصال',
|
||||
'contact-emails' => 'البريد الإلكتروني للتواصل',
|
||||
'contact-name' => 'اسم الاتصال',
|
||||
'contact-numbers' => 'أرقام الاتصال',
|
||||
'description' => 'الوصف',
|
||||
'name' => 'الاسم',
|
||||
],
|
||||
],
|
||||
|
||||
'email' => [
|
||||
'activity-created' => 'تم إنشاء النشاط',
|
||||
'activity-modified' => 'تم تعديل النشاط',
|
||||
'date' => 'التاريخ',
|
||||
'new-activity' => 'لديك نشاط جديد، يرجى العثور على التفاصيل أدناه',
|
||||
'new-activity-modified' => 'تم تعديل النشاط الجديد، يرجى العثور على التفاصيل أدناه',
|
||||
'participants' => 'المشاركون',
|
||||
'title' => 'العنوان',
|
||||
'type' => 'النوع',
|
||||
],
|
||||
|
||||
'lead' => [
|
||||
'pipeline' => [
|
||||
'default' => 'قناة المبيعات الافتراضية',
|
||||
|
||||
'pipeline-stages' => [
|
||||
'follow-up' => 'متابعة',
|
||||
'lost' => 'مفقود',
|
||||
'negotiation' => 'مفاوضات',
|
||||
'new' => 'جديد',
|
||||
'prospect' => 'عميل محتمل',
|
||||
'won' => 'مُنتصر',
|
||||
],
|
||||
],
|
||||
|
||||
'source' => [
|
||||
'direct' => 'مباشر',
|
||||
'email' => 'البريد الإلكتروني',
|
||||
'phone' => 'الهاتف',
|
||||
'web' => 'ويب',
|
||||
'web-form' => 'نموذج ويب',
|
||||
],
|
||||
|
||||
'type' => [
|
||||
'existing-business' => 'عمل موجود',
|
||||
'new-business' => 'عمل جديد',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'role' => [
|
||||
'administrator-role' => 'دور المسؤول',
|
||||
'administrator' => 'مسؤول',
|
||||
],
|
||||
],
|
||||
|
||||
'workflow' => [
|
||||
'email-to-participants-after-activity-updation' => 'رسائل بريد إلكتروني للمشاركين بعد تحديث النشاط',
|
||||
'email-to-participants-after-activity-creation' => 'رسائل بريد إلكتروني للمشاركين بعد إنشاء النشاط',
|
||||
],
|
||||
],
|
||||
|
||||
'installer' => [
|
||||
'index' => [
|
||||
'create-administrator' => [
|
||||
'admin' => 'مدير',
|
||||
'krayin' => 'Krayin',
|
||||
'confirm-password' => 'تأكيد كلمة المرور',
|
||||
'email' => 'البريد الإلكتروني',
|
||||
'email-address' => 'admin@example.com',
|
||||
'password' => 'كلمة المرور',
|
||||
'title' => 'إنشاء المسؤول',
|
||||
],
|
||||
|
||||
'environment-configuration' => [
|
||||
'algerian-dinar' => 'الدينار الجزائري (DZD)',
|
||||
'allowed-currencies' => 'العملات المسموح بها',
|
||||
'allowed-locales' => 'اللغات المسموح بها',
|
||||
'application-name' => 'اسم التطبيق',
|
||||
'argentine-peso' => 'البيزو الأرجنتيني (ARS)',
|
||||
'australian-dollar' => 'الدولار الأسترالي (AUD)',
|
||||
'krayin' => 'Krayin',
|
||||
'bangladeshi-taka' => 'التاكا البنغلاديشي (BDT)',
|
||||
'brazilian-real' => 'الريال البرازيلي (BRL)',
|
||||
'british-pound-sterling' => 'الجنيه الإسترليني البريطاني (GBP)',
|
||||
'canadian-dollar' => 'الدولار الكندي (CAD)',
|
||||
'cfa-franc-bceao' => 'فرنك CFA BCEAO (XOF)',
|
||||
'cfa-franc-beac' => 'فرنك CFA BEAC (XAF)',
|
||||
'chilean-peso' => 'البيزو التشيلي (CLP)',
|
||||
'chinese-yuan' => 'اليوان الصيني (CNY)',
|
||||
'colombian-peso' => 'البيزو الكولومبي (COP)',
|
||||
'czech-koruna' => 'الكرونة التشيكية (CZK)',
|
||||
'danish-krone' => 'الكرونة الدنماركية (DKK)',
|
||||
'database-connection' => 'اتصال قاعدة البيانات',
|
||||
'database-hostname' => 'اسم مضيف قاعدة البيانات',
|
||||
'database-name' => 'اسم قاعدة البيانات',
|
||||
'database-password' => 'كلمة مرور قاعدة البيانات',
|
||||
'database-port' => 'منفذ قاعدة البيانات',
|
||||
'database-prefix' => 'بادئة قاعدة البيانات',
|
||||
'database-username' => 'اسم مستخدم قاعدة البيانات',
|
||||
'default-currency' => 'العملة الافتراضية',
|
||||
'default-locale' => 'اللغة الافتراضية',
|
||||
'default-timezone' => 'المنطقة الزمنية الافتراضية',
|
||||
'default-url' => 'الرابط الافتراضي',
|
||||
'default-url-link' => 'https://localhost',
|
||||
'egyptian-pound' => 'الجنيه المصري (EGP)',
|
||||
'euro' => 'اليورو (EUR)',
|
||||
'fijian-dollar' => 'الدولار الفيجي (FJD)',
|
||||
'hong-kong-dollar' => 'الدولار الهونغ كونغي (HKD)',
|
||||
'hungarian-forint' => 'الفورنت الهنغاري (HUF)',
|
||||
'indian-rupee' => 'الروبية الهندية (INR)',
|
||||
'indonesian-rupiah' => 'الروبية الإندونيسية (IDR)',
|
||||
'israeli-new-shekel' => 'الشيكل الإسرائيلي الجديد (ILS)',
|
||||
'japanese-yen' => 'الين الياباني (JPY)',
|
||||
'jordanian-dinar' => 'الدينار الأردني (JOD)',
|
||||
'kazakhstani-tenge' => 'التينغ الكازاخستاني (KZT)',
|
||||
'kuwaiti-dinar' => 'الدينار الكويتي (KWD)',
|
||||
'lebanese-pound' => 'الجنيه اللبناني (LBP)',
|
||||
'libyan-dinar' => 'الدينار الليبي (LYD)',
|
||||
'malaysian-ringgit' => 'الرينغيت الماليزي (MYR)',
|
||||
'mauritian-rupee' => 'الروبية الموريشية (MUR)',
|
||||
'mexican-peso' => 'البيزو المكسيكي (MXN)',
|
||||
'moroccan-dirham' => 'الدرهم المغربي (MAD)',
|
||||
'mysql' => 'MySQL',
|
||||
'nepalese-rupee' => 'الروبية النيبالية (NPR)',
|
||||
'new-taiwan-dollar' => 'الدولار التايواني الجديد (TWD)',
|
||||
'new-zealand-dollar' => 'الدولار النيوزيلندي (NZD)',
|
||||
'nigerian-naira' => 'النايرا النيجيري (NGN)',
|
||||
'norwegian-krone' => 'الكرونة النرويجية (NOK)',
|
||||
'omani-rial' => 'الريال العماني (OMR)',
|
||||
'pakistani-rupee' => 'الروبية الباكستانية (PKR)',
|
||||
'panamanian-balboa' => 'البالبوا البنمي (PAB)',
|
||||
'paraguayan-guarani' => 'الغواراني الباراغواي (PYG)',
|
||||
'peruvian-nuevo-sol' => 'السول البيروفي الجديد (PEN)',
|
||||
'pgsql' => 'PgSQL',
|
||||
'philippine-peso' => 'البيزو الفلبيني (PHP)',
|
||||
'polish-zloty' => 'الزلوتي البولندي (PLN)',
|
||||
'qatari-rial' => 'الريال القطري (QAR)',
|
||||
'romanian-leu' => 'الليو الروماني (RON)',
|
||||
'russian-ruble' => 'الروبل الروسي (RUB)',
|
||||
'saudi-riyal' => 'الريال السعودي (SAR)',
|
||||
'select-timezone' => 'اختر المنطقة الزمنية',
|
||||
'singapore-dollar' => 'الدولار السنغافوري (SGD)',
|
||||
'south-african-rand' => 'الراند الجنوب أفريقي (ZAR)',
|
||||
'south-korean-won' => 'الوون الكوري الجنوبي (KRW)',
|
||||
'sqlsrv' => 'SQLSRV',
|
||||
'sri-lankan-rupee' => 'الروبية السريلانكية (LKR)',
|
||||
'swedish-krona' => 'الكرونا السويدية (SEK)',
|
||||
'swiss-franc' => 'الفرنك السويسري (CHF)',
|
||||
'thai-baht' => 'الباهت التايلاندي (THB)',
|
||||
'title' => 'إعدادات المتجر',
|
||||
'tunisian-dinar' => 'الدينار التونسي (TND)',
|
||||
'turkish-lira' => 'الليرة التركية (TRY)',
|
||||
'ukrainian-hryvnia' => 'الهريفنيا الأوكرانية (UAH)',
|
||||
'united-arab-emirates-dirham' => 'الدرهم الإماراتي (AED)',
|
||||
'united-states-dollar' => 'الدولار الأمريكي (USD)',
|
||||
'uzbekistani-som' => 'السوم الأوزبكستاني (UZS)',
|
||||
'venezuelan-bolívar' => 'البوليفار الفنزويلي (VEF)',
|
||||
'vietnamese-dong' => 'الدونج الفيتنامي (VND)',
|
||||
'warning-message' => 'احذر! إعدادات لغة النظام الافتراضية والعملات الافتراضية دائمة ولا يمكن تغييرها بمجرد تعيينها.',
|
||||
'zambian-kwacha' => 'الكواشا الزامبي (ZMW)',
|
||||
],
|
||||
|
||||
'installation-processing' => [
|
||||
'krayin' => 'تثبيت Krayin',
|
||||
'krayin-info' => 'إنشاء جداول قاعدة البيانات، وقد يستغرق ذلك بضع دقائق',
|
||||
'title' => 'التثبيت',
|
||||
],
|
||||
|
||||
'installation-completed' => [
|
||||
'admin-panel' => 'لوحة المشرف',
|
||||
'krayin-forums' => 'منتديات Krayin',
|
||||
'customer-panel' => 'لوحة العميل',
|
||||
'explore-krayin-extensions' => 'استكشاف امتدادات Krayin',
|
||||
'title' => 'اكتمال التثبيت',
|
||||
'title-info' => 'تم تثبيت Krayin بنجاح على نظامك.',
|
||||
],
|
||||
|
||||
'ready-for-installation' => [
|
||||
'create-databsae-table' => 'إنشاء جدول قاعدة البيانات',
|
||||
'install' => 'التثبيت',
|
||||
'install-info' => 'Krayin للتثبيت',
|
||||
'install-info-button' => 'انقر على الزر أدناه ل',
|
||||
'populate-database-table' => 'ملء جداول قاعدة البيانات',
|
||||
'start-installation' => 'بدء التثبيت',
|
||||
'title' => 'جاهز للتثبيت',
|
||||
],
|
||||
|
||||
'start' => [
|
||||
'locale' => 'اللغة',
|
||||
'main' => 'بداية',
|
||||
'select-locale' => 'اختر اللغة',
|
||||
'title' => 'تثبيت Krayin الخاص بك',
|
||||
'welcome-title' => 'مرحبًا بك في Krayin',
|
||||
],
|
||||
|
||||
'server-requirements' => [
|
||||
'calendar' => 'التقويم',
|
||||
'ctype' => 'cType',
|
||||
'curl' => 'cURL',
|
||||
'dom' => 'dom',
|
||||
'fileinfo' => 'معلومات الملف',
|
||||
'filter' => 'المرشح',
|
||||
'gd' => 'GD',
|
||||
'hash' => 'التجزئة',
|
||||
'intl' => 'intl',
|
||||
'json' => 'JSON',
|
||||
'mbstring' => 'mbstring',
|
||||
'openssl' => 'openssl',
|
||||
'pcre' => 'pcre',
|
||||
'pdo' => 'pdo',
|
||||
'php' => 'PHP',
|
||||
'php-version' => '8.1 أو أعلى',
|
||||
'session' => 'الجلسة',
|
||||
'title' => 'متطلبات الخادم',
|
||||
'tokenizer' => 'tokenizer',
|
||||
'xml' => 'XML',
|
||||
],
|
||||
|
||||
'back' => 'رجوع',
|
||||
'krayin' => 'Krayin',
|
||||
'krayin-info' => 'مشروع مجتمعي من قبل',
|
||||
'krayin-logo' => 'شعار Krayin',
|
||||
'continue' => 'متابعة',
|
||||
'installation-description' => 'عادة ما تتضمن عملية تثبيت Krayin عدة خطوات. إليك نظرة عامة عامة على عملية التثبيت krayin',
|
||||
'installation-info' => 'نحن سعداء برؤيتك هنا!',
|
||||
'installation-title' => 'مرحبًا بك في التثبيت',
|
||||
'installation-wizard' => 'لغة معالج التثبيت',
|
||||
'title' => 'مثبت Krayin',
|
||||
'webkul' => 'Webkul',
|
||||
],
|
||||
],
|
||||
];
|
||||
289
packages/Webkul/Installer/src/Resources/lang/en/app.php
Normal file
289
packages/Webkul/Installer/src/Resources/lang/en/app.php
Normal file
@@ -0,0 +1,289 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'seeders' => [
|
||||
'attributes' => [
|
||||
'leads' => [
|
||||
'description' => 'Description',
|
||||
'expected-close-date' => 'Expected Close Date',
|
||||
'lead-value' => 'Lead Value',
|
||||
'sales-owner' => 'Sales Owner',
|
||||
'source' => 'Source',
|
||||
'title' => 'Title',
|
||||
'type' => 'Type',
|
||||
'pipeline' => 'Pipeline',
|
||||
'stage' => 'Stage',
|
||||
],
|
||||
|
||||
'persons' => [
|
||||
'contact-numbers' => 'Contact Numbers',
|
||||
'emails' => 'Emails',
|
||||
'job-title' => 'Job Title',
|
||||
'name' => 'Name',
|
||||
'organization' => 'Organization',
|
||||
'sales-owner' => 'Sales Owner',
|
||||
],
|
||||
|
||||
'organizations' => [
|
||||
'address' => 'Address',
|
||||
'name' => 'Name',
|
||||
'sales-owner' => 'Sales Owner',
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'description' => 'Description',
|
||||
'name' => 'Name',
|
||||
'price' => 'Price',
|
||||
'quantity' => 'Quantity',
|
||||
'sku' => 'SKU',
|
||||
],
|
||||
|
||||
'quotes' => [
|
||||
'adjustment-amount' => 'Adjustment Amount',
|
||||
'billing-address' => 'Billing Address',
|
||||
'description' => 'Description',
|
||||
'discount-amount' => 'Discount Amount',
|
||||
'discount-percent' => 'Discount Percent',
|
||||
'expired-at' => 'Expired At',
|
||||
'grand-total' => 'Grand Total',
|
||||
'person' => 'Person',
|
||||
'sales-owner' => 'Sales Owner',
|
||||
'shipping-address' => 'Shipping Address',
|
||||
'sub-total' => 'Sub Total',
|
||||
'subject' => 'Subject',
|
||||
'tax-amount' => 'Tax Amount',
|
||||
],
|
||||
|
||||
'warehouses' => [
|
||||
'contact-address' => 'Contact Address',
|
||||
'contact-emails' => 'Contact Emails',
|
||||
'contact-name' => 'Contact Name',
|
||||
'contact-numbers' => 'Contact Numbers',
|
||||
'description' => 'Description',
|
||||
'name' => 'Name',
|
||||
],
|
||||
],
|
||||
|
||||
'email' => [
|
||||
'activity-created' => 'Activity created',
|
||||
'activity-modified' => 'Activity modified',
|
||||
'date' => 'Date',
|
||||
'new-activity' => 'You have a new activity, please find the details bellow',
|
||||
'new-activity-modified' => 'You have a new activity modified, please find the details bellow',
|
||||
'participants' => 'Participants',
|
||||
'title' => 'Title',
|
||||
'type' => 'Type',
|
||||
],
|
||||
|
||||
'lead' => [
|
||||
'pipeline' => [
|
||||
'default' => 'Default Pipeline',
|
||||
|
||||
'pipeline-stages' => [
|
||||
'follow-up' => 'Follow Up',
|
||||
'lost' => 'Lost',
|
||||
'negotiation' => 'Negotiation',
|
||||
'new' => 'New',
|
||||
'prospect' => 'Prospect',
|
||||
'won' => 'Won',
|
||||
],
|
||||
],
|
||||
|
||||
'source' => [
|
||||
'direct' => 'Direct',
|
||||
'email' => 'Email',
|
||||
'phone' => 'Phone',
|
||||
'web' => 'Web',
|
||||
'web-form' => 'Web Form',
|
||||
],
|
||||
|
||||
'type' => [
|
||||
'existing-business' => 'Existing Business',
|
||||
'new-business' => 'New Business',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'role' => [
|
||||
'administrator-role' => 'Administrator Role',
|
||||
'administrator' => 'Administrator',
|
||||
],
|
||||
],
|
||||
|
||||
'workflow' => [
|
||||
'email-to-participants-after-activity-updation' => 'Emails to participants after activity updation',
|
||||
'email-to-participants-after-activity-creation' => 'Emails to participants after activity creation',
|
||||
],
|
||||
],
|
||||
|
||||
'installer' => [
|
||||
'index' => [
|
||||
'create-administrator' => [
|
||||
'admin' => 'Admin',
|
||||
'krayin' => 'Krayin',
|
||||
'confirm-password' => 'Confirm Password',
|
||||
'email' => 'Email',
|
||||
'email-address' => 'admin@example.com',
|
||||
'password' => 'Password',
|
||||
'title' => 'Create Administrator',
|
||||
],
|
||||
|
||||
'environment-configuration' => [
|
||||
'algerian-dinar' => 'Algerian Dinar (DZD)',
|
||||
'allowed-currencies' => 'Allowed Currencies',
|
||||
'allowed-locales' => 'Allowed Locales',
|
||||
'application-name' => 'Application Name',
|
||||
'argentine-peso' => 'Argentine Peso (ARS)',
|
||||
'australian-dollar' => 'Australian Dollar (AUD)',
|
||||
'krayin' => 'Krayin',
|
||||
'bangladeshi-taka' => 'Bangladeshi Taka (BDT)',
|
||||
'brazilian-real' => 'Brazilian Real (BRL)',
|
||||
'british-pound-sterling' => 'British Pound Sterling (GBP)',
|
||||
'canadian-dollar' => 'Canadian Dollar (CAD)',
|
||||
'cfa-franc-bceao' => 'CFA Franc BCEAO (XOF)',
|
||||
'cfa-franc-beac' => 'CFA Franc BEAC (XAF)',
|
||||
'chilean-peso' => 'Chilean Peso (CLP)',
|
||||
'chinese-yuan' => 'Chinese Yuan (CNY)',
|
||||
'colombian-peso' => 'Colombian Peso (COP)',
|
||||
'czech-koruna' => 'Czech Koruna (CZK)',
|
||||
'danish-krone' => 'Danish Krone (DKK)',
|
||||
'database-connection' => 'Database Connection',
|
||||
'database-hostname' => 'Database Hostname',
|
||||
'database-name' => 'Database Name',
|
||||
'database-password' => 'Database Password',
|
||||
'database-port' => 'Database Port',
|
||||
'database-prefix' => 'Database Prefix',
|
||||
'database-username' => 'Database Username',
|
||||
'default-currency' => 'Default Currency',
|
||||
'default-locale' => 'Default Locale',
|
||||
'default-timezone' => 'Default Timezone',
|
||||
'default-url' => 'Default URL',
|
||||
'default-url-link' => 'https://localhost',
|
||||
'egyptian-pound' => 'Egyptian Pound (EGP)',
|
||||
'euro' => 'Euro (EUR)',
|
||||
'fijian-dollar' => 'Fijian Dollar (FJD)',
|
||||
'hong-kong-dollar' => 'Hong Kong Dollar (HKD)',
|
||||
'hungarian-forint' => 'Hungarian Forint (HUF)',
|
||||
'indian-rupee' => 'Indian Rupee (INR)',
|
||||
'indonesian-rupiah' => 'Indonesian Rupiah (IDR)',
|
||||
'israeli-new-shekel' => 'Israeli New Shekel (ILS)',
|
||||
'japanese-yen' => 'Japanese Yen (JPY)',
|
||||
'jordanian-dinar' => 'Jordanian Dinar (JOD)',
|
||||
'kazakhstani-tenge' => 'Kazakhstani Tenge (KZT)',
|
||||
'kuwaiti-dinar' => 'Kuwaiti Dinar (KWD)',
|
||||
'lebanese-pound' => 'Lebanese Pound (LBP)',
|
||||
'libyan-dinar' => 'Libyan Dinar (LYD)',
|
||||
'malaysian-ringgit' => 'Malaysian Ringgit (MYR)',
|
||||
'mauritian-rupee' => 'Mauritian Rupee (MUR)',
|
||||
'mexican-peso' => 'Mexican Peso (MXN)',
|
||||
'moroccan-dirham' => 'Moroccan Dirham (MAD)',
|
||||
'mysql' => 'Mysql',
|
||||
'nepalese-rupee' => 'Nepalese Rupee (NPR)',
|
||||
'new-taiwan-dollar' => 'New Taiwan Dollar (TWD)',
|
||||
'new-zealand-dollar' => 'New Zealand Dollar (NZD)',
|
||||
'nigerian-naira' => 'Nigerian Naira (NGN)',
|
||||
'norwegian-krone' => 'Norwegian Krone (NOK)',
|
||||
'omani-rial' => 'Omani Rial (OMR)',
|
||||
'pakistani-rupee' => 'Pakistani Rupee (PKR)',
|
||||
'panamanian-balboa' => 'Panamanian Balboa (PAB)',
|
||||
'paraguayan-guarani' => 'Paraguayan Guarani (PYG)',
|
||||
'peruvian-nuevo-sol' => 'Peruvian Nuevo Sol (PEN)',
|
||||
'pgsql' => 'pgSQL',
|
||||
'philippine-peso' => 'Philippine Peso (PHP)',
|
||||
'polish-zloty' => 'Polish Zloty (PLN)',
|
||||
'qatari-rial' => 'Qatari Rial (QAR)',
|
||||
'romanian-leu' => 'Romanian Leu (RON)',
|
||||
'russian-ruble' => 'Russian Ruble (RUB)',
|
||||
'saudi-riyal' => 'Saudi Riyal (SAR)',
|
||||
'select-timezone' => 'Select Timezone',
|
||||
'singapore-dollar' => 'Singapore Dollar (SGD)',
|
||||
'south-african-rand' => 'South African Rand (ZAR)',
|
||||
'south-korean-won' => 'South Korean Won (KRW)',
|
||||
'sqlsrv' => 'SQLSRV',
|
||||
'sri-lankan-rupee' => 'Sri Lankan Rupee (LKR)',
|
||||
'swedish-krona' => 'Swedish Krona (SEK)',
|
||||
'swiss-franc' => 'Swiss Franc (CHF)',
|
||||
'thai-baht' => 'Thai Baht (THB)',
|
||||
'title' => 'Store Configuration',
|
||||
'tunisian-dinar' => 'Tunisian Dinar (TND)',
|
||||
'turkish-lira' => 'Turkish Lira (TRY)',
|
||||
'ukrainian-hryvnia' => 'Ukrainian Hryvnia (UAH)',
|
||||
'united-arab-emirates-dirham' => 'United Arab Emirates Dirham (AED)',
|
||||
'united-states-dollar' => 'United States Dollar (USD)',
|
||||
'uzbekistani-som' => 'Uzbekistani Som (UZS)',
|
||||
'venezuelan-bolívar' => 'Venezuelan Bolívar (VEF)',
|
||||
'vietnamese-dong' => 'Vietnamese Dong (VND)',
|
||||
'warning-message' => 'Beware! The settings for your default system language and default currency are permanent and cannot be changed once set.',
|
||||
'zambian-kwacha' => 'Zambian Kwacha (ZMW)',
|
||||
],
|
||||
|
||||
'installation-processing' => [
|
||||
'krayin' => 'Installation Krayin',
|
||||
'krayin-info' => 'Creating the database tables, this can take a few moments',
|
||||
'title' => 'Installation',
|
||||
],
|
||||
|
||||
'installation-completed' => [
|
||||
'admin-panel' => 'Admin Panel',
|
||||
'krayin-forums' => 'Krayin Forum',
|
||||
'customer-panel' => 'Customer Panel',
|
||||
'explore-krayin-extensions' => 'Explore Krayin Extension',
|
||||
'title' => 'Installation Completed',
|
||||
'title-info' => 'Krayin is Successfully installed on your system.',
|
||||
],
|
||||
|
||||
'ready-for-installation' => [
|
||||
'create-databsae-table' => 'Create the database table',
|
||||
'install' => 'Installation',
|
||||
'install-info' => 'Krayin For Installation',
|
||||
'install-info-button' => 'Click the button below to',
|
||||
'populate-database-table' => 'Populate the database tables',
|
||||
'start-installation' => 'Start Installation',
|
||||
'title' => 'Ready for Installation',
|
||||
],
|
||||
|
||||
'start' => [
|
||||
'locale' => 'Locale',
|
||||
'main' => 'Start',
|
||||
'select-locale' => 'Select Locale',
|
||||
'title' => 'Your Krayin install',
|
||||
'welcome-title' => 'Welcome to Krayin',
|
||||
],
|
||||
|
||||
'server-requirements' => [
|
||||
'calendar' => 'Calendar',
|
||||
'ctype' => 'cType',
|
||||
'curl' => 'cURL',
|
||||
'dom' => 'dom',
|
||||
'fileinfo' => 'fileInfo',
|
||||
'filter' => 'Filter',
|
||||
'gd' => 'GD',
|
||||
'hash' => 'Hash',
|
||||
'intl' => 'intl',
|
||||
'json' => 'JSON',
|
||||
'mbstring' => 'mbstring',
|
||||
'openssl' => 'openssl',
|
||||
'pcre' => 'pcre',
|
||||
'pdo' => 'pdo',
|
||||
'php' => 'PHP',
|
||||
'php-version' => '8.1 or higher',
|
||||
'session' => 'session',
|
||||
'title' => 'System Requirements',
|
||||
'tokenizer' => 'tokenizer',
|
||||
'xml' => 'XML',
|
||||
],
|
||||
|
||||
'back' => 'Back',
|
||||
'krayin' => 'Krayin',
|
||||
'krayin-info' => 'a Community Project by',
|
||||
'krayin-logo' => 'Krayin Logo',
|
||||
'continue' => 'Continue',
|
||||
'installation-description' => 'Krayin installation typically involves several steps. Here\'s a general outline of the installation process for Krayin',
|
||||
'installation-info' => 'We are happy to see you here!',
|
||||
'installation-title' => 'Welcome to Installation',
|
||||
'installation-wizard' => 'Installation Wizard language',
|
||||
'title' => 'Krayin Installer',
|
||||
'webkul' => 'Webkul',
|
||||
],
|
||||
],
|
||||
];
|
||||
289
packages/Webkul/Installer/src/Resources/lang/es/app.php
Normal file
289
packages/Webkul/Installer/src/Resources/lang/es/app.php
Normal file
@@ -0,0 +1,289 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'seeders' => [
|
||||
'attributes' => [
|
||||
'leads' => [
|
||||
'description' => 'Descripción',
|
||||
'expected-close-date' => 'Fecha de Cierre Esperada',
|
||||
'lead-value' => 'Valor del Prospecto',
|
||||
'sales-owner' => 'Propietario de Ventas',
|
||||
'source' => 'Fuente',
|
||||
'title' => 'Título',
|
||||
'type' => 'Tipo',
|
||||
'pipeline' => 'Pipeline',
|
||||
'stage' => 'Etapa',
|
||||
],
|
||||
|
||||
'persons' => [
|
||||
'contact-numbers' => 'Números de Contacto',
|
||||
'emails' => 'Correos Electrónicos',
|
||||
'job-title' => 'Cargo',
|
||||
'name' => 'Nombre',
|
||||
'organization' => 'Organización',
|
||||
'sales-owner' => 'Propietario de Ventas',
|
||||
],
|
||||
|
||||
'organizations' => [
|
||||
'address' => 'Dirección',
|
||||
'name' => 'Nombre',
|
||||
'sales-owner' => 'Propietario de Ventas',
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'description' => 'Descripción',
|
||||
'name' => 'Nombre',
|
||||
'price' => 'Precio',
|
||||
'quantity' => 'Cantidad',
|
||||
'sku' => 'SKU',
|
||||
],
|
||||
|
||||
'quotes' => [
|
||||
'adjustment-amount' => 'Cantidad de Ajuste',
|
||||
'billing-address' => 'Dirección de Facturación',
|
||||
'description' => 'Descripción',
|
||||
'discount-amount' => 'Cantidad de Descuento',
|
||||
'discount-percent' => 'Porcentaje de Descuento',
|
||||
'expired-at' => 'Expira el',
|
||||
'grand-total' => 'Total General',
|
||||
'person' => 'Persona',
|
||||
'sales-owner' => 'Propietario de Ventas',
|
||||
'shipping-address' => 'Dirección de Envío',
|
||||
'sub-total' => 'Subtotal',
|
||||
'subject' => 'Asunto',
|
||||
'tax-amount' => 'Cantidad de Impuestos',
|
||||
],
|
||||
|
||||
'warehouses' => [
|
||||
'contact-address' => 'Dirección de Contacto',
|
||||
'contact-emails' => 'Correos Electrónicos de Contacto',
|
||||
'contact-name' => 'Nombre de Contacto',
|
||||
'contact-numbers' => 'Números de Contacto',
|
||||
'description' => 'Descripción',
|
||||
'name' => 'Nombre',
|
||||
],
|
||||
],
|
||||
|
||||
'email' => [
|
||||
'activity-created' => 'Actividad Creada',
|
||||
'activity-modified' => 'Actividad Modificada',
|
||||
'date' => 'Fecha',
|
||||
'new-activity' => 'Tienes una nueva actividad, encuentra los detalles a continuación',
|
||||
'new-activity-modified' => 'Tienes una actividad modificada, encuentra los detalles a continuación',
|
||||
'participants' => 'Participantes',
|
||||
'title' => 'Título',
|
||||
'type' => 'Tipo',
|
||||
],
|
||||
|
||||
'lead' => [
|
||||
'pipeline' => [
|
||||
'default' => 'Pipeline Predeterminado',
|
||||
|
||||
'pipeline-stages' => [
|
||||
'follow-up' => 'Seguimiento',
|
||||
'lost' => 'Perdido',
|
||||
'negotiation' => 'Negociación',
|
||||
'new' => 'Nuevo',
|
||||
'prospect' => 'Prospecto',
|
||||
'won' => 'Ganado',
|
||||
],
|
||||
],
|
||||
|
||||
'source' => [
|
||||
'direct' => 'Directo',
|
||||
'email' => 'Correo Electrónico',
|
||||
'phone' => 'Teléfono',
|
||||
'web' => 'Web',
|
||||
'web-form' => 'Formulario Web',
|
||||
],
|
||||
|
||||
'type' => [
|
||||
'existing-business' => 'Negocio Existente',
|
||||
'new-business' => 'Nuevo Negocio',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'role' => [
|
||||
'administrator-role' => 'Rol de Administrador',
|
||||
'administrator' => 'Administrador',
|
||||
],
|
||||
],
|
||||
|
||||
'workflow' => [
|
||||
'email-to-participants-after-activity-updation' => 'Correos electrónicos a los participantes tras la actualización de actividades',
|
||||
'email-to-participants-after-activity-creation' => 'Correos electrónicos a los participantes tras la creación de actividades',
|
||||
],
|
||||
],
|
||||
|
||||
'installer' => [
|
||||
'index' => [
|
||||
'create-administrator' => [
|
||||
'admin' => 'Admin',
|
||||
'krayin' => 'Krayin',
|
||||
'confirm-password' => 'Confirmar Contraseña',
|
||||
'email' => 'Correo Electrónico',
|
||||
'email-address' => 'admin@example.com',
|
||||
'password' => 'Contraseña',
|
||||
'title' => 'Crear Administrador',
|
||||
],
|
||||
|
||||
'environment-configuration' => [
|
||||
'algerian-dinar' => 'Dinar Argelino (DZD)',
|
||||
'allowed-currencies' => 'Monedas Permitidas',
|
||||
'allowed-locales' => 'Idiomas Permitidos',
|
||||
'application-name' => 'Nombre de la Aplicación',
|
||||
'argentine-peso' => 'Peso Argentino (ARS)',
|
||||
'australian-dollar' => 'Dólar Australiano (AUD)',
|
||||
'krayin' => 'Krayin',
|
||||
'bangladeshi-taka' => 'Taka Bangladesí (BDT)',
|
||||
'brazilian-real' => 'Real Brasileño (BRL)',
|
||||
'british-pound-sterling' => 'Libra Esterlina (GBP)',
|
||||
'canadian-dollar' => 'Dólar Canadiense (CAD)',
|
||||
'cfa-franc-bceao' => 'Franco CFA BCEAO (XOF)',
|
||||
'cfa-franc-beac' => 'Franco CFA BEAC (XAF)',
|
||||
'chilean-peso' => 'Peso Chileno (CLP)',
|
||||
'chinese-yuan' => 'Yuan Chino (CNY)',
|
||||
'colombian-peso' => 'Peso Colombiano (COP)',
|
||||
'czech-koruna' => 'Corona Checa (CZK)',
|
||||
'danish-krone' => 'Corona Danesa (DKK)',
|
||||
'database-connection' => 'Conexión de Base de Datos',
|
||||
'database-hostname' => 'Nombre del Host de la Base de Datos',
|
||||
'database-name' => 'Nombre de la Base de Datos',
|
||||
'database-password' => 'Contraseña de la Base de Datos',
|
||||
'database-port' => 'Puerto de la Base de Datos',
|
||||
'database-prefix' => 'Prefijo de la Base de Datos',
|
||||
'database-username' => 'Usuario de la Base de Datos',
|
||||
'default-currency' => 'Moneda Predeterminada',
|
||||
'default-locale' => 'Idioma Predeterminado',
|
||||
'default-timezone' => 'Zona Horaria Predeterminada',
|
||||
'default-url' => 'URL Predeterminada',
|
||||
'default-url-link' => 'https://localhost',
|
||||
'egyptian-pound' => 'Libra Egipcia (EGP)',
|
||||
'euro' => 'Euro (EUR)',
|
||||
'fijian-dollar' => 'Dólar Fiyiano (FJD)',
|
||||
'hong-kong-dollar' => 'Dólar de Hong Kong (HKD)',
|
||||
'hungarian-forint' => 'Forinto Húngaro (HUF)',
|
||||
'indian-rupee' => 'Rupia India (INR)',
|
||||
'indonesian-rupiah' => 'Rupia Indonesia (IDR)',
|
||||
'israeli-new-shekel' => 'Nuevo Shekel Israelí (ILS)',
|
||||
'japanese-yen' => 'Yen Japonés (JPY)',
|
||||
'jordanian-dinar' => 'Dinar Jordano (JOD)',
|
||||
'kazakhstani-tenge' => 'Tenge Kazajo (KZT)',
|
||||
'kuwaiti-dinar' => 'Dinar Kuwaití (KWD)',
|
||||
'lebanese-pound' => 'Libra Libanesa (LBP)',
|
||||
'libyan-dinar' => 'Dinar Libio (LYD)',
|
||||
'malaysian-ringgit' => 'Ringgit Malayo (MYR)',
|
||||
'mauritian-rupee' => 'Rupia de Mauricio (MUR)',
|
||||
'mexican-peso' => 'Peso Mexicano (MXN)',
|
||||
'moroccan-dirham' => 'Dirham Marroquí (MAD)',
|
||||
'mysql' => 'Mysql',
|
||||
'nepalese-rupee' => 'Rupia Nepalesa (NPR)',
|
||||
'new-taiwan-dollar' => 'Nuevo Dólar Taiwanés (TWD)',
|
||||
'new-zealand-dollar' => 'Dólar Neozelandés (NZD)',
|
||||
'nigerian-naira' => 'Naira Nigeriana (NGN)',
|
||||
'norwegian-krone' => 'Corona Noruega (NOK)',
|
||||
'omani-rial' => 'Rial Omaní (OMR)',
|
||||
'pakistani-rupee' => 'Rupia Paquistaní (PKR)',
|
||||
'panamanian-balboa' => 'Balboa Panameño (PAB)',
|
||||
'paraguayan-guarani' => 'Guaraní Paraguayo (PYG)',
|
||||
'peruvian-nuevo-sol' => 'Nuevo Sol Peruano (PEN)',
|
||||
'pgsql' => 'pgSQL',
|
||||
'philippine-peso' => 'Peso Filipino (PHP)',
|
||||
'polish-zloty' => 'Zloty Polaco (PLN)',
|
||||
'qatari-rial' => 'Rial Catarí (QAR)',
|
||||
'romanian-leu' => 'Leu Rumano (RON)',
|
||||
'russian-ruble' => 'Rublo Ruso (RUB)',
|
||||
'saudi-riyal' => 'Riyal Saudí (SAR)',
|
||||
'select-timezone' => 'Seleccionar Zona Horaria',
|
||||
'singapore-dollar' => 'Dólar de Singapur (SGD)',
|
||||
'south-african-rand' => 'Rand Sudafricano (ZAR)',
|
||||
'south-korean-won' => 'Won Surcoreano (KRW)',
|
||||
'sqlsrv' => 'SQLSRV',
|
||||
'sri-lankan-rupee' => 'Rupia de Sri Lanka (LKR)',
|
||||
'swedish-krona' => 'Corona Sueca (SEK)',
|
||||
'swiss-franc' => 'Franco Suizo (CHF)',
|
||||
'thai-baht' => 'Baht Tailandés (THB)',
|
||||
'title' => 'Configuración de la Tienda',
|
||||
'tunisian-dinar' => 'Dinar Tunecino (TND)',
|
||||
'turkish-lira' => 'Lira Turca (TRY)',
|
||||
'ukrainian-hryvnia' => 'Grivna Ucraniana (UAH)',
|
||||
'united-arab-emirates-dirham' => 'Dírham de los Emiratos Árabes Unidos (AED)',
|
||||
'united-states-dollar' => 'Dólar Estadounidense (USD)',
|
||||
'uzbekistani-som' => 'Som Uzbeko (UZS)',
|
||||
'venezuelan-bolívar' => 'Bolívar Venezolano (VEF)',
|
||||
'vietnamese-dong' => 'Dong Vietnamita (VND)',
|
||||
'warning-message' => '¡Atención! Los ajustes de idioma y moneda predeterminados son permanentes y no se pueden cambiar una vez configurados.',
|
||||
'zambian-kwacha' => 'Kwacha de Zambia (ZMW)',
|
||||
],
|
||||
|
||||
'installation-processing' => [
|
||||
'krayin' => 'Instalación de Krayin',
|
||||
'krayin-info' => 'Creando las tablas de la base de datos, esto puede tardar unos momentos',
|
||||
'title' => 'Instalación',
|
||||
],
|
||||
|
||||
'installation-completed' => [
|
||||
'admin-panel' => 'Panel de Administración',
|
||||
'krayin-forums' => 'Foro de Krayin',
|
||||
'customer-panel' => 'Panel de Clientes',
|
||||
'explore-krayin-extensions' => 'Explorar Extensiones de Krayin',
|
||||
'title' => 'Instalación Completada',
|
||||
'title-info' => 'Krayin se ha instalado correctamente en su sistema.',
|
||||
],
|
||||
|
||||
'ready-for-installation' => [
|
||||
'create-databsae-table' => 'Crear tabla de base de datos',
|
||||
'install' => 'Instalación',
|
||||
'install-info' => 'Krayin Para la Instalación',
|
||||
'install-info-button' => 'Haga clic en el botón a continuación para',
|
||||
'populate-database-table' => 'Rellenar las tablas de la base de datos',
|
||||
'start-installation' => 'Iniciar Instalación',
|
||||
'title' => 'Listo para la Instalación',
|
||||
],
|
||||
|
||||
'start' => [
|
||||
'locale' => 'Idioma',
|
||||
'main' => 'Iniciar',
|
||||
'select-locale' => 'Seleccionar Idioma',
|
||||
'title' => 'Instalación de Krayin',
|
||||
'welcome-title' => 'Bienvenido a Krayin',
|
||||
],
|
||||
|
||||
'server-requirements' => [
|
||||
'calendar' => 'Calendario',
|
||||
'ctype' => 'cType',
|
||||
'curl' => 'cURL',
|
||||
'dom' => 'dom',
|
||||
'fileinfo' => 'fileInfo',
|
||||
'filter' => 'Filtro',
|
||||
'gd' => 'GD',
|
||||
'hash' => 'Hash',
|
||||
'intl' => 'intl',
|
||||
'json' => 'JSON',
|
||||
'mbstring' => 'mbstring',
|
||||
'openssl' => 'openssl',
|
||||
'pcre' => 'pcre',
|
||||
'pdo' => 'pdo',
|
||||
'php' => 'PHP',
|
||||
'php-version' => '8.1 o superior',
|
||||
'session' => 'sesión',
|
||||
'title' => 'Requisitos del Sistema',
|
||||
'tokenizer' => 'tokenizador',
|
||||
'xml' => 'XML',
|
||||
],
|
||||
|
||||
'back' => 'Atrás',
|
||||
'krayin' => 'Krayin',
|
||||
'krayin-info' => 'un Proyecto Comunitario de',
|
||||
'krayin-logo' => 'Logotipo de Krayin',
|
||||
'continue' => 'Continuar',
|
||||
'installation-description' => 'La instalación de Krayin generalmente implica varios pasos. Aquí hay un esquema general del proceso de instalación de Krayin.',
|
||||
'installation-info' => '¡Estamos encantados de verte aquí!',
|
||||
'installation-title' => 'Bienvenido a la Instalación',
|
||||
'asistente-de-instalación' => 'Idioma del Asistente de Instalación',
|
||||
'title' => 'Instalador de Krayin',
|
||||
'webkul' => 'Webkul',
|
||||
],
|
||||
],
|
||||
];
|
||||
289
packages/Webkul/Installer/src/Resources/lang/fa/app.php
Normal file
289
packages/Webkul/Installer/src/Resources/lang/fa/app.php
Normal file
@@ -0,0 +1,289 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'seeders' => [
|
||||
'attributes' => [
|
||||
'leads' => [
|
||||
'description' => 'توضیحات',
|
||||
'expected-close-date' => 'تاریخ بسته شدن مورد انتظار',
|
||||
'lead-value' => 'ارزش سرنخ',
|
||||
'sales-owner' => 'مالک فروش',
|
||||
'source' => 'منبع',
|
||||
'title' => 'عنوان',
|
||||
'type' => 'نوع',
|
||||
'pipeline' => 'پایپ لاین',
|
||||
'stage' => 'مرحله',
|
||||
],
|
||||
|
||||
'persons' => [
|
||||
'contact-numbers' => 'شمارههای تماس',
|
||||
'emails' => 'ایمیلها',
|
||||
'job-title' => 'عنوان شغلی',
|
||||
'name' => 'نام',
|
||||
'organization' => 'سازمان',
|
||||
'sales-owner' => 'مالک فروش',
|
||||
],
|
||||
|
||||
'organizations' => [
|
||||
'address' => 'آدرس',
|
||||
'name' => 'نام',
|
||||
'sales-owner' => 'مالک فروش',
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'description' => 'توضیحات',
|
||||
'name' => 'نام',
|
||||
'price' => 'قیمت',
|
||||
'quantity' => 'کمیت',
|
||||
'sku' => 'SKU',
|
||||
],
|
||||
|
||||
'quotes' => [
|
||||
'adjustment-amount' => 'مقدار تنظیم',
|
||||
'billing-address' => 'آدرس صورتحساب',
|
||||
'description' => 'توضیحات',
|
||||
'discount-amount' => 'مقدار تخفیف',
|
||||
'discount-percent' => 'درصد تخفیف',
|
||||
'expired-at' => 'منقضی شده در',
|
||||
'grand-total' => 'مجموع کل',
|
||||
'person' => 'شخص',
|
||||
'sales-owner' => 'مالک فروش',
|
||||
'shipping-address' => 'آدرس ارسال',
|
||||
'sub-total' => 'جمع جزئی',
|
||||
'subject' => 'موضوع',
|
||||
'tax-amount' => 'مقدار مالیات',
|
||||
],
|
||||
|
||||
'warehouses' => [
|
||||
'contact-address' => 'آدرس تماس',
|
||||
'contact-emails' => 'ایمیلهای تماس',
|
||||
'contact-name' => 'نام تماس',
|
||||
'contact-numbers' => 'شمارههای تماس',
|
||||
'description' => 'توضیحات',
|
||||
'name' => 'نام',
|
||||
],
|
||||
],
|
||||
|
||||
'email' => [
|
||||
'activity-created' => 'فعالیت ایجاد شد',
|
||||
'activity-modified' => 'فعالیت ویرایش شد',
|
||||
'date' => 'تاریخ',
|
||||
'new-activity' => 'شما یک فعالیت جدید دارید، لطفاً جزئیات را در زیر پیدا کنید',
|
||||
'new-activity-modified' => 'شما یک فعالیت جدید ویرایش شده دارید، لطفاً جزئیات را در زیر پیدا کنید',
|
||||
'participants' => 'شرکتکنندگان',
|
||||
'title' => 'عنوان',
|
||||
'type' => 'نوع',
|
||||
],
|
||||
|
||||
'lead' => [
|
||||
'pipeline' => [
|
||||
'default' => 'پایپ لاین پیشفرض',
|
||||
|
||||
'pipeline-stages' => [
|
||||
'follow-up' => 'پیگیری',
|
||||
'lost' => 'گمشده',
|
||||
'negotiation' => 'مذاکره',
|
||||
'new' => 'جدید',
|
||||
'prospect' => 'مشتری بالقوه',
|
||||
'won' => 'برد',
|
||||
],
|
||||
],
|
||||
|
||||
'source' => [
|
||||
'direct' => 'مستقیم',
|
||||
'email' => 'ایمیل',
|
||||
'phone' => 'تلفن',
|
||||
'web' => 'وب',
|
||||
'web-form' => 'فرم وب',
|
||||
],
|
||||
|
||||
'type' => [
|
||||
'existing-business' => 'کسب و کار موجود',
|
||||
'new-business' => 'کسب و کار جدید',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'role' => [
|
||||
'administrator-role' => 'نقش مدیر',
|
||||
'administrator' => 'مدیر',
|
||||
],
|
||||
],
|
||||
|
||||
'workflow' => [
|
||||
'email-to-participants-after-activity-updation' => 'ایمیلها به شرکتکنندگان پس از بهروزرسانی فعالیت',
|
||||
'email-to-participants-after-activity-creation' => 'ایمیلها به شرکتکنندگان پس از ایجاد فعالیت',
|
||||
],
|
||||
],
|
||||
|
||||
'installer' => [
|
||||
'index' => [
|
||||
'create-administrator' => [
|
||||
'admin' => 'مدیر',
|
||||
'krayin' => 'کرایین',
|
||||
'confirm-password' => 'تایید رمز عبور',
|
||||
'email' => 'ایمیل',
|
||||
'email-address' => 'admin@example.com',
|
||||
'password' => 'رمز عبور',
|
||||
'title' => 'ایجاد مدیر',
|
||||
],
|
||||
|
||||
'environment-configuration' => [
|
||||
'algerian-dinar' => 'دینار الجزایر (DZD)',
|
||||
'allowed-currencies' => 'ارزهای مجاز',
|
||||
'allowed-locales' => 'زبانهای مجاز',
|
||||
'application-name' => 'نام برنامه',
|
||||
'argentine-peso' => 'پزو آرژانتین (ARS)',
|
||||
'australian-dollar' => 'دلار استرالیا (AUD)',
|
||||
'krayin' => 'کرایین',
|
||||
'bangladeshi-taka' => 'تاکا بنگلادش (BDT)',
|
||||
'brazilian-real' => 'رئال برزیل (BRL)',
|
||||
'british-pound-sterling' => 'پوند استرلینگ بریتانیا (GBP)',
|
||||
'canadian-dollar' => 'دلار کانادا (CAD)',
|
||||
'cfa-franc-bceao' => 'فرانک CFA BCEAO (XOF)',
|
||||
'cfa-franc-beac' => 'فرانک CFA BEAC (XAF)',
|
||||
'chilean-peso' => 'پزو شیلی (CLP)',
|
||||
'chinese-yuan' => 'یوان چین (CNY)',
|
||||
'colombian-peso' => 'پزو کلمبیا (COP)',
|
||||
'czech-koruna' => 'کرونا چک (CZK)',
|
||||
'danish-krone' => 'کرون دانمارک (DKK)',
|
||||
'database-connection' => 'اتصال پایگاه داده',
|
||||
'database-hostname' => 'نام میزبان پایگاه داده',
|
||||
'database-name' => 'نام پایگاه داده',
|
||||
'database-password' => 'رمز عبور پایگاه داده',
|
||||
'database-port' => 'پورت پایگاه داده',
|
||||
'database-prefix' => 'پیشوند پایگاه داده',
|
||||
'database-username' => 'نام کاربری پایگاه داده',
|
||||
'default-currency' => 'ارز پیشفرض',
|
||||
'default-locale' => 'زبان پیشفرض',
|
||||
'default-timezone' => 'منطقه زمانی پیشفرض',
|
||||
'default-url' => 'آدرس URL پیشفرض',
|
||||
'default-url-link' => 'https://localhost',
|
||||
'egyptian-pound' => 'پوند مصر (EGP)',
|
||||
'euro' => 'یورو (EUR)',
|
||||
'fijian-dollar' => 'دلار فیجی (FJD)',
|
||||
'hong-kong-dollar' => 'دلار هنگ کنگ (HKD)',
|
||||
'hungarian-forint' => 'فورینت مجارستان (HUF)',
|
||||
'indian-rupee' => 'روپیه هند (INR)',
|
||||
'indonesian-rupiah' => 'روپیه اندونزی (IDR)',
|
||||
'israeli-new-shekel' => 'شکل جدید اسرائیل (ILS)',
|
||||
'japanese-yen' => 'ین ژاپن (JPY)',
|
||||
'jordanian-dinar' => 'دینار اردن (JOD)',
|
||||
'kazakhstani-tenge' => 'تنگه قزاقستان (KZT)',
|
||||
'kuwaiti-dinar' => 'دینار کویت (KWD)',
|
||||
'lebanese-pound' => 'پوند لبنان (LBP)',
|
||||
'libyan-dinar' => 'دینار لیبی (LYD)',
|
||||
'malaysian-ringgit' => 'رینگیت مالزی (MYR)',
|
||||
'mauritian-rupee' => 'روپیه موریس (MUR)',
|
||||
'mexican-peso' => 'پزو مکزیک (MXN)',
|
||||
'moroccan-dirham' => 'درهم مراکش (MAD)',
|
||||
'mysql' => 'Mysql',
|
||||
'nepalese-rupee' => 'روپیه نپال (NPR)',
|
||||
'new-taiwan-dollar' => 'دلار جدید تایوان (TWD)',
|
||||
'new-zealand-dollar' => 'دلار نیوزیلند (NZD)',
|
||||
'nigerian-naira' => 'نایرا نیجریه (NGN)',
|
||||
'norwegian-krone' => 'کرون نروژ (NOK)',
|
||||
'omani-rial' => 'ریال عمان (OMR)',
|
||||
'pakistani-rupee' => 'روپیه پاکستان (PKR)',
|
||||
'panamanian-balboa' => 'بالبوآ پاناما (PAB)',
|
||||
'paraguayan-guarani' => 'گوارانی پاراگوئه (PYG)',
|
||||
'peruvian-nuevo-sol' => 'سول جدید پرو (PEN)',
|
||||
'pgsql' => 'pgSQL',
|
||||
'philippine-peso' => 'پزو فیلیپین (PHP)',
|
||||
'polish-zloty' => 'زلوتی لهستان (PLN)',
|
||||
'qatari-rial' => 'ریال قطر (QAR)',
|
||||
'romanian-leu' => 'لئو رومانی (RON)',
|
||||
'russian-ruble' => 'روبل روسیه (RUB)',
|
||||
'saudi-riyal' => 'ریال عربستان (SAR)',
|
||||
'select-timezone' => 'منطقه زمانی را انتخاب کنید',
|
||||
'singapore-dollar' => 'دلار سنگاپور (SGD)',
|
||||
'south-african-rand' => 'راند آفریقای جنوبی (ZAR)',
|
||||
'south-korean-won' => 'وون کره جنوبی (KRW)',
|
||||
'sqlsrv' => 'SQLSRV',
|
||||
'sri-lankan-rupee' => 'روپیه سریلانکا (LKR)',
|
||||
'swedish-krona' => 'کرون سوئد (SEK)',
|
||||
'swiss-franc' => 'فرانک سوئیس (CHF)',
|
||||
'thai-baht' => 'بات تایلند (THB)',
|
||||
'title' => 'پیکربندی فروشگاه',
|
||||
'tunisian-dinar' => 'دینار تونس (TND)',
|
||||
'turkish-lira' => 'لیر ترکیه (TRY)',
|
||||
'ukrainian-hryvnia' => 'هریونیا اوکراین (UAH)',
|
||||
'united-arab-emirates-dirham' => 'درهم امارات متحده عربی (AED)',
|
||||
'united-states-dollar' => 'دلار ایالات متحده (USD)',
|
||||
'uzbekistani-som' => 'سوم ازبکستان (UZS)',
|
||||
'venezuelan-bolívar' => 'بولیوار ونزوئلا (VEF)',
|
||||
'vietnamese-dong' => 'دونگ ویتنام (VND)',
|
||||
'warning-message' => 'هشدار! تنظیمات زبان پیشفرض سیستم و ارز پیشفرض دائمی هستند و پس از تنظیم قابل تغییر نیستند.',
|
||||
'zambian-kwacha' => 'کواچای زامبیا (ZMW)',
|
||||
],
|
||||
|
||||
'installation-processing' => [
|
||||
'krayin' => 'نصب کرایین',
|
||||
'krayin-info' => 'در حال ایجاد جداول پایگاه داده، این ممکن است چند لحظه طول بکشد',
|
||||
'title' => 'نصب',
|
||||
],
|
||||
|
||||
'installation-completed' => [
|
||||
'admin-panel' => 'پنل مدیریت',
|
||||
'krayin-forums' => 'انجمن کرایین',
|
||||
'customer-panel' => 'پنل مشتری',
|
||||
'explore-krayin-extensions' => 'کاوش افزونههای کرایین',
|
||||
'title' => 'نصب کامل شد',
|
||||
'title-info' => 'کرایین با موفقیت بر روی سیستم شما نصب شد.',
|
||||
],
|
||||
|
||||
'ready-for-installation' => [
|
||||
'create-databsae-table' => 'ایجاد جدول پایگاه داده',
|
||||
'install' => 'نصب',
|
||||
'install-info' => 'کرایین برای نصب',
|
||||
'install-info-button' => 'برای شروع، دکمه زیر را کلیک کنید',
|
||||
'populate-database-table' => 'پر کردن جداول پایگاه داده',
|
||||
'start-installation' => 'شروع نصب',
|
||||
'title' => 'آماده برای نصب',
|
||||
],
|
||||
|
||||
'start' => [
|
||||
'locale' => 'زبان',
|
||||
'main' => 'شروع',
|
||||
'select-locale' => 'انتخاب زبان',
|
||||
'title' => 'نصب کرایین شما',
|
||||
'welcome-title' => 'به کرایین خوش آمدید',
|
||||
],
|
||||
|
||||
'server-requirements' => [
|
||||
'calendar' => 'تقویم',
|
||||
'ctype' => 'cType',
|
||||
'curl' => 'cURL',
|
||||
'dom' => 'dom',
|
||||
'fileinfo' => 'fileInfo',
|
||||
'filter' => 'فیلتر',
|
||||
'gd' => 'GD',
|
||||
'hash' => 'Hash',
|
||||
'intl' => 'intl',
|
||||
'json' => 'JSON',
|
||||
'mbstring' => 'mbstring',
|
||||
'openssl' => 'openssl',
|
||||
'pcre' => 'pcre',
|
||||
'pdo' => 'pdo',
|
||||
'php' => 'PHP',
|
||||
'php-version' => '8.1 یا بالاتر',
|
||||
'session' => 'session',
|
||||
'title' => 'نیازمندیهای سیستم',
|
||||
'tokenizer' => 'tokenizer',
|
||||
'xml' => 'XML',
|
||||
],
|
||||
|
||||
'back' => 'بازگشت',
|
||||
'krayin' => 'کرایین',
|
||||
'krayin-info' => 'یک پروژه اجتماعی توسط',
|
||||
'krayin-logo' => 'لوگوی کرایین',
|
||||
'continue' => 'ادامه',
|
||||
'installation-description' => 'نصب کرایین معمولاً شامل چندین مرحله است. در اینجا یک طرح کلی از فرآیند نصب کرایین آمده است',
|
||||
'installation-info' => 'خوشحالیم که شما را اینجا میبینیم!',
|
||||
'installation-title' => 'به نصب خوش آمدید',
|
||||
'installation-wizard' => 'زبان جادوگر نصب',
|
||||
'title' => 'نصبکننده کرایین',
|
||||
'webkul' => 'وبکول',
|
||||
],
|
||||
],
|
||||
];
|
||||
218
packages/Webkul/Installer/src/Resources/lang/pt_BR/app.php
Normal file
218
packages/Webkul/Installer/src/Resources/lang/pt_BR/app.php
Normal file
@@ -0,0 +1,218 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'seeders' => [
|
||||
'attributes' => [
|
||||
'leads' => [
|
||||
'description' => 'Descrição',
|
||||
'expected-close-date' => 'Data de Fechamento Esperada',
|
||||
'lead-value' => 'Valor da Oportunidade',
|
||||
'sales-owner' => 'Responsável pela Venda',
|
||||
'source' => 'Origem',
|
||||
'title' => 'Título',
|
||||
'type' => 'Tipo',
|
||||
'pipeline' => 'Funil',
|
||||
'stage' => 'Estágio',
|
||||
],
|
||||
|
||||
'persons' => [
|
||||
'contact-numbers' => 'Números de Contato',
|
||||
'emails' => 'E-mails',
|
||||
'job-title' => 'Cargo',
|
||||
'name' => 'Nome',
|
||||
'organization' => 'Empresa',
|
||||
'sales-owner' => 'Responsável pela Venda',
|
||||
],
|
||||
|
||||
'organizations' => [
|
||||
'address' => 'Endereço',
|
||||
'name' => 'Nome',
|
||||
'sales-owner' => 'Responsável pela Venda',
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'description' => 'Descrição',
|
||||
'name' => 'Nome',
|
||||
'price' => 'Preço',
|
||||
'quantity' => 'Quantidade',
|
||||
'sku' => 'Código',
|
||||
],
|
||||
|
||||
'quotes' => [
|
||||
'adjustment-amount' => 'Valor de Ajuste',
|
||||
'billing-address' => 'Endereço de Cobrança',
|
||||
'description' => 'Descrição',
|
||||
'discount-amount' => 'Valor do Desconto',
|
||||
'discount-percent' => 'Percentual de Desconto',
|
||||
'expired-at' => 'Expira em',
|
||||
'grand-total' => 'Total Geral',
|
||||
'person' => 'Pessoa',
|
||||
'sales-owner' => 'Responsável pela Venda',
|
||||
'shipping-address' => 'Endereço de Entrega',
|
||||
'sub-total' => 'Subtotal',
|
||||
'subject' => 'Assunto',
|
||||
'tax-amount' => 'Valor do Imposto',
|
||||
],
|
||||
|
||||
'warehouses' => [
|
||||
'contact-address' => 'Endereço de Contato',
|
||||
'contact-emails' => 'Emails de Contato',
|
||||
'contact-name' => 'Nome do Contato',
|
||||
'contact-numbers' => 'Números de Contato',
|
||||
'description' => 'Descrição',
|
||||
'name' => 'Nome',
|
||||
],
|
||||
],
|
||||
|
||||
'email' => [
|
||||
'activity-created' => 'Atividade Adicionada',
|
||||
'activity-modified' => 'Atividade modificada',
|
||||
'date' => 'Data',
|
||||
'new-activity' => 'Você tem uma nova atividade, veja os detalhes abaixo',
|
||||
'new-activity-modified' => 'Uma nova atividade foi modificada, veja os detalhes abaixo',
|
||||
'participants' => 'Participantes',
|
||||
'title' => 'Título',
|
||||
'type' => 'Tipo',
|
||||
],
|
||||
|
||||
'lead' => [
|
||||
'pipeline' => [
|
||||
'default' => 'Funil Padrão',
|
||||
|
||||
'pipeline-stages' => [
|
||||
'follow-up' => 'Acompanhamento',
|
||||
'lost' => 'Perdido',
|
||||
'negotiation' => 'Negociação',
|
||||
'new' => 'Novo',
|
||||
'prospect' => 'Qualificado',
|
||||
'won' => 'Ganho',
|
||||
],
|
||||
],
|
||||
|
||||
'source' => [
|
||||
'direct' => 'Direto',
|
||||
'email' => 'E-mail',
|
||||
'phone' => 'Telefone',
|
||||
'web' => 'Web',
|
||||
'web-form' => 'Formulário Web',
|
||||
],
|
||||
|
||||
'type' => [
|
||||
'existing-business' => 'Negócio Existente',
|
||||
'new-business' => 'Novo Negócio',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'role' => [
|
||||
'administrator-role' => 'Função de Administrador',
|
||||
'administrator' => 'Administrador',
|
||||
],
|
||||
],
|
||||
|
||||
'workflow' => [
|
||||
'email-to-participants-after-activity-updation' => 'E-mails para participantes após atualização de atividade',
|
||||
'email-to-participants-after-activity-creation' => 'E-mails para participantes após adicionar atividade',
|
||||
],
|
||||
],
|
||||
|
||||
'installer' => [
|
||||
'index' => [
|
||||
'create-administrator' => [
|
||||
'admin' => 'Administrador',
|
||||
'krayin' => 'Krayin',
|
||||
'confirm-password' => 'Confirmar Senha',
|
||||
'email' => 'E-mail',
|
||||
'email-address' => 'admin@example.com',
|
||||
'password' => 'Senha',
|
||||
'title' => 'Adicionar Administrador',
|
||||
],
|
||||
|
||||
'environment-configuration' => [
|
||||
'algerian-dinar' => 'Dinar Argelino (DZD)',
|
||||
'allowed-currencies' => 'Moedas Permitidas',
|
||||
'allowed-locales' => 'Idiomas Permitidos',
|
||||
'application-name' => 'Nome do Aplicativo',
|
||||
'argentine-peso' => 'Peso Argentino (ARS)',
|
||||
'australian-dollar' => 'Dólar Australiano (AUD)',
|
||||
'krayin' => 'Krayin',
|
||||
'bangladeshi-taka' => 'Taka de Bangladesh (BDT)',
|
||||
'brazilian-real' => 'Real Brasileiro (BRL)',
|
||||
'british-pound-sterling' => 'Libra Esterlina (GBP)',
|
||||
'canadian-dollar' => 'Dólar Canadense (CAD)',
|
||||
'cfa-franc-bceao' => 'Franco CFA BCEAO (XOF)',
|
||||
'cfa-franc-beac' => 'Franco CFA BEAC (XAF)',
|
||||
'chilean-peso' => 'Peso Chileno (CLP)',
|
||||
'chinese-yuan' => 'Yuan Chinês (CNY)',
|
||||
'colombian-peso' => 'Peso Colombiano (COP)',
|
||||
'czech-koruna' => 'Coroa Checa (CZK)',
|
||||
'danish-krone' => 'Coroa Dinamarquesa (DKK)',
|
||||
'database-connection' => 'Conexão com Banco de Dados',
|
||||
'database-hostname' => 'Nome do Host do Banco de Dados',
|
||||
'database-name' => 'Nome do Banco de Dados',
|
||||
'database-password' => 'Senha do Banco de Dados',
|
||||
'database-port' => 'Porta do Banco de Dados',
|
||||
'database-prefix' => 'Prefixo do Banco de Dados',
|
||||
'database-username' => 'Usuário do Banco de Dados',
|
||||
'default-currency' => 'Moeda Padrão',
|
||||
'default-locale' => 'Idioma Padrão',
|
||||
'default-timezone' => 'Fuso Horário Padrão',
|
||||
'default-url' => 'URL Padrão',
|
||||
'default-url-link' => 'https://localhost',
|
||||
'euro' => 'Euro (EUR)',
|
||||
'mysql' => 'MySQL',
|
||||
'pgsql' => 'pgSQL',
|
||||
'select-timezone' => 'Selecionar Fuso Horário',
|
||||
'warning-message' => 'Atenção! As configurações de idioma e moeda padrão não podem ser alteradas após definidas.',
|
||||
'united-states-dollar' => 'Dólar Americano (USD)',
|
||||
],
|
||||
|
||||
'installation-processing' => [
|
||||
'krayin' => 'Instalação do Krayin',
|
||||
'krayin-info' => 'Criando as tabelas do banco de dados, isso pode levar alguns momentos',
|
||||
'title' => 'Instalação',
|
||||
],
|
||||
|
||||
'installation-completed' => [
|
||||
'admin-panel' => 'Painel de Administração',
|
||||
'krayin-forums' => 'Fórum Krayin',
|
||||
'customer-panel' => 'Painel do Cliente',
|
||||
'explore-krayin-extensions' => 'Explorar Extensões Krayin',
|
||||
'title' => 'Instalação Concluída',
|
||||
'title-info' => 'Krayin foi instalado com sucesso no seu sistema.',
|
||||
],
|
||||
|
||||
'ready-for-installation' => [
|
||||
'create-databsae-table' => 'Adicionar tabela do banco de dados',
|
||||
'install' => 'Instalação',
|
||||
'start-installation' => 'Iniciar Instalação',
|
||||
'title' => 'Pronto para Instalação',
|
||||
],
|
||||
|
||||
'start' => [
|
||||
'locale' => 'Idioma',
|
||||
'main' => 'Início',
|
||||
'select-locale' => 'Selecionar Idioma',
|
||||
'title' => 'Instalação do Krayin',
|
||||
'welcome-title' => 'Bem-vindo ao Krayin',
|
||||
],
|
||||
|
||||
'server-requirements' => [
|
||||
'php-version' => '8.1 ou superior',
|
||||
'title' => 'Requisitos do Sistema',
|
||||
],
|
||||
|
||||
'back' => 'Voltar',
|
||||
'krayin' => 'Krayin',
|
||||
'krayin-info' => 'um projeto comunitário de',
|
||||
'krayin-logo' => 'Logotipo Krayin',
|
||||
'continue' => 'Continuar',
|
||||
'installation-description' => 'A instalação do Krayin geralmente envolve várias etapas. Aqui está uma visão geral do processo de instalação do Krayin',
|
||||
'installation-info' => 'Estamos felizes em ver você aqui!',
|
||||
'installation-title' => 'Bem-vindo à Instalação',
|
||||
'installation-wizard' => 'Assistente de Instalação - Idioma',
|
||||
'title' => 'Instalador do Krayin',
|
||||
'webkul' => 'Webkul',
|
||||
],
|
||||
],
|
||||
];
|
||||
289
packages/Webkul/Installer/src/Resources/lang/tr/app.php
Normal file
289
packages/Webkul/Installer/src/Resources/lang/tr/app.php
Normal file
@@ -0,0 +1,289 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'seeders' => [
|
||||
'attributes' => [
|
||||
'leads' => [
|
||||
'description' => 'Açıklama',
|
||||
'expected-close-date' => 'Beklenen Kapanış Tarihi',
|
||||
'lead-value' => 'Potansiyel Değeri',
|
||||
'sales-owner' => 'Satış Sahibi',
|
||||
'source' => 'Kaynak',
|
||||
'title' => 'Başlık',
|
||||
'type' => 'Tür',
|
||||
'pipeline' => 'Pipeline',
|
||||
'stage' => 'Aşama',
|
||||
],
|
||||
|
||||
'persons' => [
|
||||
'contact-numbers' => 'İletişim Numaraları',
|
||||
'emails' => 'E-postalar',
|
||||
'job-title' => 'Görev Unvanı',
|
||||
'name' => 'Ad',
|
||||
'organization' => 'Organizasyon',
|
||||
'sales-owner' => 'Satış Sahibi',
|
||||
],
|
||||
|
||||
'organizations' => [
|
||||
'address' => 'Adres',
|
||||
'name' => 'Ad',
|
||||
'sales-owner' => 'Satış Sahibi',
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'description' => 'Açıklama',
|
||||
'name' => 'Ad',
|
||||
'price' => 'Fiyat',
|
||||
'quantity' => 'Miktar',
|
||||
'sku' => 'SKU',
|
||||
],
|
||||
|
||||
'quotes' => [
|
||||
'adjustment-amount' => 'Düzenleme Tutarı',
|
||||
'billing-address' => 'Fatura Adresi',
|
||||
'description' => 'Açıklama',
|
||||
'discount-amount' => 'İndirim Tutarı',
|
||||
'discount-percent' => 'İndirim Yüzdesi',
|
||||
'expired-at' => 'Süresi Doldu',
|
||||
'grand-total' => 'Genel Toplam',
|
||||
'person' => 'Kişi',
|
||||
'sales-owner' => 'Satış Sahibi',
|
||||
'shipping-address' => 'Teslimat Adresi',
|
||||
'sub-total' => 'Ara Toplam',
|
||||
'subject' => 'Konu',
|
||||
'tax-amount' => 'Vergi Tutarı',
|
||||
],
|
||||
|
||||
'warehouses' => [
|
||||
'contact-address' => 'İletişim Adresi',
|
||||
'contact-emails' => 'İletişim E-postaları',
|
||||
'contact-name' => 'İletişim Adı',
|
||||
'contact-numbers' => 'İletişim Numaraları',
|
||||
'description' => 'Açıklama',
|
||||
'name' => 'Ad',
|
||||
],
|
||||
],
|
||||
|
||||
'email' => [
|
||||
'activity-created' => 'Etkinlik oluşturuldu',
|
||||
'activity-modified' => 'Etkinlik değiştirildi',
|
||||
'date' => 'Tarih',
|
||||
'new-activity' => 'Yeni bir etkinliğiniz var, lütfen aşağıdaki detayları bulun',
|
||||
'new-activity-modified' => 'Yeni bir etkinlik değiştirildi, lütfen aşağıdaki detayları bulun',
|
||||
'participants' => 'Katılımcılar',
|
||||
'title' => 'Başlık',
|
||||
'type' => 'Tür',
|
||||
],
|
||||
|
||||
'lead' => [
|
||||
'pipeline' => [
|
||||
'default' => 'Varsayılan Pipeline',
|
||||
|
||||
'pipeline-stages' => [
|
||||
'follow-up' => 'Takip',
|
||||
'lost' => 'Kaybedildi',
|
||||
'negotiation' => 'Müzakere',
|
||||
'new' => 'Yeni',
|
||||
'prospect' => 'Potansiyel',
|
||||
'won' => 'Kazanıldı',
|
||||
],
|
||||
],
|
||||
|
||||
'source' => [
|
||||
'direct' => 'Doğrudan',
|
||||
'email' => 'E-posta',
|
||||
'phone' => 'Telefon',
|
||||
'web' => 'Web',
|
||||
'web-form' => 'Web Formu',
|
||||
],
|
||||
|
||||
'type' => [
|
||||
'existing-business' => 'Mevcut İş',
|
||||
'new-business' => 'Yeni İş',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'role' => [
|
||||
'administrator-role' => 'Yönetici Rolü',
|
||||
'administrator' => 'Yönetici',
|
||||
],
|
||||
],
|
||||
|
||||
'workflow' => [
|
||||
'email-to-participants-after-activity-updation' => 'Etkinlik güncellemesinden sonra katılımcılara e-postalar',
|
||||
'email-to-participants-after-activity-creation' => 'Etkinlik oluşturulduktan sonra katılımcılara e-postalar',
|
||||
],
|
||||
],
|
||||
|
||||
'installer' => [
|
||||
'index' => [
|
||||
'create-administrator' => [
|
||||
'admin' => 'Yönetici',
|
||||
'krayin' => 'Krayin',
|
||||
'confirm-password' => 'Şifreyi Onayla',
|
||||
'email' => 'E-posta',
|
||||
'email-address' => 'admin@ornek.com',
|
||||
'password' => 'Şifre',
|
||||
'title' => 'Yönetici Oluştur',
|
||||
],
|
||||
|
||||
'environment-configuration' => [
|
||||
'algerian-dinar' => 'Cezayir Dinarı (DZD)',
|
||||
'allowed-currencies' => 'İzin Verilen Para Birimleri',
|
||||
'allowed-locales' => 'İzin Verilen Lokaller',
|
||||
'application-name' => 'Uygulama Adı',
|
||||
'argentine-peso' => 'Arjantin Pezosu (ARS)',
|
||||
'australian-dollar' => 'Avustralya Doları (AUD)',
|
||||
'krayin' => 'Krayin',
|
||||
'bangladeshi-taka' => 'Bangladeş Takası (BDT)',
|
||||
'brazilian-real' => 'Brezilya Reali (BRL)',
|
||||
'british-pound-sterling' => 'İngiliz Sterlini (GBP)',
|
||||
'canadian-dollar' => 'Kanada Doları (CAD)',
|
||||
'cfa-franc-bceao' => 'CFA Frank BCEAO (XOF)',
|
||||
'cfa-franc-beac' => 'CFA Frank BEAC (XAF)',
|
||||
'chilean-peso' => 'Şili Pesosu (CLP)',
|
||||
'chinese-yuan' => 'Çin Yuanı (CNY)',
|
||||
'colombian-peso' => 'Kolombiya Pesosu (COP)',
|
||||
'czech-koruna' => 'Çek Korunası (CZK)',
|
||||
'danish-krone' => 'Danimarka Kronu (DKK)',
|
||||
'database-connection' => 'Veritabanı Bağlantısı',
|
||||
'database-hostname' => 'Veritabanı Sunucu Adı',
|
||||
'database-name' => 'Veritabanı Adı',
|
||||
'database-password' => 'Veritabanı Parolası',
|
||||
'database-port' => 'Veritabanı Bağlantı Noktası',
|
||||
'database-prefix' => 'Veritabanı Öneki',
|
||||
'database-username' => 'Veritabanı Kullanıcı Adı',
|
||||
'default-currency' => 'Varsayılan Para Birimi',
|
||||
'default-locale' => 'Varsayılan Lokal',
|
||||
'default-timezone' => 'Varsayılan Zaman Dilimi',
|
||||
'default-url' => 'Varsayılan URL',
|
||||
'default-url-link' => 'https://localhost',
|
||||
'egyptian-pound' => 'Mısır Lirası (EGP)',
|
||||
'euro' => 'Euro (EUR)',
|
||||
'fijian-dollar' => 'Fiji Doları (FJD)',
|
||||
'hong-kong-dollar' => 'Hong Kong Doları (HKD)',
|
||||
'hungarian-forint' => 'Macar Forinti (HUF)',
|
||||
'indian-rupee' => 'Hint Rupisi (INR)',
|
||||
'indonesian-rupiah' => 'Endonezya Rupisi (IDR)',
|
||||
'israeli-new-shekel' => 'İsrail Yeni Şekeli (ILS)',
|
||||
'japanese-yen' => 'Japon Yeni (JPY)',
|
||||
'jordanian-dinar' => 'Ürdün Dinarı (JOD)',
|
||||
'kazakhstani-tenge' => 'Kazakistan Tengesi (KZT)',
|
||||
'kuwaiti-dinar' => 'Kuveyt Dinarı (KWD)',
|
||||
'lebanese-pound' => 'Lübnan Lirası (LBP)',
|
||||
'libyan-dinar' => 'Libya Dinarı (LYD)',
|
||||
'malaysian-ringgit' => 'Malezya Ringiti (MYR)',
|
||||
'mauritian-rupee' => 'Mauritius Rupisi (MUR)',
|
||||
'mexican-peso' => 'Meksika Pesosu (MXN)',
|
||||
'moroccan-dirham' => 'Fas Dirhemi (MAD)',
|
||||
'mysql' => 'MySQL',
|
||||
'nepalese-rupee' => 'Nepal Rupisi (NPR)',
|
||||
'new-taiwan-dollar' => 'Yeni Tayvan Doları (TWD)',
|
||||
'new-zealand-dollar' => 'Yeni Zelanda Doları (NZD)',
|
||||
'nigerian-naira' => 'Nijerya Nairası (NGN)',
|
||||
'norwegian-krone' => 'Norveç Kronu (NOK)',
|
||||
'omani-rial' => 'Umman Riyali (OMR)',
|
||||
'pakistani-rupee' => 'Pakistan Rupisi (PKR)',
|
||||
'panamanian-balboa' => 'Panama Balboası (PAB)',
|
||||
'paraguayan-guarani' => 'Paraguay Guaranisi (PYG)',
|
||||
'peruvian-nuevo-sol' => 'Peru Nuevo Solu (PEN)',
|
||||
'pgsql' => 'PgSQL',
|
||||
'philippine-peso' => 'Filipinler Pesosu (PHP)',
|
||||
'polish-zloty' => 'Polonya Zlotisi (PLN)',
|
||||
'qatari-rial' => 'Katar Riyali (QAR)',
|
||||
'romanian-leu' => 'Romanya Leyi (RON)',
|
||||
'russian-ruble' => 'Rus Rublesi (RUB)',
|
||||
'saudi-riyal' => 'Suudi Riyali (SAR)',
|
||||
'select-timezone' => 'Zaman Dilimi Seç',
|
||||
'singapore-dollar' => 'Singapur Doları (SGD)',
|
||||
'south-african-rand' => 'Güney Afrika Randı (ZAR)',
|
||||
'south-korean-won' => 'Güney Kore Wonu (KRW)',
|
||||
'sqlsrv' => 'SQLSRV',
|
||||
'sri-lankan-rupee' => 'Sri Lanka Rupisi (LKR)',
|
||||
'swedish-krona' => 'İsveç Kronu (SEK)',
|
||||
'swiss-franc' => 'İsviçre Frangı (CHF)',
|
||||
'thai-baht' => 'Tayland Bahtı (THB)',
|
||||
'title' => 'Mağaza Yapılandırması',
|
||||
'tunisian-dinar' => 'Tunus Dinarı (TND)',
|
||||
'turkish-lira' => 'Türk Lirası (TRY)',
|
||||
'ukrainian-hryvnia' => 'Ukrayna Grivnası (UAH)',
|
||||
'united-arab-emirates-dirham' => 'Birleşik Arap Emirlikleri Dirhemi (AED)',
|
||||
'united-states-dollar' => 'Amerikan Doları (USD)',
|
||||
'uzbekistani-som' => 'Özbekistan Somu (UZS)',
|
||||
'venezuelan-bolívar' => 'Venezuela Bolivarı (VEF)',
|
||||
'vietnamese-dong' => 'Vietnam Dongu (VND)',
|
||||
'warning-message' => 'Dikkat! Varsayılan sistem dili ve varsayılan para birimi ayarları kalıcıdır ve bir kez ayarlandığında değiştirilemez.',
|
||||
'zambian-kwacha' => 'Zambiya Kvaçası (ZMW)',
|
||||
],
|
||||
|
||||
'installation-processing' => [
|
||||
'krayin' => 'Krayin Kurulumu',
|
||||
'krayin-info' => 'Veritabanı tabloları oluşturuluyor, bu birkaç dakika sürebilir',
|
||||
'title' => 'Kurulum',
|
||||
],
|
||||
|
||||
'installation-completed' => [
|
||||
'admin-panel' => 'Yönetici Paneli',
|
||||
'krayin-forums' => 'Krayin Forumu',
|
||||
'customer-panel' => 'Müşteri Paneli',
|
||||
'explore-krayin-extensions' => 'Krayin Uzantılarını Keşfedin',
|
||||
'title' => 'Kurulum Tamamlandı',
|
||||
'title-info' => 'Krayin sisteminize başarıyla kuruldu.',
|
||||
],
|
||||
|
||||
'ready-for-installation' => [
|
||||
'create-databsae-table' => 'Veritabanı tablosu oluştur',
|
||||
'install' => 'Yükleme',
|
||||
'install-info' => 'Kurulum için Krayin',
|
||||
'install-info-button' => 'Aşağıdaki düğmeye tıklayın',
|
||||
'populate-database-table' => 'Veritabanı tablolarını doldur',
|
||||
'start-installation' => 'Kurulumu Başlat',
|
||||
'title' => 'Kurulum için Hazır',
|
||||
],
|
||||
|
||||
'start' => [
|
||||
'locale' => 'Yerel',
|
||||
'main' => 'Başlangıç',
|
||||
'select-locale' => 'Yerel Seçin',
|
||||
'title' => 'Krayin kurulumunuz',
|
||||
'welcome-title' => 'Krayin\'ya hoş geldiniz',
|
||||
],
|
||||
|
||||
'server-requirements' => [
|
||||
'calendar' => 'Takvim',
|
||||
'ctype' => 'cType',
|
||||
'curl' => 'cURL',
|
||||
'dom' => 'dom',
|
||||
'fileinfo' => 'Dosya Bilgisi',
|
||||
'filter' => 'Filtre',
|
||||
'gd' => 'GD',
|
||||
'hash' => 'Hash',
|
||||
'intl' => 'intl',
|
||||
'json' => 'JSON',
|
||||
'mbstring' => 'mbstring',
|
||||
'openssl' => 'openssl',
|
||||
'pcre' => 'pcre',
|
||||
'pdo' => 'pdo',
|
||||
'php' => 'PHP',
|
||||
'php-version' => '8.1 veya üstü',
|
||||
'session' => 'oturum',
|
||||
'title' => 'Sunucu Gereksinimleri',
|
||||
'tokenizer' => 'tokenizer',
|
||||
'xml' => 'XML',
|
||||
],
|
||||
|
||||
'back' => 'Geri',
|
||||
'krayin' => 'Krayin',
|
||||
'krayin-info' => 'Webkul tarafından geliştirilen bir Topluluk Projesi',
|
||||
'krayin-logo' => 'Krayin Logosu',
|
||||
'continue' => 'Devam Et',
|
||||
'installation-description' => 'Krayin kurulumu genellikle birkaç adım içerir. İşte Krayin\'nun kurulum sürecine genel bir bakış',
|
||||
'installation-info' => 'Sizi burada görmekten mutluluk duyuyoruz!',
|
||||
'installation-title' => 'Kurulum\'a Hoş Geldiniz',
|
||||
'installation-wizard' => 'Kurulum Sihirbazı dili',
|
||||
'title' => 'Krayin Kurulum Sihirbazı',
|
||||
'webkul' => 'Webkul',
|
||||
],
|
||||
],
|
||||
];
|
||||
289
packages/Webkul/Installer/src/Resources/lang/vi/app.php
Normal file
289
packages/Webkul/Installer/src/Resources/lang/vi/app.php
Normal file
@@ -0,0 +1,289 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'seeders' => [
|
||||
'attributes' => [
|
||||
'leads' => [
|
||||
'description' => 'Mô tả',
|
||||
'expected-close-date' => 'Ngày dự kiến đóng',
|
||||
'lead-value' => 'Giá trị cơ hội',
|
||||
'sales-owner' => 'Chủ sở hữu bán hàng',
|
||||
'source' => 'Nguồn',
|
||||
'title' => 'Tiêu đề',
|
||||
'type' => 'Loại',
|
||||
'pipeline' => 'Kênh bán hàng',
|
||||
'stage' => 'Giai đoạn',
|
||||
],
|
||||
|
||||
'persons' => [
|
||||
'contact-numbers' => 'Số điện thoại liên hệ',
|
||||
'emails' => 'Email',
|
||||
'job-title' => 'Chức vụ',
|
||||
'name' => 'Tên',
|
||||
'organization' => 'Tổ chức',
|
||||
'sales-owner' => 'Chủ sở hữu bán hàng',
|
||||
],
|
||||
|
||||
'organizations' => [
|
||||
'address' => 'Địa chỉ',
|
||||
'name' => 'Tên',
|
||||
'sales-owner' => 'Chủ sở hữu bán hàng',
|
||||
],
|
||||
|
||||
'products' => [
|
||||
'description' => 'Mô tả',
|
||||
'name' => 'Tên',
|
||||
'price' => 'Giá',
|
||||
'quantity' => 'Số lượng',
|
||||
'sku' => 'SKU',
|
||||
],
|
||||
|
||||
'quotes' => [
|
||||
'adjustment-amount' => 'Số tiền điều chỉnh',
|
||||
'billing-address' => 'Địa chỉ thanh toán',
|
||||
'description' => 'Mô tả',
|
||||
'discount-amount' => 'Số tiền giảm giá',
|
||||
'discount-percent' => 'Phần trăm giảm giá',
|
||||
'expired-at' => 'Hết hạn vào',
|
||||
'grand-total' => 'Tổng cộng',
|
||||
'person' => 'Người',
|
||||
'sales-owner' => 'Chủ sở hữu bán hàng',
|
||||
'shipping-address' => 'Địa chỉ giao hàng',
|
||||
'sub-total' => 'Tổng phụ',
|
||||
'subject' => 'Chủ đề',
|
||||
'tax-amount' => 'Số tiền thuế',
|
||||
],
|
||||
|
||||
'warehouses' => [
|
||||
'contact-address' => 'Địa chỉ liên hệ',
|
||||
'contact-emails' => 'Email liên hệ',
|
||||
'contact-name' => 'Tên người liên hệ',
|
||||
'contact-numbers' => 'Số điện thoại liên hệ',
|
||||
'description' => 'Mô tả',
|
||||
'name' => 'Tên',
|
||||
],
|
||||
],
|
||||
|
||||
'email' => [
|
||||
'activity-created' => 'Hoạt động đã được tạo',
|
||||
'activity-modified' => 'Hoạt động đã được chỉnh sửa',
|
||||
'date' => 'Ngày',
|
||||
'new-activity' => 'Bạn có một hoạt động mới, vui lòng xem chi tiết bên dưới',
|
||||
'new-activity-modified' => 'Bạn có một hoạt động mới đã được chỉnh sửa, vui lòng xem chi tiết bên dưới',
|
||||
'participants' => 'Người tham gia',
|
||||
'title' => 'Tiêu đề',
|
||||
'type' => 'Loại',
|
||||
],
|
||||
|
||||
'lead' => [
|
||||
'pipeline' => [
|
||||
'default' => 'Kênh bán hàng mặc định',
|
||||
|
||||
'pipeline-stages' => [
|
||||
'follow-up' => 'Theo dõi',
|
||||
'lost' => 'Mất',
|
||||
'negotiation' => 'Đàm phán',
|
||||
'new' => 'Mới',
|
||||
'prospect' => 'Triển vọng',
|
||||
'won' => 'Thắng',
|
||||
],
|
||||
],
|
||||
|
||||
'source' => [
|
||||
'direct' => 'Trực tiếp',
|
||||
'email' => 'Email',
|
||||
'phone' => 'Điện thoại',
|
||||
'web' => 'Web',
|
||||
'web-form' => 'Mẫu web',
|
||||
],
|
||||
|
||||
'type' => [
|
||||
'existing-business' => 'Kinh doanh hiện tại',
|
||||
'new-business' => 'Kinh doanh mới',
|
||||
],
|
||||
],
|
||||
|
||||
'user' => [
|
||||
'role' => [
|
||||
'administrator-role' => 'Vai trò quản trị viên',
|
||||
'administrator' => 'Quản trị viên',
|
||||
],
|
||||
],
|
||||
|
||||
'workflow' => [
|
||||
'email-to-participants-after-activity-updation' => 'Email đến người tham gia sau khi cập nhật hoạt động',
|
||||
'email-to-participants-after-activity-creation' => 'Email đến người tham gia sau khi tạo hoạt động',
|
||||
],
|
||||
],
|
||||
|
||||
'installer' => [
|
||||
'index' => [
|
||||
'create-administrator' => [
|
||||
'admin' => 'Administrador',
|
||||
'krayin' => 'Krayin',
|
||||
'confirm-password' => 'Confirmar Senha',
|
||||
'email' => 'Email',
|
||||
'email-address' => 'admin@exemplo.com',
|
||||
'password' => 'Senha',
|
||||
'title' => 'Criar Administrador',
|
||||
],
|
||||
|
||||
'environment-configuration' => [
|
||||
'algerian-dinar' => 'Dinar Argelino (DZD)',
|
||||
'allowed-currencies' => 'Moedas Permitidas',
|
||||
'allowed-locales' => 'Idiomas Permitidos',
|
||||
'application-name' => 'Nome da Aplicação',
|
||||
'argentine-peso' => 'Peso Argentino (ARS)',
|
||||
'australian-dollar' => 'Dólar Australiano (AUD)',
|
||||
'krayin' => 'Krayin',
|
||||
'bangladeshi-taka' => 'Taka de Bangladesh (BDT)',
|
||||
'brazilian-real' => 'Real Brasileiro (BRL)',
|
||||
'british-pound-sterling' => 'Libra Esterlina (GBP)',
|
||||
'canadian-dollar' => 'Dólar Canadense (CAD)',
|
||||
'cfa-franc-bceao' => 'Franco CFA BCEAO (XOF)',
|
||||
'cfa-franc-beac' => 'Franco CFA BEAC (XAF)',
|
||||
'chilean-peso' => 'Peso Chileno (CLP)',
|
||||
'chinese-yuan' => 'Yuan Chinês (CNY)',
|
||||
'colombian-peso' => 'Peso Colombiano (COP)',
|
||||
'czech-koruna' => 'Coroa Tcheca (CZK)',
|
||||
'danish-krone' => 'Coroa Dinamarquesa (DKK)',
|
||||
'database-connection' => 'Conexão com o Banco de Dados',
|
||||
'database-hostname' => 'Hostname do Banco de Dados',
|
||||
'database-name' => 'Nome do Banco de Dados',
|
||||
'database-password' => 'Senha do Banco de Dados',
|
||||
'database-port' => 'Porta do Banco de Dados',
|
||||
'database-prefix' => 'Prefixo do Banco de Dados',
|
||||
'database-username' => 'Usuário do Banco de Dados',
|
||||
'default-currency' => 'Moeda Padrão',
|
||||
'default-locale' => 'Idioma Padrão',
|
||||
'default-timezone' => 'Fuso Horário Padrão',
|
||||
'default-url' => 'URL Padrão',
|
||||
'default-url-link' => 'https://localhost',
|
||||
'egyptian-pound' => 'Libra Egípcia (EGP)',
|
||||
'euro' => 'Euro (EUR)',
|
||||
'fijian-dollar' => 'Dólar de Fiji (FJD)',
|
||||
'hong-kong-dollar' => 'Dólar de Hong Kong (HKD)',
|
||||
'hungarian-forint' => 'Forint Húngaro (HUF)',
|
||||
'indian-rupee' => 'Rúpia Indiana (INR)',
|
||||
'indonesian-rupiah' => 'Rupia Indonésia (IDR)',
|
||||
'israeli-new-shekel' => 'Novo Shekel Israelense (ILS)',
|
||||
'japanese-yen' => 'Iene Japonês (JPY)',
|
||||
'jordanian-dinar' => 'Dinar Jordaniano (JOD)',
|
||||
'kazakhstani-tenge' => 'Tenge Cazaque (KZT)',
|
||||
'kuwaiti-dinar' => 'Dinar Kuwaitiano (KWD)',
|
||||
'lebanese-pound' => 'Libra Libanesa (LBP)',
|
||||
'libyan-dinar' => 'Dinar Líbio (LYD)',
|
||||
'malaysian-ringgit' => 'Ringgit Malaio (MYR)',
|
||||
'mauritian-rupee' => 'Rúpia Mauriciana (MUR)',
|
||||
'mexican-peso' => 'Peso Mexicano (MXN)',
|
||||
'moroccan-dirham' => 'Dirham Marroquino (MAD)',
|
||||
'mysql' => 'Mysql',
|
||||
'nepalese-rupee' => 'Rúpia Nepalesa (NPR)',
|
||||
'new-taiwan-dollar' => 'Novo Dólar Taiwanês (TWD)',
|
||||
'new-zealand-dollar' => 'Dólar Neozelandês (NZD)',
|
||||
'nigerian-naira' => 'Naira Nigeriana (NGN)',
|
||||
'norwegian-krone' => 'Coroa Norueguesa (NOK)',
|
||||
'omani-rial' => 'Rial Omanense (OMR)',
|
||||
'pakistani-rupee' => 'Rúpia Paquistanesa (PKR)',
|
||||
'panamanian-balboa' => 'Balboa Panamenho (PAB)',
|
||||
'paraguayan-guarani' => 'Guarani Paraguaio (PYG)',
|
||||
'peruvian-nuevo-sol' => 'Novo Sol Peruano (PEN)',
|
||||
'pgsql' => 'pgSQL',
|
||||
'philippine-peso' => 'Peso Filipino (PHP)',
|
||||
'polish-zloty' => 'Zloty Polonês (PLN)',
|
||||
'qatari-rial' => 'Rial Catariano (QAR)',
|
||||
'romanian-leu' => 'Leu Romeno (RON)',
|
||||
'russian-ruble' => 'Rublo Russo (RUB)',
|
||||
'saudi-riyal' => 'Riyal Saudita (SAR)',
|
||||
'select-timezone' => 'Selecionar Fuso Horário',
|
||||
'singapore-dollar' => 'Dólar de Singapura (SGD)',
|
||||
'south-african-rand' => 'Rand Sul-Africano (ZAR)',
|
||||
'south-korean-won' => 'Won Sul-Coreano (KRW)',
|
||||
'sqlsrv' => 'SQLSRV',
|
||||
'sri-lankan-rupee' => 'Rúpia do Sri Lanka (LKR)',
|
||||
'swedish-krona' => 'Coroa Sueca (SEK)',
|
||||
'swiss-franc' => 'Franco Suíço (CHF)',
|
||||
'thai-baht' => 'Baht Tailandês (THB)',
|
||||
'title' => 'Configuração da Loja',
|
||||
'tunisian-dinar' => 'Dinar Tunisiano (TND)',
|
||||
'turkish-lira' => 'Lira Turca (TRY)',
|
||||
'ukrainian-hryvnia' => 'Hryvnia Ucraniana (UAH)',
|
||||
'united-arab-emirates-dirham' => 'Dirham dos Emirados Árabes Unidos (AED)',
|
||||
'united-states-dollar' => 'Dólar dos Estados Unidos (USD)',
|
||||
'uzbekistani-som' => 'Som Uzbeque (UZS)',
|
||||
'venezuelan-bolívar' => 'Bolívar Venezuelano (VEF)',
|
||||
'vietnamese-dong' => 'Dong Vietnamita (VND)',
|
||||
'warning-message' => 'Atenção! As configurações de idioma padrão e moeda padrão são permanentes e não podem ser alteradas após definidas.',
|
||||
'zambian-kwacha' => 'Kwacha Zambiano (ZMW)',
|
||||
],
|
||||
|
||||
'installation-processing' => [
|
||||
'krayin' => 'Instalação do Krayin',
|
||||
'krayin-info' => 'Criando as tabelas do banco de dados, isso pode levar alguns momentos',
|
||||
'title' => 'Instalação',
|
||||
],
|
||||
|
||||
'installation-completed' => [
|
||||
'admin-panel' => 'Painel de Administração',
|
||||
'krayin-forums' => 'Fórum do Krayin',
|
||||
'customer-panel' => 'Painel do Cliente',
|
||||
'explore-krayin-extensions' => 'Explorar Extensões do Krayin',
|
||||
'title' => 'Instalação Concluída',
|
||||
'title-info' => 'O Krayin foi instalado com sucesso no seu sistema.',
|
||||
],
|
||||
|
||||
'ready-for-installation' => [
|
||||
'create-databsae-table' => 'Criar as tabelas do banco de dados',
|
||||
'install' => 'Instalar',
|
||||
'install-info' => 'Krayin para Instalação',
|
||||
'install-info-button' => 'Clique no botão abaixo para',
|
||||
'populate-database-table' => 'Preencher as tabelas do banco de dados',
|
||||
'start-installation' => 'Iniciar Instalação',
|
||||
'title' => 'Pronto para Instalação',
|
||||
],
|
||||
|
||||
'start' => [
|
||||
'locale' => 'Localidade',
|
||||
'main' => 'Início',
|
||||
'select-locale' => 'Selecionar Localidade',
|
||||
'title' => 'Instalação do Krayin',
|
||||
'welcome-title' => 'Bem-vindo ao Krayin',
|
||||
],
|
||||
|
||||
'server-requirements' => [
|
||||
'calendar' => 'Calendário',
|
||||
'ctype' => 'cType',
|
||||
'curl' => 'cURL',
|
||||
'dom' => 'DOM',
|
||||
'fileinfo' => 'fileInfo',
|
||||
'filter' => 'Filtro',
|
||||
'gd' => 'GD',
|
||||
'hash' => 'Hash',
|
||||
'intl' => 'Intl',
|
||||
'json' => 'JSON',
|
||||
'mbstring' => 'mbstring',
|
||||
'openssl' => 'openssl',
|
||||
'pcre' => 'pcre',
|
||||
'pdo' => 'pdo',
|
||||
'php' => 'PHP',
|
||||
'php-version' => '8.1 ou superior',
|
||||
'session' => 'Sessão',
|
||||
'title' => 'Requisitos do Sistema',
|
||||
'tokenizer' => 'Tokenizador',
|
||||
'xml' => 'XML',
|
||||
],
|
||||
|
||||
'back' => 'Voltar',
|
||||
'krayin' => 'Krayin',
|
||||
'krayin-info' => 'um Projeto Comunitário por',
|
||||
'krayin-logo' => 'Logotipo Krayin',
|
||||
'continue' => 'Continuar',
|
||||
'installation-description' => 'A instalação do Krayin geralmente envolve várias etapas. Aqui está um resumo do processo de instalação do Krayin.',
|
||||
'installation-info' => 'Estamos felizes em vê-lo aqui!',
|
||||
'installation-title' => 'Bem-vindo à Instalação',
|
||||
'installation-wizard' => 'Assistente de Instalação - Idioma',
|
||||
'title' => 'Instalador do Krayin',
|
||||
'webkul' => 'Webkul',
|
||||
],
|
||||
],
|
||||
];
|
||||
@@ -0,0 +1,63 @@
|
||||
<v-button {{ $attributes }}></v-button>
|
||||
|
||||
@pushOnce('scripts')
|
||||
<script
|
||||
type="text/x-template"
|
||||
id="v-button-template"
|
||||
>
|
||||
<button
|
||||
v-if="! loading"
|
||||
:class="[buttonClass, '']"
|
||||
>
|
||||
@{{ title }}
|
||||
</button>
|
||||
|
||||
<button
|
||||
v-else
|
||||
:class="[buttonClass, '']"
|
||||
>
|
||||
<!-- Spinner -->
|
||||
<svg
|
||||
class="absolute h-5 w-5 animate-spin"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
aria-hidden="true"
|
||||
viewBox="0 0 24 24"
|
||||
>
|
||||
<circle
|
||||
class="opacity-25"
|
||||
cx="12"
|
||||
cy="12"
|
||||
r="10"
|
||||
stroke="currentColor"
|
||||
stroke-width="4"
|
||||
>
|
||||
</circle>
|
||||
|
||||
<path
|
||||
class="opacity-75"
|
||||
fill="currentColor"
|
||||
d="M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
|
||||
>
|
||||
</path>
|
||||
</svg>
|
||||
|
||||
<span class="realative h-full w-full opacity-0">
|
||||
@{{ title }}
|
||||
</span>
|
||||
</button>
|
||||
</script>
|
||||
|
||||
<script type="module">
|
||||
app.component('v-button', {
|
||||
template: '#v-button-template',
|
||||
|
||||
props: {
|
||||
loading: Boolean,
|
||||
buttonType: String,
|
||||
title: String,
|
||||
buttonClass: String,
|
||||
},
|
||||
});
|
||||
</script>
|
||||
@endPushOnce
|
||||
@@ -0,0 +1,70 @@
|
||||
@props([
|
||||
'type' => 'text',
|
||||
'name' => '',
|
||||
])
|
||||
|
||||
@switch($type)
|
||||
@case('hidden')
|
||||
@case('text')
|
||||
@case('email')
|
||||
@case('password')
|
||||
@case('number')
|
||||
<v-field
|
||||
name="{{ $name }}"
|
||||
v-slot="{ field }"
|
||||
{{ $attributes->only(['value', ':value', 'v-model', 'rules', ':rules', 'label', ':label']) }}
|
||||
>
|
||||
<input
|
||||
type="{{ $type }}"
|
||||
name="{{ $name }}"
|
||||
v-bind="field"
|
||||
:class="[errors['{{ $name }}'] ? 'border border-red-600 hover:border-red-600' : '']"
|
||||
{{ $attributes->except(['value', ':value', 'v-model', 'rules', ':rules', 'label', ':label'])->merge(['class' => 'w-full appearance-none rounded-md border px-3 py-2 text-sm text-gray-600 transition-all hover:border-gray-400']) }}
|
||||
>
|
||||
</v-field>
|
||||
|
||||
@break
|
||||
|
||||
@case('select')
|
||||
<v-field
|
||||
name="{{ $name }}"
|
||||
v-slot="{ field }"
|
||||
{{ $attributes->only(['value', ':value', 'v-model', 'rules', ':rules', 'label', ':label']) }}
|
||||
>
|
||||
<select
|
||||
name="{{ $name }}"
|
||||
v-bind="field"
|
||||
:class="[errors['{{ $name }}'] ? 'border border-red-500' : '']"
|
||||
{{ $attributes->except(['value', ':value', 'v-model', 'rules', ':rules', 'label', ':label'])->merge(['class' => 'custom-select w-full rounded-md border bg-white px-3 py-2.5 text-sm font-normal text-gray-600 transition-all hover:border-gray-400']) }}
|
||||
>
|
||||
{{ $slot }}
|
||||
</select>
|
||||
</v-field>
|
||||
|
||||
@break
|
||||
|
||||
@case('checkbox')
|
||||
<v-field
|
||||
v-slot="{ field }"
|
||||
name="{{ $name }}"
|
||||
type="checkbox"
|
||||
class="hidden"
|
||||
{{ $attributes->only(['value', ':value', 'v-model', 'rules', ':rules', 'label', ':label']) }}
|
||||
>
|
||||
<input
|
||||
type="checkbox"
|
||||
name="{{ $name }}"
|
||||
v-bind="field"
|
||||
class="peer sr-only"
|
||||
{{ $attributes->except(['rules', 'label', ':label']) }}
|
||||
/>
|
||||
</v-field>
|
||||
|
||||
<label
|
||||
class="icon-checkbox-normal peer-checked:icon-checkbox-active cursor-pointer text-2xl peer-checked:text-blue-600"
|
||||
{{ $attributes->except(['value', ':value', 'v-model', 'rules', ':rules', 'label', ':label']) }}
|
||||
>
|
||||
</label>
|
||||
|
||||
@break
|
||||
@endswitch
|
||||
@@ -0,0 +1,13 @@
|
||||
@props(['controlName' => ''])
|
||||
|
||||
@if (! empty($controlName))
|
||||
<v-error-message
|
||||
name="{{ $controlName }}"
|
||||
{{ $attributes }}
|
||||
v-slot="{ message }"
|
||||
>
|
||||
<p {{ $attributes->merge(['class' => 'mt-1 text-red-600 text-xs italic']) }}>
|
||||
@{{ message }}
|
||||
</p>
|
||||
</v-error-message>
|
||||
@endif
|
||||
@@ -0,0 +1,3 @@
|
||||
<div {{ $attributes->merge(['class' => 'mb-2.5']) }}>
|
||||
{{ $slot }}
|
||||
</div>
|
||||
@@ -0,0 +1,3 @@
|
||||
<label {{ $attributes->merge(['class' => 'block text-4 font-medium leading-6 text-gray-800']) }}>
|
||||
{{ $slot }}
|
||||
</label>
|
||||
@@ -0,0 +1,34 @@
|
||||
<!--
|
||||
If a component has the `as` attribute, it indicates that it uses
|
||||
the ajaxified form or some customized slot form.
|
||||
-->
|
||||
@if ($attributes->has('as'))
|
||||
<v-form {{ $attributes }}>
|
||||
{{ $slot }}
|
||||
</v-form>
|
||||
|
||||
<!--
|
||||
Otherwise, a traditional form will be provided with a minimal
|
||||
set of configurations.
|
||||
-->
|
||||
@else
|
||||
@props(['method' => 'POST'])
|
||||
|
||||
@php $method = strtoupper($method); @endphp
|
||||
|
||||
<v-form
|
||||
method="{{ $method === 'GET' ? 'GET' : 'POST' }}"
|
||||
v-slot="{ meta, errors, setValues }"
|
||||
{{ $attributes }}
|
||||
>
|
||||
@unless(in_array($method, ['HEAD', 'GET', 'OPTIONS']))
|
||||
@csrf
|
||||
@endunless
|
||||
|
||||
@if (! in_array($method, ['GET', 'POST']))
|
||||
@method($method)
|
||||
@endif
|
||||
|
||||
{{ $slot }}
|
||||
</v-form>
|
||||
@endif
|
||||
File diff suppressed because it is too large
Load Diff
23
packages/Webkul/Installer/src/Routes/web.php
Normal file
23
packages/Webkul/Installer/src/Routes/web.php
Normal file
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Session\Middleware\StartSession;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
use Webkul\Installer\Http\Controllers\InstallerController;
|
||||
|
||||
Route::middleware(['web', 'installer_locale'])->group(function () {
|
||||
Route::controller(InstallerController::class)->group(function () {
|
||||
Route::get('install', 'index')->name('installer.index');
|
||||
|
||||
Route::middleware(StartSession::class)->prefix('install/api')->group(function () {
|
||||
Route::post('env-file-setup', 'envFileSetup')->name('installer.env_file_setup');
|
||||
|
||||
Route::withoutMiddleware('web')->group(function () {
|
||||
Route::post('run-migration', 'runMigration')->name('installer.run_migration');
|
||||
|
||||
Route::post('run-seeder', 'runSeeder')->name('installer.run_seeder');
|
||||
|
||||
Route::post('admin-config-setup', 'adminConfigSetup')->name('installer.admin_config_setup');
|
||||
});
|
||||
});
|
||||
});
|
||||
});
|
||||
16
packages/Webkul/Installer/src/Templates/on-boarding.php
Normal file
16
packages/Webkul/Installer/src/Templates/on-boarding.php
Normal file
@@ -0,0 +1,16 @@
|
||||
|
||||
_ __ _
|
||||
| | / / (_)
|
||||
| |/ / _ __ __ _ _ _ _ _ __
|
||||
| \| '__/ _` | | | | | '_ \
|
||||
| |\ \ | | (_| | |_| | | | | |
|
||||
\_| \_/_| \__,_|\__, |_|_| |_|
|
||||
__/ |
|
||||
|___/
|
||||
|
||||
</>
|
||||
|
||||
Welcome to the <info>Krayin</info> project! Krayin Community is an <comment>open-source CRM solution</comment>
|
||||
which is built on top of Laravel and Vue.js.
|
||||
|
||||
Made with 💖 by the Krayin Team. Happy helping :)
|
||||
Reference in New Issue
Block a user