diff --git a/addons/default/visiosoft/advs-module/resources/config/settings/sections.php b/addons/default/visiosoft/advs-module/resources/config/settings/sections.php
index 7c83e2392..300e9539e 100644
--- a/addons/default/visiosoft/advs-module/resources/config/settings/sections.php
+++ b/addons/default/visiosoft/advs-module/resources/config/settings/sections.php
@@ -67,7 +67,7 @@ return [
'user' => [
'title' => 'visiosoft.module.advs::section.user',
'fields' => [
- 'register_email_field',
+ 'register_email_field'
],
],
'filter' => [
@@ -76,6 +76,12 @@ return [
'hide_price_filter', 'hide_date_filter', 'hide_photo_filter', 'hide_map_filter', 'user_filter_limit'
],
],
+ 'translations' => [
+ 'title' => 'visiosoft.module.advs::section.translations',
+ 'fields' => [
+ 'override_text',
+ ],
+ ],
],
],
];
diff --git a/addons/default/visiosoft/advs-module/resources/config/settings/settings.php b/addons/default/visiosoft/advs-module/resources/config/settings/settings.php
index df69de9c2..0eb3541bc 100644
--- a/addons/default/visiosoft/advs-module/resources/config/settings/settings.php
+++ b/addons/default/visiosoft/advs-module/resources/config/settings/settings.php
@@ -339,4 +339,9 @@ return [
'mode' => 'checkbox'
],
],
+ 'override_text' => [
+ 'type' => 'anomaly.field_type.tags',
+ 'bind' => 'override_text',
+ 'env' => 'OVERRIDE_TEXT',
+ ],
];
diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/button.php b/addons/default/visiosoft/advs-module/resources/lang/en/button.php
index c09c7bc27..777bc94d0 100644
--- a/addons/default/visiosoft/advs-module/resources/lang/en/button.php
+++ b/addons/default/visiosoft/advs-module/resources/lang/en/button.php
@@ -42,4 +42,5 @@ return [
'replicate' => 'Replicate',
'fast_create' => 'Fast create',
'publish' => 'Publish',
+ 'import' => 'Import',
];
diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/section.php b/addons/default/visiosoft/advs-module/resources/lang/en/section.php
index 1992005b1..6e1310527 100644
--- a/addons/default/visiosoft/advs-module/resources/lang/en/section.php
+++ b/addons/default/visiosoft/advs-module/resources/lang/en/section.php
@@ -55,4 +55,5 @@ return [
'option_configuration' => [
'title' => 'Configuration',
],
+ 'translations' => 'Translations',
];
diff --git a/addons/default/visiosoft/advs-module/resources/lang/en/setting.php b/addons/default/visiosoft/advs-module/resources/lang/en/setting.php
index 660e90150..b213d2b67 100644
--- a/addons/default/visiosoft/advs-module/resources/lang/en/setting.php
+++ b/addons/default/visiosoft/advs-module/resources/lang/en/setting.php
@@ -205,4 +205,8 @@ return [
'name' => 'Show Post Ad Agreement',
'instructions' => 'Turn this on if you want to display a privacy policy agreement on the ad creation page',
],
+ 'override_text' => [
+ 'name' => 'Override Text',
+ 'instructions' => 'Old Value:New Value'
+ ],
];
diff --git a/addons/default/visiosoft/advs-module/src/Adv/AdvsImport.php b/addons/default/visiosoft/advs-module/src/Adv/AdvsImport.php
new file mode 100644
index 000000000..ef6fa24ce
--- /dev/null
+++ b/addons/default/visiosoft/advs-module/src/Adv/AdvsImport.php
@@ -0,0 +1,19 @@
+ $row[0],
+ 'slug' => Str::slug($row[0]),
+ 'price' => $row[1],
+ 'currency' => $row[2],
+ ]);
+ }
+}
diff --git a/addons/default/visiosoft/advs-module/src/Adv/Table/AdvTableButtons.php b/addons/default/visiosoft/advs-module/src/Adv/Table/AdvTableButtons.php
index 266de8c98..d8bd59c4c 100644
--- a/addons/default/visiosoft/advs-module/src/Adv/Table/AdvTableButtons.php
+++ b/addons/default/visiosoft/advs-module/src/Adv/Table/AdvTableButtons.php
@@ -25,13 +25,7 @@ class AdvTableButtons
return ($entry->getStatus() == 'approved') ? "danger" : "success";
},
],
-
- 'edit' => [
- 'href' => function (EntryModel $entry) {
- return route('visiosoft.module.advs::edit_adv', ['id' => $entry->getId()]);
- },
- 'text' => "" . trans('streams::button.edit') . ""
- ],
+ 'edit',
'settings' => [
'text' => false,
'href' => false,
diff --git a/addons/default/visiosoft/advs-module/src/AdvsModuleSeeder.php b/addons/default/visiosoft/advs-module/src/AdvsModuleSeeder.php
index a511c269b..96fe8e1d1 100644
--- a/addons/default/visiosoft/advs-module/src/AdvsModuleSeeder.php
+++ b/addons/default/visiosoft/advs-module/src/AdvsModuleSeeder.php
@@ -1,13 +1,56 @@
disks = $disks;
+ $this->folders = $folders;
+ }
+
/**
* Run the seeder.
*/
public function run()
{
+ //Create Store Icon Folder
+ if (!$this->folders->findBySlug('ads_excel')) {
+ $disk = $this->disks->findBySlug('local');
+
+ $this->folders->create([
+ 'en' => [
+ 'name' => 'Ads Excel',
+ 'description' => 'A folder for Ads Excel.',
+ ],
+ 'slug' => 'ads_excel',
+ 'disk' => $disk
+ ]);
+ };
}
}
\ No newline at end of file
diff --git a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php
index 4ee0bf3ea..41d20cac3 100644
--- a/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php
+++ b/addons/default/visiosoft/advs-module/src/AdvsModuleServiceProvider.php
@@ -47,10 +47,18 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
],
'admin/advs-users/choose/{advId}' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@choose',
'admin/class/actions/{id}/{type}' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@actions',
- 'admin/advs/export' => [
- 'as' => 'advs::exportAdvs',
- 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@exportAdvs',
- ],
+
+
+ //Excel
+ 'admin/advs/export' => [
+ 'as' => 'advs::exportAdvs',
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\AdvsController@exportAdvs',
+ ],
+ 'admin/advs/import' => [
+ 'as' => 'visiosoft.module.advs::import.advs',
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\ExcelController@import',
+ ],
+
// advsController
'advs/list' => [
@@ -187,25 +195,25 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
// Others
'advs/ttr/{id}' => 'Visiosoft\PackagesModule\Http\Controller\packageFEController@advsStatusbyUser',
- //Configurations Admin Controller
- 'admin/advs/option_configuration/create' => [
- 'as' => 'visiosoft.module.advs::configrations.create',
- 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\OptionConfigurationController@create',
- ],
- 'admin/advs/option_configuration' => [
- 'as' => 'visiosoft.module.advs::configrations.index',
- 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\OptionConfigurationController@index',
- ],
+ //Configurations Admin Controller
+ 'admin/advs/option_configuration/create' => [
+ 'as' => 'visiosoft.module.advs::configrations.create',
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\OptionConfigurationController@create',
+ ],
+ 'admin/advs/option_configuration' => [
+ 'as' => 'visiosoft.module.advs::configrations.index',
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\Admin\OptionConfigurationController@index',
+ ],
- //Configuration Controller
- 'advs/option_configuration/create' => [
- 'as' => 'visiosoft.module.advs::user.configrations.create',
- 'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@create',
- ],
- 'conf/addCart' => [
- 'as' => 'configuration::add_cart',
- 'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@confAddCart',
- ],
+ //Configuration Controller
+ 'advs/option_configuration/create' => [
+ 'as' => 'visiosoft.module.advs::user.configrations.create',
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@create',
+ ],
+ 'conf/addCart' => [
+ 'as' => 'configuration::add_cart',
+ 'uses' => 'Visiosoft\AdvsModule\Http\Controller\OptionConfigurationController@confAddCart',
+ ],
// Admin ProductoptionsController
'admin/advs/product_options' => 'Visiosoft\AdvsModule\Http\Controller\Admin\ProductoptionsController@index',
@@ -236,9 +244,9 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
CategoryRepositoryInterface::class => CategoryRepository::class,
CountryRepositoryInterface::class => CountryRepository::class,
OptionRepositoryInterface::class => OptionRepository::class,
- ProductoptionRepositoryInterface::class => ProductoptionRepository::class,
- OptionConfigurationRepositoryInterface::class => OptionConfigurationRepository::class,
- ProductoptionsValueRepositoryInterface::class => ProductoptionsValueRepository::class,
+ ProductoptionRepositoryInterface::class => ProductoptionRepository::class,
+ OptionConfigurationRepositoryInterface::class => OptionConfigurationRepository::class,
+ ProductoptionsValueRepositoryInterface::class => ProductoptionsValueRepository::class,
];
public function boot(AddonCollection $addonCollection, FileModel $fileModel)
@@ -247,30 +255,35 @@ class AdvsModuleServiceProvider extends AddonServiceProvider
'general_settings' => [
'title' => 'visiosoft.module.advs::button.general_settings',
'href' => '/admin/settings/modules/visiosoft.module.advs',
- 'page' => 'anomaly.module.settings'
+ 'page' => 'anomaly.module.settings'
],
'theme_settings' => [
'title' => 'visiosoft.theme.defaultadmin::section.theme_settings.name',
'href' => url('admin/settings/themes/' . setting_value('streams::standard_theme')),
- 'page' => 'anomaly.module.settings'
+ 'page' => 'anomaly.module.settings'
],
'assets_clear' => [
'title' => 'visiosoft.module.advs::section.assets_clear.name',
'href' => route('assets_clear'),
- 'page' => 'anomaly.module.settings'
+ 'page' => 'anomaly.module.settings'
],
- 'export' => [
- 'title' => 'visiosoft.module.advs::button.export',
- 'href' => route('advs::exportAdvs'),
- 'page' => 'visiosoft.module.advs'
- ]
+ 'export' => [
+ 'title' => 'visiosoft.module.advs::button.export',
+ 'href' => route('advs::exportAdvs'),
+ 'page' => 'visiosoft.module.advs'
+ ],
+ 'import' => [
+ 'title' => 'visiosoft.module.advs::button.import',
+ 'href' => route('visiosoft.module.advs::import.advs'),
+ 'page' => 'visiosoft.module.advs'
+ ]
];
foreach ($settings_url as $key => $value) {
$addonCollection->get($value['page'])->addSection($key, $value);
}
- // Disable file versioning
+ // Disable file versioning
$fileModel->disableVersioning();
}
}
diff --git a/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ExcelController.php b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ExcelController.php
new file mode 100644
index 000000000..361d4308a
--- /dev/null
+++ b/addons/default/visiosoft/advs-module/src/Http/Controller/Admin/ExcelController.php
@@ -0,0 +1,41 @@
+action == "save" and $file = $fileRepository->find(request()->file)) {
+ if ($file->extension === 'xls' || $file->extension === 'xlsx') {
+ $pathToFolder = "/storage/streams/default/files-module/local/ads_excel/";
+ Excel::import(new AdvsImport(), base_path() . $pathToFolder . $file->name);
+ $this->messages->success(trans('streams::message.create_success', ['name' => trans('module::addon.title')]));
+ }
+ }
+
+ //Form Render
+ $builder->setFields([
+ 'file' => [
+ "type" => "anomaly.field_type.file",
+ "config" => [
+ 'folders' => ["ads_excel"],
+ 'mode' => 'upload'
+ ]
+ ],
+ ]);
+ $builder->setActions([
+ 'save'
+ ]);
+
+ $builder->setOptions([
+ 'redirect' => route('visiosoft.module.advs::admin_advs')
+ ]);
+
+ return $builder->render();
+ }
+}
diff --git a/app/Lang/Loader.php b/app/Lang/Loader.php
new file mode 100644
index 000000000..72f7728a0
--- /dev/null
+++ b/app/Lang/Loader.php
@@ -0,0 +1,266 @@
+
+ * @author Ryan Thompson
+ */
+class Loader extends FileLoader
+{
+
+ /**
+ * The runtime cache.
+ *
+ * @var array
+ */
+ protected static $disabled = [];
+
+ /**
+ * The streams path.
+ *
+ * @var string
+ */
+ protected $streams;
+
+ /**
+ * The addon collection instance.
+ *
+ * @var AddonCollection
+ */
+ protected $addons;
+
+ /**
+ * The application instance.
+ *
+ * @var Application
+ */
+ protected $application;
+
+ /**
+ * Create a new Loader instance.
+ *
+ * @param Filesystem $files
+ * @param string $path
+ */
+ public function __construct(Filesystem $files, $path)
+ {
+ $this->streams = base_path('vendor/visiosoft/streams-platform/resources/lang');
+
+ $this->application = app(Application::class);
+ $this->addons = app(AddonCollection::class);
+
+ parent::__construct($files, $path);
+ }
+
+ /**
+ * Load a locale from a given path.
+ *
+ * Keep streams overrides in place
+ * that are NOT namespaced cause
+ * we're overriding Laravel's
+ * base language files too.
+ *
+ * @param string $path
+ * @param string $locale
+ * @param string $group
+ * @return array
+ */
+ protected function loadPath($path, $locale, $group)
+ {
+ $lines = parent::loadPath($path, $locale, $group);
+
+ if ($path == $this->streams && $lines) {
+ $lines = $this->loadAddonOverrides($lines, $locale, $group);
+ $lines = $this->loadSystemOverrides($lines, $locale, $group);
+ $lines = $this->loadApplicationOverrides($lines, $locale, $group);
+ }
+
+ return $lines;
+ }
+
+ /**
+ * Load namespaced overrides from
+ * system AND application paths.
+ *
+ * @param array $lines
+ * @param string $locale
+ * @param string $group
+ * @param string $namespace
+ * @return array
+ */
+ protected function loadNamespaceOverrides(array $lines, $locale, $group, $namespace)
+ {
+ /**
+ * @deprecated since 1.6; Use manual loading or publishing.
+ */
+ if (env('AUTOMATIC_ADDON_OVERRIDES', true)) {
+ $lines = $this->loadAddonOverrides($lines, $locale, $group, $namespace);
+ }
+
+ $lines = $this->loadSystemOverrides($lines, $locale, $group, $namespace);
+ $lines = $this->loadApplicationOverrides($lines, $locale, $group, $namespace);
+
+ return parent::loadNamespaceOverrides($lines, $locale, $group, $namespace);
+ }
+
+ /**
+ * Load system overrides.
+ *
+ * @param array $lines
+ * @param $locale
+ * @param $group
+ * @param $namespace
+ * @return array
+ */
+ protected function loadSystemOverrides(array $lines, $locale, $group, $namespace = null)
+ {
+ if (!$namespace || $namespace == 'streams') {
+
+ $file = base_path("resources/streams/lang/{$locale}/{$group}.php");
+
+ if (is_dir(base_path("resources/streams/lang")) && $this->files->exists($file)) {
+ $lines = array_replace_recursive($lines, $this->files->getRequire($file));
+ }
+ }
+
+ if (str_is('*.*.*', $namespace)) {
+
+ list($vendor, $type, $slug) = explode('.', $namespace);
+
+ $file = base_path("resources/addons/{$vendor}/{$slug}-{$type}/lang/{$locale}/{$group}.php");
+
+ if (is_dir(base_path("resources/addons/{$vendor}/{$slug}-{$type}/lang")) && $this->files->exists($file)) {
+ $lines = array_replace_recursive($lines, $this->files->getRequire($file));
+ }
+ }
+
+ return $lines;
+ }
+
+ /**
+ * Load system overrides.
+ *
+ * @param array $lines
+ * @param $locale
+ * @param $group
+ * @param $namespace
+ * @return array
+ */
+ protected function loadApplicationOverrides(array $lines, $locale, $group, $namespace = null)
+ {
+ if (!$namespace || $namespace == 'streams') {
+
+ $file = $this->application->getResourcesPath("streams/lang/{$locale}/{$group}.php");
+
+ if (is_dir($this->application->getResourcesPath("streams/lang")) && $this->files->exists($file)) {
+ $lines = array_replace_recursive($lines, $this->files->getRequire($file));
+ }
+ }
+
+ if (str_is('*.*.*', $namespace)) {
+
+ list($vendor, $type, $slug) = explode('.', $namespace);
+
+ $file = $this->application->getResourcesPath(
+ "addons/{$vendor}/{$slug}-{$type}/lang/{$locale}/{$group}.php"
+ );
+
+ if (
+ is_dir($this->application->getResourcesPath("addons/{$vendor}/{$slug}-{$type}/lang"))
+ && $this->files->exists($file)
+ ) {
+ $lines = array_replace_recursive($lines, $this->files->getRequire($file));
+ }
+ }
+ if (config()->has('override_text')) {
+ foreach (config()->get('override_text') as $override) {
+ $override = explode(':', $override);
+
+ $lines = $this->findArrayValue($override[0], $override[1], $lines);
+ }
+ }
+
+ return $lines;
+ }
+
+ function replaceNewValue($find_value, $new_value, $arr)
+ {
+ if (is_array($arr)) {
+ foreach ($arr as $key => $item) {
+ $arr[$key] = $this->replaceNewValue($find_value, $new_value, $item);
+ }
+ return $arr;
+ }
+ if (strtolower($arr) == strtolower($find_value)) {
+ return $new_value;
+ }
+ return $arr;
+ }
+
+ function findArrayValue($find_value, $new_value, $arr)
+ {
+ foreach ($arr as $key => $item) {
+ $arr[$key] = $this->replaceNewValue($find_value, $new_value, $item);
+ }
+ return $arr;
+ }
+
+
+ /**
+ * @param array $lines
+ * @param $locale
+ * @param $group
+ * @param null $namespace
+ * @return array
+ */
+ protected function loadAddonOverrides(array $lines, $locale, $group, $namespace = null)
+ {
+ /** @var Addon $addon */
+ foreach ($this->addons->enabled() as $addon) {
+
+ $disabled = array_get(self::$disabled, $key = $addon->getNamespace('streams'), false);
+
+ if (!$disabled && !$this->files->isDirectory($addon->getPath('resources/streams'))) {
+ self::$disabled[$key] = $disabled = true;
+ }
+
+ if (!$disabled && (!$namespace || $namespace == 'streams')) {
+
+ $file = $addon->getPath("resources/streams/lang/{$locale}/{$group}.php");
+
+ if ($this->files->exists($file)) {
+ $lines = array_replace_recursive($lines, $this->files->getRequire($file));
+ }
+ }
+
+ $disabled = array_get(self::$disabled, $key = $addon->getNamespace('addons'), false);
+
+ if (!$disabled && !$this->files->isDirectory($addon->getPath('resources/addons'))) {
+ self::$disabled[$key] = $disabled = true;
+ }
+
+ if (!$disabled && str_is('*.*.*', $namespace)) {
+
+ list($vendor, $type, $slug) = explode('.', $namespace);
+
+ $file = $addon->getPath(
+ "resources/addons/{$vendor}/{$slug}-{$type}/lang/{$locale}/{$group}.php"
+ );
+
+ if ($this->files->exists($file)) {
+ $lines = array_replace_recursive($lines, $this->files->getRequire($file));
+ }
+ }
+ }
+
+ return $lines;
+ }
+}
diff --git a/app/Listeners/Translations.php b/app/Listeners/Translations.php
new file mode 100755
index 000000000..a891f3401
--- /dev/null
+++ b/app/Listeners/Translations.php
@@ -0,0 +1,45 @@
+singleton(
+ 'translation.loader',
+ function ($application) {
+ return new Loader($application['files'], $application['path.lang']);
+ }
+ );
+
+ app()->singleton(
+ 'translator',
+ function ($application) {
+ $loader = $application->make('translation.loader');
+
+ // When registering the translator component, we'll need to set the default
+ // locale as well as the fallback locale. So, we'll grab the application
+ // configuration so we can easily get both of these values from there.
+ $locale = $application['config']['app.locale'];
+
+ $trans = new Translator($loader, $locale);
+
+ $trans->setFallback($application['config']['app.fallback_locale']);
+
+ return $trans;
+ }
+ );
+
+ if (defined('LOCALE')) {
+ app()->setLocale(LOCALE);
+ config()->set('app.locale', LOCALE);
+ }
+ // Set our locale namespace.
+ app()->make('translator')->addNamespace('streams', realpath(__DIR__ . '/../../vendor/visiosoft/streams-platform/resources/lang'));
+
+ }
+}
diff --git a/config/streams.php b/config/streams.php
index a05e9b5d3..bc4d41f38 100644
--- a/config/streams.php
+++ b/config/streams.php
@@ -13,7 +13,11 @@ return [
|
*/
- 'listeners' => [],
+ 'listeners' => [
+ \Anomaly\Streams\Platform\Event\Booted::class => [
+ \App\Listeners\Translations::class
+ ],
+ ],
/*
|--------------------------------------------------------------------------