├── tests ├── config │ └── admin.php ├── phpunit.xml ├── bootstrap.php ├── phpunit-coverage.xml ├── Admin │ ├── JQAdm │ │ ├── BundleTest.php │ │ ├── Dashboard │ │ │ ├── Notify │ │ │ │ └── StandardTest.php │ │ │ ├── Setting │ │ │ │ └── StandardTest.php │ │ │ └── Order │ │ │ │ ├── Quick │ │ │ │ ├── Counttotal │ │ │ │ │ └── StandardTest.php │ │ │ │ ├── Countcustomer │ │ │ │ │ └── StandardTest.php │ │ │ │ ├── Countcompleted │ │ │ │ │ └── StandardTest.php │ │ │ │ ├── Countunfinished │ │ │ │ │ └── StandardTest.php │ │ │ │ └── StandardTest.php │ │ │ │ └── StandardTest.php │ │ ├── Common │ │ │ └── Decorator │ │ │ │ └── PageTest.php │ │ └── Product │ │ │ └── Order │ │ │ └── StandardTest.php │ └── JQAdmTest.php └── Base │ └── View │ └── Helper │ └── Site │ └── StandardTest.php ├── i18n ├── ar ├── bg ├── bn ├── ca ├── cs ├── da ├── de ├── el ├── en ├── es ├── et ├── fa ├── fi ├── fr ├── he ├── hr ├── hu ├── id ├── it ├── ja ├── ko ├── lb ├── lt ├── lv ├── my ├── nb ├── nl ├── no ├── pl ├── pt ├── ro ├── ru ├── sk ├── sl ├── sr ├── sv ├── th ├── tk ├── tr ├── uk ├── vi ├── zh ├── pt_BR └── code │ ├── ar │ ├── bg │ ├── bn │ ├── ca │ ├── cs │ ├── da │ ├── de │ ├── el │ ├── en │ ├── es │ ├── et │ ├── fa │ ├── fi │ ├── fr │ ├── he │ ├── hr │ ├── hu │ ├── id │ ├── it │ ├── ja │ ├── ko │ ├── lb │ ├── lt │ ├── lv │ ├── my │ ├── nb │ ├── nl │ ├── no │ ├── pl │ ├── pt │ ├── ro │ ├── ru │ ├── sk │ ├── sl │ ├── sr │ ├── sv │ ├── th │ ├── tk │ ├── tr │ ├── uk │ ├── vi │ ├── zh │ ├── pt_BR │ ├── en.po │ ├── my.po │ ├── no.po │ ├── bn.po │ ├── lb.po │ ├── ca.po │ ├── source.pot │ ├── tk.po │ ├── ko.po │ ├── zh.po │ ├── fa.po │ ├── ja.po │ ├── sv.po │ ├── fi.po │ ├── th.po │ ├── et.po │ ├── nb.po │ ├── el.po │ ├── he.po │ ├── hr.po │ ├── vi.po │ ├── tr.po │ ├── de.po │ ├── da.po │ ├── bg.po │ ├── sr.po │ ├── es.po │ ├── fr.po │ ├── hu.po │ ├── it.po │ ├── nl.po │ ├── ro.po │ └── lv.po ├── .gitignore ├── templates └── admin │ └── jqadm │ ├── dashboard │ ├── list-notify.php │ ├── list-order.php │ ├── item-order-quick.php │ ├── list.php │ ├── item-order-countday.php │ ├── item-order-salesday.php │ ├── item-order-salesmonth.php │ ├── item-order-counthour.php │ ├── item-order-salesweekday.php │ ├── item-order-servicepayment.php │ ├── item-order-servicedelivery.php │ ├── item-order-quick-countcustomer.php │ ├── item-order-quick-counttotal.php │ ├── item-order-quick-countcompleted.php │ ├── item-order-quick-countunfinished.php │ ├── item-order-countpaystatus.php │ ├── list-setting.php │ └── list-job.php │ ├── settings │ ├── item-api.php │ ├── item-api-removebg.php │ ├── item-api-deepl.php │ └── item-theme.php │ ├── product │ ├── item-characteristic.php │ ├── item-price-property.php │ ├── item-media-property.php │ └── item-characteristic-property.php │ ├── supplier │ ├── item-product.php │ └── item-media-property.php │ ├── catalog │ ├── item-media-property.php │ └── item-product.php │ ├── service │ ├── item-media-property.php │ └── item-price-property.php │ ├── attribute │ ├── item-media-property.php │ ├── item-price-property.php │ └── item-property.php │ ├── customer │ └── item-property.php │ ├── columns.php │ ├── listhead.php │ └── itemactions.php ├── .tx └── config ├── js ├── components │ ├── confirm-delete.js │ ├── select-component.js │ ├── column-select.js │ ├── page-limit.js │ ├── taxrates.js │ ├── nav-search.js │ └── imagegen.js ├── log.js ├── basket.js ├── order.js ├── libs.js ├── dashboard.js ├── plugin.js ├── rule.js ├── service.js └── customer.js ├── manifest.php ├── .github └── ISSUE_TEMPLATE │ ├── feature_request.md │ └── bug_report.md ├── src ├── Admin │ └── JQAdm │ │ ├── Common │ │ ├── Admin │ │ │ └── Factory │ │ │ │ ├── Base.php │ │ │ │ └── Iface.php │ │ └── Decorator │ │ │ ├── Iface.php │ │ │ └── Page.php │ │ └── Exception.php └── Base │ └── View │ └── Helper │ ├── Datetime │ ├── Iface.php │ └── Standard.php │ └── Site │ └── Iface.php ├── config └── admin │ └── jqadm │ └── navbar.php ├── README.md ├── composer.json ├── package.json └── themes └── default └── nav.css /tests/config/admin.php: -------------------------------------------------------------------------------- 1 | 8 | get( 'notifyBody' ) ) : ?> 9 | 10 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/list-order.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | 11 | ?> 12 |
13 | get( 'orderBody' ) ?> 14 |
15 | -------------------------------------------------------------------------------- /templates/admin/jqadm/settings/item-api.php: -------------------------------------------------------------------------------- 1 | 10 |
11 | get( 'apiBody' ); ?> 12 |
-------------------------------------------------------------------------------- /.tx/config: -------------------------------------------------------------------------------- 1 | [main] 2 | host = https://www.transifex.com 3 | 4 | [o:aimeos:p:aimeos-core:r:admin] 5 | file_filter = i18n/.po 6 | source_file = i18n/source.pot 7 | source_lang = en 8 | type = PO 9 | 10 | [o:aimeos:p:aimeos-core:r:admin-code] 11 | file_filter = i18n/code/.po 12 | source_file = i18n/code/source.pot 13 | source_lang = en 14 | type = PO 15 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-quick.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | 11 | ?> 12 |
13 |
14 | get( 'orderQuickBody' ) ?> 15 |
16 |
17 | -------------------------------------------------------------------------------- /js/components/confirm-delete.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2025 4 | */ 5 | 6 | 7 | Aimeos.components['confirm-delete'] = { 8 | template: '#confirm-delete', 9 | emits: ['close', 'confirm'], 10 | props: { 11 | 'items': {type: Object, default: () => ({})}, 12 | 'show': {type: Boolean, default: false} 13 | } 14 | }; 15 | -------------------------------------------------------------------------------- /templates/admin/jqadm/product/item-characteristic.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | ?> 11 |
12 |
13 | get( 'characteristicBody' ) ?> 14 |
15 |
16 | -------------------------------------------------------------------------------- /js/log.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2024 4 | */ 5 | 6 | 7 | 8 | Aimeos.Log = { 9 | 10 | init() { 11 | document.querySelector(".aimeos .list-log .list-items")?.addEventListener("dblclick", function(ev) { 12 | ev.target?.parentElement?.classList?.toggle("show"); 13 | }); 14 | } 15 | }; 16 | 17 | 18 | 19 | document.addEventListener("DOMContentLoaded", function() { 20 | Aimeos.Log.init(); 21 | }); 22 | -------------------------------------------------------------------------------- /manifest.php: -------------------------------------------------------------------------------- 1 | 'ai-admin-jqadm', 5 | 'depends' => [ 6 | 'aimeos-core', 7 | ], 8 | 'config' => [ 9 | 'config', 10 | ], 11 | 'include' => [ 12 | 'src', 13 | ], 14 | 'i18n' => [ 15 | 'admin' => 'i18n', 16 | 'admin/code' => 'i18n/code', 17 | ], 18 | 'custom' => [ 19 | 'admin/jqadm' => [ 20 | 'manifest.jsb2', 21 | ], 22 | ], 23 | 'template' => [ 24 | 'admin/jqadm/templates' => [ 25 | 'templates/admin/jqadm', 26 | ], 27 | ], 28 | ]; 29 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/feature_request.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Feature request 3 | about: Suggest an idea for this project 4 | 5 | --- 6 | 7 | **Is your feature request related to a problem?** 8 | A clear and concise description of what the problem is. 9 | 10 | **Describe the solution you'd like** 11 | A clear and concise description of what you want to happen. 12 | 13 | **Describe alternatives you've considered** 14 | Any alternative solutions or features you've considered? 15 | 16 | **Additional context** 17 | Add any other context or screenshots about the feature request here. 18 | -------------------------------------------------------------------------------- /src/Admin/JQAdm/Common/Admin/Factory/Base.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ../src 6 | 7 | 8 | 9 | 10 | Base/ 11 | 12 | 13 | Admin/ 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /tests/bootstrap.php: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | ../src 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | Base/ 16 | 17 | 18 | Admin/ 19 | 20 | 21 | 22 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/list.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | 11 | ?> 12 | block()->start( 'jqadm_content' ) ?> 13 |
14 | 20 | 21 | get( 'listBody' ) ?> 22 |
23 | block()->stop() ?> 24 | 25 | render( $this->config( 'admin/jqadm/template/page', 'page' ) ) ?> 26 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Environment** 8 | 1. Version (e.g. 2017.10) 9 | 2. Integration (Laravel, TYPO3, Symfony, SlimPHP or Flow) 10 | 3. System (Linux, Mac, Windows) 11 | 12 | **Describe the bug** 13 | A clear and concise description of what the bug is. 14 | 15 | **To Reproduce** 16 | Steps to reproduce the behavior: 17 | 1. Go to '...' 18 | 2. Click on '....' 19 | 3. Scroll down to '....' 20 | 4. See error 21 | 22 | **Expected behavior** 23 | A clear and concise description of what you expected to happen. 24 | 25 | **Screenshots** 26 | If applicable, add screenshots to help explain your problem. 27 | 28 | **Additional context** 29 | Add any other context about the problem here. 30 | -------------------------------------------------------------------------------- /src/Admin/JQAdm/Common/Decorator/Iface.php: -------------------------------------------------------------------------------- 1 | 'dashboard', 5 | 10 => [ 6 | '_' => 'sales', 7 | 10 => 'order', 8 | 20 => 'subscription', 9 | 30 => 'basket', 10 | ], 11 | 20 => [ 12 | '_' => 'goods', 13 | 10 => 'product', 14 | 20 => 'catalog', 15 | 30 => 'attribute', 16 | 40 => 'supplier', 17 | ], 18 | 30 => [ 19 | '_' => 'users', 20 | 10 => 'customer', 21 | 20 => 'group', 22 | ], 23 | 40 => [ 24 | '_' => 'marketing', 25 | 10 => 'coupon', 26 | 20 => 'rule', 27 | 30 => 'review', 28 | ], 29 | 50 => 'settings', 30 | 60 => [ 31 | '_' => 'setup', 32 | 20 => 'service', 33 | 30 => 'plugin', 34 | ], 35 | 70 => [ 36 | '_' => 'locale', 37 | 10 => 'locale', 38 | 20 => 'locale/site', 39 | 30 => 'locale/language', 40 | 40 => 'locale/currency', 41 | ], 42 | 80 => 'type', 43 | 90 => 'log', 44 | ]; 45 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/BundleTest.php: -------------------------------------------------------------------------------- 1 | assertFalse( empty( \Aimeos\Admin\JQAdm\Bundle::get( [$manifest], 'index-css' ) ) ); 19 | $this->assertFalse( empty( \Aimeos\Admin\JQAdm\Bundle::get( [$manifest], 'index-ltr-css' ) ) ); 20 | $this->assertFalse( empty( \Aimeos\Admin\JQAdm\Bundle::get( [$manifest], 'index-rtl-css' ) ) ); 21 | $this->assertFalse( empty( \Aimeos\Admin\JQAdm\Bundle::get( [$manifest], 'index-js' ) ) ); 22 | $this->assertFalse( empty( \Aimeos\Admin\JQAdm\Bundle::get( [$manifest], 'vendor-js' ) ) ); 23 | } 24 | } 25 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-countday.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | ?> 11 |
12 |
13 |
16 |
17 |
18 |
19 |

20 | html( $this->translate( 'admin', 'Orders by day' ) ) ?> 21 |

22 |
23 |
24 |
25 |
26 |
27 |
28 | get( 'orderdayBody' ) ?> 29 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-salesday.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | ?> 11 | 12 |
13 |
14 |
17 |
18 |
19 |
20 |

21 | html( $this->translate( 'admin', 'Sales of the last 30 days' ) ) ?> 22 |

23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-salesmonth.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | ?> 11 | 12 |
13 |
14 |
17 |
18 |
19 |
20 |

21 | html( $this->translate( 'admin', 'Sales per month' ) ) ?> 22 |

23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | -------------------------------------------------------------------------------- /src/Base/View/Helper/Datetime/Standard.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | 11 | ?> 12 |
13 |
14 |
17 |
18 |
19 |
20 |

21 | html( $this->translate( 'admin', 'Orders by hour' ) ) ?> 22 |

23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | get( 'orderhourBody' ) ?> 31 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | 2 | Aimeos logo 3 | 4 | 5 | # Aimeos JQAdm admin backend 6 | 7 | [![Build Status](https://circleci.com/gh/aimeos/ai-admin-jqadm.svg?style=shield)](https://circleci.com/gh/aimeos/ai-admin-jqadm) 8 | [![Coverage Status](https://coveralls.io/repos/aimeos/ai-admin-jqadm/badge.svg?branch=master)](https://coveralls.io/r/aimeos/ai-admin-jqadm?branch=master) 9 | [![Scrutinizer Code Quality](https://scrutinizer-ci.com/g/aimeos/ai-admin-jqadm/badges/quality-score.png?b=master)](https://scrutinizer-ci.com/g/aimeos/ai-admin-jqadm/?branch=master) 10 | [![License](https://poser.pugx.org/aimeos/ai-admin-jqadm/license.svg)](https://packagist.org/packages/aimeos/ai-admin-jqadm) 11 | 12 | VueJS and Bootstrap based admin backend for Aimeos 13 | 14 | [![Aimeos demo](https://aimeos.org/fileadmin/aimeos.org/images/aimeos-backend.png)](http://admin.demo.aimeos.org/) 15 | -------------------------------------------------------------------------------- /js/components/select-component.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2025 4 | */ 5 | 6 | 7 | Aimeos.components['select-component'] = { 8 | template: ` 9 | 17 | `, 18 | emits: ['update:modelValue'], 19 | props: { 20 | 'all': {type: String, default: ''}, 21 | 'text': {type: String, default: ''}, 22 | 'items': {type: Object, required: true}, 23 | 'modelValue': {required: true}, 24 | } 25 | }; 26 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-salesweekday.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | ?> 11 | 12 |
13 |
14 |
17 |
18 |
19 |
20 |

21 | html( $this->translate( 'admin', 'Sales by weekday' ) ) ?> 22 |

23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 | get( 'orderweekdayBody' ) ?> 31 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-servicepayment.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | ?> 11 | 12 |
13 |
14 |
17 |
18 |
19 |
20 |

21 | html( $this->translate( 'admin', 'Payment types' ) ) ?> 22 |

23 |
24 |
25 |
26 |
27 |
28 |
29 | get( 'orderpaymenttypeBody' ) ?> 30 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-servicedelivery.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | ?> 11 | 12 |
13 |
14 |
17 |
18 |
19 |
20 |

21 | html( $this->translate( 'admin', 'Delivery types' ) ) ?> 22 |

23 |
24 |
25 |
26 |
27 |
28 |
29 | get( 'orderdeliverytypeBody' ) ?> 30 | -------------------------------------------------------------------------------- /js/basket.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org)2023-2025 4 | */ 5 | 6 | 7 | Aimeos.Basket = { 8 | 9 | init() { 10 | const node = document.querySelector('.item-basket .basket-item') 11 | 12 | if(node) { 13 | Aimeos.apps['basket'] = Aimeos.app({ 14 | props: { 15 | data: {type: String, default: '{}'}, 16 | siteid: {type: String, default: ''}, 17 | }, 18 | data() { 19 | return { 20 | item: {} 21 | } 22 | }, 23 | beforeMount() { 24 | this.Aimeos = Aimeos; 25 | this.item = JSON.parse(this.data); 26 | }, 27 | mixins: [this.mixins] 28 | }, {...node.dataset || {}}).mount(node); 29 | } 30 | }, 31 | 32 | 33 | mixins: { 34 | methods: { 35 | can(action) { 36 | return Aimeos.can(action, this.item['basket.siteid'] || null, this.siteid) 37 | }, 38 | } 39 | }, 40 | }; 41 | 42 | 43 | 44 | document.addEventListener("DOMContentLoaded", function() { 45 | Aimeos.Basket.init(); 46 | }); 47 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-quick-countcustomer.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | 11 | ?> 12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |

html( $this->translate( 'admin', 'New customers' ) ) ?>

22 |
23 |
24 |
25 |
26 | get( 'quickCountcustomerBody' ) ?> 27 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Dashboard/Notify/StandardTest.php: -------------------------------------------------------------------------------- 1 | view = \TestHelper::view(); 22 | $this->context = \TestHelper::context(); 23 | 24 | $this->object = new \Aimeos\Admin\JQAdm\Dashboard\Notify\Standard( $this->context ); 25 | $this->object->setAimeos( \TestHelper::getAimeos() ); 26 | $this->object->setView( $this->view ); 27 | } 28 | 29 | 30 | protected function tearDown() : void 31 | { 32 | unset( $this->object, $this->view, $this->context ); 33 | } 34 | 35 | 36 | public function testSearch() 37 | { 38 | $result = $this->object->search(); 39 | 40 | $this->assertStringContainsString( '', $result ); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "aimeos/ai-admin-jqadm", 3 | "description": "Aimeos VueJS+Bootstrap admin backend", 4 | "keywords": ["aimeos", "extension", "admin", "Vue.js", "Bootstrap"], 5 | "homepage": "https://aimeos.org/", 6 | "type": "aimeos-extension", 7 | "license": "LGPL-3.0-or-later", 8 | "support": { 9 | "source": "https://github.com/aimeos/ai-admin-jqadm", 10 | "issues": "https://github.com/aimeos/ai-admin-jqadm/issues", 11 | "forum": "https://aimeos.org/help", 12 | "wiki": "https://aimeos.org/docs" 13 | }, 14 | "prefer-stable": true, 15 | "minimum-stability": "dev", 16 | "require": { 17 | "php": "^8.0.11", 18 | "aimeos/aimeos-core": "dev-master" 19 | }, 20 | "require-dev": { 21 | "phpunit/phpunit": "~10.0||~11.0", 22 | "nyholm/psr7-server": "~1.0" 23 | }, 24 | "autoload": { 25 | "psr-4": { 26 | "Aimeos\\": "src" 27 | }, 28 | "classmap": [ 29 | "src" 30 | ] 31 | }, 32 | "autoload-dev": { 33 | "psr-4": { 34 | "Aimeos\\": "tests" 35 | }, 36 | "classmap": [ 37 | "tests" 38 | ] 39 | } 40 | } 41 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-quick-counttotal.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | 11 | ?> 12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |

html( $this->translate( 'admin', 'Total orders' ) ) ?>

22 |
23 |
24 |
25 |
26 | get( 'quickCounttotalBody' ) ?> 27 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Dashboard/Setting/StandardTest.php: -------------------------------------------------------------------------------- 1 | view = \TestHelper::view(); 22 | $this->context = \TestHelper::context(); 23 | 24 | $this->object = new \Aimeos\Admin\JQAdm\Dashboard\Setting\Standard( $this->context ); 25 | $this->object->setAimeos( \TestHelper::getAimeos() ); 26 | $this->object->setView( $this->view ); 27 | } 28 | 29 | 30 | protected function tearDown() : void 31 | { 32 | unset( $this->object, $this->view, $this->context ); 33 | } 34 | 35 | 36 | public function testSearch() 37 | { 38 | $result = $this->object->search(); 39 | 40 | $this->assertStringContainsString( '', $result ); 41 | } 42 | } 43 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-quick-countcompleted.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | 11 | ?> 12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |

html( $this->translate( 'admin', 'Completed orders' ) ) ?>

22 |
23 |
24 |
25 |
26 | get( 'quickCountcompletedBody' ) ?> 27 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-quick-countunfinished.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | 11 | ?> 12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |

html( $this->translate( 'admin', 'Unfinished orders' ) ) ?>

22 |
23 |
24 |
25 |
26 | get( 'quickCountunfinishedBody' ) ?> 27 | -------------------------------------------------------------------------------- /src/Admin/JQAdm/Exception.php: -------------------------------------------------------------------------------- 1 | details = $details; 37 | } 38 | 39 | 40 | /** 41 | * Returns the custom exception details 42 | * 43 | * @return mixed Custom exception details 44 | */ 45 | public function getDetails() 46 | { 47 | return $this->details; 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /js/components/column-select.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2025 4 | */ 5 | 6 | 7 | Aimeos.components['column-select'] = { 8 | template: '#column-select', 9 | emits: ['close', 'submit'], 10 | props: { 11 | 'titles': {type: Object, required: true}, 12 | 'fields': {type: Array, required: true}, 13 | 'name': {type: String, required: true}, 14 | 'show': {type: Boolean, default: false}, 15 | 'submit': {type: Boolean, default: true}, 16 | 'tabindex': {type: String, default: '1'} 17 | }, 18 | data() { 19 | return { 20 | active: {} 21 | } 22 | }, 23 | beforeMount() { 24 | for(const key of this.fields) { 25 | this.active[key] = true; 26 | } 27 | }, 28 | methods: { 29 | checked(key) { 30 | return this.active[key] ? true : false; 31 | }, 32 | 33 | toggle(key) { 34 | if(this.active[key]) { 35 | delete this.active[key]; 36 | } else { 37 | this.active[key] = true; 38 | } 39 | }, 40 | 41 | update(ev) { 42 | this.$emit('submit', Object.keys(this.active)); 43 | if(!this.submit) { 44 | ev.preventDefault(); 45 | } 46 | } 47 | } 48 | }; 49 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Dashboard/Order/Quick/Counttotal/StandardTest.php: -------------------------------------------------------------------------------- 1 | view = \TestHelper::view(); 22 | $this->context = \TestHelper::context(); 23 | 24 | $this->object = new \Aimeos\Admin\JQAdm\Dashboard\Order\Quick\Counttotal\Standard( $this->context ); 25 | $this->object = new \Aimeos\Admin\JQAdm\Common\Decorator\Page( $this->object, $this->context ); 26 | $this->object->setAimeos( \TestHelper::getAimeos() ); 27 | $this->object->setView( $this->view ); 28 | } 29 | 30 | 31 | protected function tearDown() : void 32 | { 33 | unset( $this->object, $this->view, $this->context ); 34 | } 35 | 36 | 37 | public function testSearch() 38 | { 39 | $result = $this->object->search(); 40 | 41 | $this->assertStringContainsString( 'order-quick-counttotal', $result ); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Dashboard/Order/Quick/Countcustomer/StandardTest.php: -------------------------------------------------------------------------------- 1 | view = \TestHelper::view(); 22 | $this->context = \TestHelper::context(); 23 | 24 | $this->object = new \Aimeos\Admin\JQAdm\Dashboard\Order\Quick\Countcustomer\Standard( $this->context ); 25 | $this->object = new \Aimeos\Admin\JQAdm\Common\Decorator\Page( $this->object, $this->context ); 26 | $this->object->setAimeos( \TestHelper::getAimeos() ); 27 | $this->object->setView( $this->view ); 28 | } 29 | 30 | 31 | protected function tearDown() : void 32 | { 33 | unset( $this->object, $this->view, $this->context ); 34 | } 35 | 36 | 37 | public function testSearch() 38 | { 39 | $result = $this->object->search(); 40 | 41 | $this->assertStringContainsString( 'order-quick-countcustomer', $result ); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Dashboard/Order/Quick/Countcompleted/StandardTest.php: -------------------------------------------------------------------------------- 1 | view = \TestHelper::view(); 22 | $this->context = \TestHelper::context(); 23 | 24 | $this->object = new \Aimeos\Admin\JQAdm\Dashboard\Order\Quick\Countcompleted\Standard( $this->context ); 25 | $this->object = new \Aimeos\Admin\JQAdm\Common\Decorator\Page( $this->object, $this->context ); 26 | $this->object->setAimeos( \TestHelper::getAimeos() ); 27 | $this->object->setView( $this->view ); 28 | } 29 | 30 | 31 | protected function tearDown() : void 32 | { 33 | unset( $this->object, $this->view, $this->context ); 34 | } 35 | 36 | 37 | public function testSearch() 38 | { 39 | $result = $this->object->search(); 40 | 41 | $this->assertStringContainsString( 'order-quick-countcompleted', $result ); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Dashboard/Order/Quick/Countunfinished/StandardTest.php: -------------------------------------------------------------------------------- 1 | view = \TestHelper::view(); 22 | $this->context = \TestHelper::context(); 23 | 24 | $this->object = new \Aimeos\Admin\JQAdm\Dashboard\Order\Quick\Countunfinished\Standard( $this->context ); 25 | $this->object = new \Aimeos\Admin\JQAdm\Common\Decorator\Page( $this->object, $this->context ); 26 | $this->object->setAimeos( \TestHelper::getAimeos() ); 27 | $this->object->setView( $this->view ); 28 | } 29 | 30 | 31 | protected function tearDown() : void 32 | { 33 | unset( $this->object, $this->view, $this->context ); 34 | } 35 | 36 | 37 | public function testSearch() 38 | { 39 | $result = $this->object->search(); 40 | 41 | $this->assertStringContainsString( 'order-quick-countunfinished', $result ); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Common/Decorator/PageTest.php: -------------------------------------------------------------------------------- 1 | context = \TestHelper::context(); 21 | 22 | $client = new \Aimeos\Admin\JQAdm\Product\Standard( $this->context ); 23 | $this->object = new \Aimeos\Admin\JQAdm\Common\Decorator\Page( $client, $this->context ); 24 | $this->object->setAimeos( \TestHelper::getAimeos() ); 25 | $this->object->setView( \TestHelper::view() ); 26 | } 27 | 28 | 29 | protected function tearDown() : void 30 | { 31 | unset( $this->object, $this->context ); 32 | } 33 | 34 | 35 | public function testSetView() 36 | { 37 | $view = \TestHelper::view(); 38 | 39 | $this->object->setView( $view ); 40 | 41 | $this->assertEmpty( $view->get( 'pageUser' ) ); 42 | $this->assertIsArray( $view->pageParams ); 43 | $this->assertIsArray( $view->pageI18nList ); 44 | $this->assertInstanceOf( \Aimeos\Map::class, $view->pageLangItems ); 45 | $this->assertInstanceOf( \Aimeos\MShop\Locale\Item\Site\Iface::class, $view->pageSiteItem ); 46 | } 47 | } 48 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Dashboard/Order/StandardTest.php: -------------------------------------------------------------------------------- 1 | view = \TestHelper::view(); 22 | $this->context = \TestHelper::context(); 23 | 24 | $this->object = new \Aimeos\Admin\JQAdm\Dashboard\Order\Standard( $this->context ); 25 | $this->object = new \Aimeos\Admin\JQAdm\Common\Decorator\Page( $this->object, $this->context ); 26 | $this->object->setAimeos( \TestHelper::getAimeos() ); 27 | $this->object->setView( $this->view ); 28 | } 29 | 30 | 31 | protected function tearDown() : void 32 | { 33 | unset( $this->object, $this->view, $this->context ); 34 | } 35 | 36 | 37 | public function testSearch() 38 | { 39 | $result = $this->object->search(); 40 | 41 | $this->assertStringContainsString( 'dashboard-order', $result ); 42 | } 43 | 44 | 45 | public function testGetSubClient() 46 | { 47 | $result = $this->object->getSubClient( 'countpaystatus' ); 48 | $this->assertInstanceOf( \Aimeos\Admin\JQAdm\Iface::class, $result ); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Dashboard/Order/Quick/StandardTest.php: -------------------------------------------------------------------------------- 1 | view = \TestHelper::view(); 22 | $this->context = \TestHelper::context(); 23 | 24 | $this->object = new \Aimeos\Admin\JQAdm\Dashboard\Order\Quick\Standard( $this->context ); 25 | $this->object = new \Aimeos\Admin\JQAdm\Common\Decorator\Page( $this->object, $this->context ); 26 | $this->object->setAimeos( \TestHelper::getAimeos() ); 27 | $this->object->setView( $this->view ); 28 | } 29 | 30 | 31 | protected function tearDown() : void 32 | { 33 | unset( $this->object, $this->view, $this->context ); 34 | } 35 | 36 | 37 | public function testSearch() 38 | { 39 | $result = $this->object->search(); 40 | 41 | $this->assertStringContainsString( 'dashboard-order-quick', $result ); 42 | } 43 | 44 | 45 | public function testGetSubClient() 46 | { 47 | $result = $this->object->getSubClient( 'counttotal' ); 48 | $this->assertInstanceOf( \Aimeos\Admin\JQAdm\Iface::class, $result ); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /templates/admin/jqadm/settings/item-api-removebg.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | /** admin/jqadm/api/removebg 11 | * Configuration for image background removal service 12 | * 13 | * Contains the settings for configuring the image background removal service. 14 | * Currently, only RemoveBG is supported and a RemoveBG API account is required to 15 | * use the service. You have to configure at least the API "key": 16 | * 17 | * [ 18 | * 'key' => '', 19 | * ] 20 | * 21 | * @param array Associative list of key/value pairs 22 | * @since 2024.10 23 | */ 24 | 25 | 26 | ?> 27 |
28 | 29 |
30 |
31 |

RemoveBG settings > Remove.BG

32 | 33 |
34 | 35 |
36 | 40 |
41 |
42 | 43 |
44 |
45 | 46 |
47 | -------------------------------------------------------------------------------- /js/components/page-limit.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2025 4 | */ 5 | 6 | 7 | Aimeos.components['page-limit'] = { 8 | template: ` 9 |
10 | 14 | 28 |
29 | `, 30 | emits: ['update:modelValue'], 31 | props: { 32 | modelValue: {type: Number, required: true}, 33 | tabindex: {type: String, default: '1'} 34 | } 35 | }; 36 | -------------------------------------------------------------------------------- /templates/admin/jqadm/settings/item-api-deepl.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | 10 | /** admin/jqadm/api/translate 11 | * Configuration for realtime online translation service 12 | * 13 | * Contains the settings for configuring the online translation service. 14 | * Currently, only DeepL is supported and a DeepL API account is required to 15 | * use the service. You have to configure at least the API "key", all other 16 | * settings are optional: 17 | * 18 | * [ 19 | * 'key' => '', 20 | * 'url' => 'https://api.deepl.com/v2', 21 | * ] 22 | * 23 | * @param array Associative list of key/value pairs 24 | * @since 2019.10 25 | */ 26 | 27 | 28 | ?> 29 |
30 | 31 |
32 |
33 |

DeepL settings > DeepL.com

34 | 35 |
36 | 37 |
38 | 42 |
43 |
44 | 45 |
46 |
47 | 48 |
49 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ai-admin-jqadm", 3 | "version": "1.0.0", 4 | "description": "Aimeos JQAdm libraries", 5 | "main": "index.js", 6 | "directories": {}, 7 | "scripts": { 8 | "build": "./node_modules/.bin/esbuild js/libs.js --bundle --minify --loader:.png=dataurl --outfile=js/vendor.js" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/aimeos/ai-admin-jqadm" 13 | }, 14 | "keywords": [ 15 | "Aimeos", 16 | "admin", 17 | "JS", 18 | "package" 19 | ], 20 | "author": "Aimeos", 21 | "license": "LGPL-3.0-or-later", 22 | "bugs": { 23 | "url": "https://github.com/aimeos/ai-admin-jqadm/issues" 24 | }, 25 | "homepage": "https://github.com/aimeos/ai-admin-jqadm#readme", 26 | "dependencies": { 27 | "@ckeditor/ckeditor5-build-classic": "^43.1.1", 28 | "@ckeditor/ckeditor5-vue": "^5.1.0", 29 | "@he-tree/vue": "^2.9.4", 30 | "@vue-leaflet/vue-leaflet": "^0.10.1", 31 | "@vueform/multiselect": "^2.6.6", 32 | "awesome-graphql-client": "^2.0.0", 33 | "chart.js": "^4.4.3", 34 | "chartjs-adapter-moment": "^1.0.1", 35 | "chartjs-chart-geo": "^4.3.1", 36 | "chartjs-chart-matrix": "^2.0.1", 37 | "flatpickr": "^4.6.13", 38 | "leaflet": "^1.9.4", 39 | "moment": "^2.30.1", 40 | "sortablejs": "^1.15.2", 41 | "sprintf-js": "^1.1.3", 42 | "vue": "^3.4.15", 43 | "vue-flatpickr-component": "^11.0.3", 44 | "vuedraggable": "^4.1.0" 45 | }, 46 | "devDependencies": { 47 | "esbuild": "^0.25.0" 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/item-order-countpaystatus.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | $trans = array( 10 | null => '', 11 | '-1' => $this->translate( 'mshop/code', 'pay:-1' ), 12 | '0' => $this->translate( 'mshop/code', 'pay:0' ), 13 | '1' => $this->translate( 'mshop/code', 'pay:1' ), 14 | '2' => $this->translate( 'mshop/code', 'pay:2' ), 15 | '3' => $this->translate( 'mshop/code', 'pay:3' ), 16 | '4' => $this->translate( 'mshop/code', 'pay:4' ), 17 | '5' => $this->translate( 'mshop/code', 'pay:5' ), 18 | '6' => $this->translate( 'mshop/code', 'pay:6' ), 19 | '7' => $this->translate( 'mshop/code', 'pay:7' ), 20 | ); 21 | 22 | ?> 23 |
24 |
25 |
28 |
29 |
30 |
31 |

32 | html( $this->translate( 'admin', 'Orders by payment status' ) ) ?> 33 |

34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 | get( 'orderpaymentstatusBody' ) ?> 42 | -------------------------------------------------------------------------------- /src/Base/View/Helper/Site/Iface.php: -------------------------------------------------------------------------------- 1 | config( 'admin/jqadm/supplier/product/fields', $fields ); 24 | 25 | 26 | ?> 27 |
28 | partial( $this->config( 'admin/jqadm/partial/productlist', 'productlist' ), [ 29 | 'types' => $this->get( 'productListTypes', map() )->col( null, 'product.lists.type.code' )->getName()->toArray(), 30 | 'params' => $this->get( 'pageParams', [] ), 31 | 'tabindex' => $this->get( 'tabindex' ), 32 | 'siteid' => $this->site()->siteid(), 33 | 'refid' => $this->param( 'id' ), 34 | 'domain' => 'supplier', 35 | 'fields' => $fields, 36 | ] ) ?> 37 |
38 | get( 'productBody' ) ?> 39 | -------------------------------------------------------------------------------- /templates/admin/jqadm/settings/item-theme.php: -------------------------------------------------------------------------------- 1 | encoder(); 13 | 14 | 15 | ?> 16 |
17 | 18 |
19 | 20 | get( 'themeData', [] ) as $name => $values ) : ?> 21 | 22 |
23 |
24 |

html( $this->config( 'client/html/themes/' . $name, $name ) ) ?>

25 | 26 | $value ) : ?> 27 | 28 |
29 | 30 |
31 | 36 |
37 |
38 | 39 | 40 | 41 |
42 |
43 | 44 | 45 | 46 |
47 | get( 'themeData' ) ) ) : ?> 48 | html( $this->translate( 'admin', 'No theme options available' ) ) ?> 49 | 50 |
51 | 52 |
53 | 54 |
-------------------------------------------------------------------------------- /js/order.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2018 4 | */ 5 | 6 | 7 | Aimeos.Order = { 8 | 9 | init() { 10 | const node = document.querySelector('.item-order .order-item') 11 | 12 | if(node) { 13 | Aimeos.apps['order'] = Aimeos.app({ 14 | props: { 15 | data: {type: String, default: '{}'}, 16 | siteid: {type: String, default: ''}, 17 | }, 18 | data() { 19 | return { 20 | item: {}, 21 | } 22 | }, 23 | beforeMount() { 24 | this.Aimeos = Aimeos; 25 | this.item = JSON.parse(this.data || '{}'); 26 | }, 27 | mixins: [this.mixins] 28 | }, {...node.dataset || {}}).mount(node); 29 | } 30 | }, 31 | 32 | 33 | mixins: { 34 | methods: { 35 | can(action) { 36 | return Aimeos.can(action, this.item['order.siteid'] || null, this.siteid) 37 | }, 38 | 39 | customer(input) { 40 | const filter = {} 41 | 42 | if(input) { 43 | filter['||'] = [ 44 | {'=~': {'customer.label': input}}, 45 | {'=~': {'customer.code': input}}, 46 | {'==': {'customer.id': input}} 47 | ] 48 | } 49 | 50 | return Aimeos.graphql(`query { 51 | searchCustomers(filter: ` + JSON.stringify(JSON.stringify(filter)) + `, sort: ["customer.code"]) { 52 | items { 53 | id 54 | code 55 | } 56 | } 57 | } 58 | `).then(result => { 59 | return (result?.searchCustomers?.items || []).map(item => { 60 | return {'customer.id': item.id, 'customer.code': item.code} 61 | }) 62 | }) 63 | }, 64 | 65 | 66 | useCustomer(ev) { 67 | this.item['customer.code'] = ev['customer.code']; 68 | this.item['customer.id'] = ev['customer.id']; 69 | }, 70 | } 71 | }, 72 | }; 73 | 74 | 75 | 76 | document.addEventListener("DOMContentLoaded", function() { 77 | Aimeos.Order.init(); 78 | }); 79 | -------------------------------------------------------------------------------- /templates/admin/jqadm/product/item-price-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | $types = $this->get( 'propertyTypes', map() )->col( null, 'price.property.type.code' )->getName()->toArray(); 11 | 12 | ?> 13 |
14 | 15 | 16 | 17 | 33 | 34 | 35 | 36 | 37 | get( 'propertyBody' ) ?> 38 | 39 |
40 | -------------------------------------------------------------------------------- /templates/admin/jqadm/catalog/item-media-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | $types = $this->get( 'propertyTypes', map() )->col( null, 'media.property.type.code' )->getName()->toArray(); 11 | 12 | 13 | ?> 14 |
15 | 16 | 17 | 18 | 34 | 35 | 36 | 37 | 38 | get( 'propertyBody' ) ?> 39 | 40 |
41 | -------------------------------------------------------------------------------- /templates/admin/jqadm/product/item-media-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | $types = $this->get( 'propertyTypes', map() )->col( null, 'media.property.type.code' )->getName()->toArray(); 11 | 12 | 13 | ?> 14 |
15 | 16 | 17 | 18 | 34 | 35 | 36 | 37 | 38 | get( 'propertyBody' ) ?> 39 | 40 |
41 | -------------------------------------------------------------------------------- /templates/admin/jqadm/service/item-media-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | $types = $this->get( 'propertyTypes', map() )->col( null, 'media.property.type.code' )->getName()->toArray(); 11 | 12 | 13 | ?> 14 |
15 | 16 | 17 | 18 | 34 | 35 | 36 | 37 | 38 | get( 'propertyBody' ) ?> 39 | 40 |
41 | -------------------------------------------------------------------------------- /templates/admin/jqadm/service/item-price-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | $types = $this->get( 'propertyTypes', map() )->col( null, 'price.property.type.code' )->getName()->toArray(); 11 | 12 | 13 | ?> 14 |
15 | 16 | 17 | 18 | 34 | 35 | 36 | 37 | 38 | get( 'propertyBody' ) ?> 39 | 40 |
41 | -------------------------------------------------------------------------------- /templates/admin/jqadm/supplier/item-media-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | $types = $this->get( 'propertyTypes', map() )->col( null, 'media.property.type.code' )->getName()->toArray(); 11 | 12 | 13 | ?> 14 |
15 | 16 | 17 | 18 | 34 | 35 | 36 | 37 | 38 | get( 'propertyBody' ) ?> 39 | 40 |
41 | -------------------------------------------------------------------------------- /templates/admin/jqadm/attribute/item-media-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | $types = $this->get( 'propertyTypes', map() )->col( null, 'media.property.type.code' )->getName()->toArray(); 11 | 12 | 13 | ?> 14 |
15 | 16 | 17 | 18 | 34 | 35 | 36 | 37 | 38 | get( 'propertyBody' ) ?> 39 | 40 |
41 | -------------------------------------------------------------------------------- /templates/admin/jqadm/attribute/item-price-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | $types = $this->get( 'propertyTypes', map() )->col( null, 'price.property.type.code' )->getName()->toArray(); 11 | 12 | 13 | ?> 14 |
15 | 16 | 17 | 18 | 34 | 35 | 36 | 37 | 38 | get( 'propertyBody' ) ?> 39 | 40 |
41 | -------------------------------------------------------------------------------- /templates/admin/jqadm/attribute/item-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | 11 | 12 | ?> 13 |
14 | 15 |
16 | 17 | 32 | 33 | 34 |
35 | 36 | get( 'propertyBody' ) ?> 37 |
38 | -------------------------------------------------------------------------------- /templates/admin/jqadm/customer/item-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | 11 | 12 | ?> 13 |
14 | 15 |
16 | 17 | 32 | 33 | 34 |
35 | 36 | get( 'propertyBody' ) ?> 37 | 38 |
39 | -------------------------------------------------------------------------------- /js/libs.js: -------------------------------------------------------------------------------- 1 | import { createApp } from 'vue' 2 | import draggable from 'vuedraggable' 3 | import CKEditor from '@ckeditor/ckeditor5-vue' 4 | 5 | import '@vueform/multiselect/themes/default.css' 6 | import Multiselect from '@vueform/multiselect' 7 | 8 | import { BaseTree, Draggable as DragTree, dragContext } from '@he-tree/vue' 9 | import '@he-tree/vue/style/default.css' 10 | 11 | import 'flatpickr/dist/flatpickr.css' 12 | import flatpickr from 'vue-flatpickr-component' 13 | import l10n from 'flatpickr/dist/l10n/index.js' 14 | import confirmDatePlugin from 'flatpickr/dist/plugins/confirmDate/confirmDate.js' 15 | 16 | import "leaflet/dist/leaflet.css" 17 | import { LMap, LTileLayer, LMarker } from '@vue-leaflet/vue-leaflet' 18 | 19 | import { AwesomeGraphQLClient } from 'awesome-graphql-client' 20 | 21 | import moment from 'moment' 22 | import 'chartjs-adapter-moment'; 23 | 24 | import Chart from 'chart.js/auto' 25 | import { MatrixController, MatrixElement } from 'chartjs-chart-matrix' 26 | import { ChoroplethChart, ChoroplethController, ColorScale, GeoFeature, ProjectionScale, topojson } from 'chartjs-chart-geo' 27 | 28 | Chart.register(MatrixController, MatrixElement, ChoroplethChart, ChoroplethController, ColorScale, GeoFeature, ProjectionScale) 29 | 30 | globalThis.sprintf = require('sprintf-js').sprintf 31 | globalThis.createApp = createApp 32 | globalThis.Draggable = draggable 33 | globalThis.BaseTree = BaseTree 34 | globalThis.DragTree = DragTree 35 | globalThis.dragContext = dragContext 36 | globalThis.Multiselect = Multiselect 37 | globalThis.Flatpickr = flatpickr 38 | globalThis.FlatpickrL10n = l10n 39 | globalThis.confirmDatePlugin = confirmDatePlugin 40 | globalThis.CKEditor = CKEditor 41 | globalThis.LMap = LMap 42 | globalThis.LTileLayer = LTileLayer 43 | globalThis.LMarker = LMarker 44 | globalThis.AwesomeGraphQLClient = AwesomeGraphQLClient 45 | globalThis.moment = moment 46 | globalThis.Chart = Chart 47 | globalThis.topojson = topojson 48 | -------------------------------------------------------------------------------- /js/components/taxrates.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2025 4 | */ 5 | 6 | 7 | Aimeos.components['taxrates'] = { 8 | template: ` 9 |
10 | 11 | 12 | 18 | 29 | 30 |
13 | 16 |
{{ type.toUpperCase() }}
17 |
19 | 27 |
28 |
31 |
32 | `, 33 | props: ['name', 'placeholder', 'disabled', 'readonly', 'tabindex', 'taxrates', 'types'], 34 | 35 | created() { 36 | delete this.types['']; 37 | }, 38 | 39 | methods: { 40 | add(type, val) { 41 | this.taxrates[type] = val; 42 | }, 43 | 44 | remove(type) { 45 | delete this.taxrates[type]; 46 | }, 47 | 48 | update(type, val) { 49 | this.taxrates[type] = val; 50 | } 51 | } 52 | }; 53 | -------------------------------------------------------------------------------- /templates/admin/jqadm/product/item-characteristic-property.php: -------------------------------------------------------------------------------- 1 | encoder(); 10 | 11 | 12 | ?> 13 |
17 | 18 |
19 | 34 | 35 |
36 | 37 | get( 'propertyBody' ) ?> 38 | 39 |
40 | -------------------------------------------------------------------------------- /js/dashboard.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2016-2025 4 | */ 5 | 6 | 7 | Aimeos.Dashboard = { 8 | 9 | /** 10 | * Returns a promise for the constructed request 11 | * 12 | * @param string resource Resource name like "product", "order" or "order/address" 13 | * @param string key Aggregation key to group results by, e.g. "order.cdate", "order.address.countryid" 14 | * @param object criteria Polish notation object with conditions for limiting the results, e.g. {">": {"order.cdate": "2000-01-01"}} 15 | * @param string|null sort Optional sorting criteria like "order.cdate" (ascending) or "-order.cdate" (descending), also more then one separated by comma 16 | * @param integer|null limit Optional limit for the number of records that are selected before aggregation (default: 25) 17 | * @param string|null value Aggregate values from that column, e.g "order.price" (in combination with type) 18 | * @param string|null type Type of aggregation like "sum" or "avg" (default: null for count) 19 | * @return Promise object 20 | */ 21 | getData(resource, key, criteria, sort, limit, value, type) { 22 | 23 | const method = 'aggregate' + resource.charAt(0).toUpperCase() + resource.slice(1) + 's'; 24 | let str = 'key: ' + JSON.stringify(key) 25 | 26 | if(criteria) { 27 | str += ', filter: ' + JSON.stringify(JSON.stringify(criteria)) 28 | } 29 | 30 | if(sort) { 31 | sort = Array.isArray(sort) ? sort : [sort] 32 | str += ', sort: ' + JSON.stringify(sort); 33 | } 34 | 35 | if(limit) { 36 | str += ', limit: ' + limit; 37 | } 38 | 39 | if(value) { 40 | str += ', value: ' + JSON.stringify(value); 41 | } 42 | 43 | if(type) { 44 | str += ', type: ' + JSON.stringify(type); 45 | } 46 | 47 | return Aimeos.graphql(`query { 48 | ` + method + `(` + str + `) { 49 | aggregates 50 | } 51 | }`).then(result => { 52 | return JSON.parse(result[method]?.aggregates || '{}') 53 | }) 54 | } 55 | }; 56 | -------------------------------------------------------------------------------- /js/plugin.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2025 4 | */ 5 | 6 | 7 | 8 | Aimeos.Plugin = { 9 | 10 | init() { 11 | const node = document.querySelector('.item-plugin #basic'); 12 | 13 | if(node) { 14 | Aimeos.apps['plugin'] = Aimeos.app({ 15 | props: { 16 | data: {type: String, default: '{}'}, 17 | siteid: {type: String, default: ''}, 18 | providers: {type: String, default: '[]'}, 19 | decorators: {type: String, default: '[]'}, 20 | }, 21 | data() { 22 | return { 23 | item: null, 24 | cache: {}, 25 | } 26 | }, 27 | beforeMount() { 28 | this.Aimeos = Aimeos; 29 | this.item = JSON.parse(this.data); 30 | }, 31 | mixins: [this.mixins] 32 | }, {...node.dataset || {}}).mount(node); 33 | } 34 | }, 35 | 36 | 37 | mixins: { 38 | methods: { 39 | can(action) { 40 | return Aimeos.can(action, this.item['plugin.siteid'] || null, this.siteid) 41 | }, 42 | 43 | 44 | config(provider, type) { 45 | if(!provider) return [] 46 | if(this.cache[provider]) return this.cache[provider] 47 | 48 | return this.cache[provider] = Aimeos.graphql(`query { 49 | getPluginConfig(provider: ` + JSON.stringify(provider) + `, type: ` + JSON.stringify(type) + `) { 50 | code 51 | label 52 | type 53 | default 54 | required 55 | } 56 | }`).then(result => { 57 | return (result?.getPluginConfig || []).map(entry => { 58 | entry.default = JSON.parse(entry.default) 59 | entry.key = entry.code 60 | return entry 61 | }) 62 | }) 63 | }, 64 | 65 | 66 | decorate(name) { 67 | if(!(new String(this.item['plugin.provider'])).includes(name)) { 68 | this.item['plugin.provider'] = this.item['plugin.provider'] + ',' + name 69 | } 70 | }, 71 | } 72 | } 73 | }; 74 | 75 | 76 | 77 | document.addEventListener("DOMContentLoaded", function() { 78 | Aimeos.Plugin.init(); 79 | }); 80 | -------------------------------------------------------------------------------- /i18n/code/en.po: -------------------------------------------------------------------------------- 1 | msgid "" 2 | msgstr "" 3 | "Project-Id-Version: Aimeos\n" 4 | "Report-Msgid-Bugs-To: \n" 5 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 6 | "PO-Revision-Date: 2014-01-29 12:00+0100\n" 7 | "Last-Translator: Norbert Sendetzky \n" 8 | "Language-Team: English (http://www.transifex.com/projects/p/aimeos/language/" 9 | "en/)\n" 10 | "Language: English\n" 11 | "MIME-Version: 1.0\n" 12 | "Content-Type: text/plain; charset=UTF-8\n" 13 | "Content-Transfer-Encoding: 8bit\n" 14 | 15 | msgid "!=" 16 | msgstr "not equals" 17 | 18 | msgid "<" 19 | msgstr "before" 20 | 21 | msgid "<=" 22 | msgstr "before (incl.)" 23 | 24 | msgid "==" 25 | msgstr "equals" 26 | 27 | msgid "=~" 28 | msgstr "starts with" 29 | 30 | msgid ">" 31 | msgstr "after" 32 | 33 | msgid ">=" 34 | msgstr "after (incl.)" 35 | 36 | msgid "address:delivery" 37 | msgstr "Delivery address" 38 | 39 | msgid "address:payment" 40 | msgstr "Billing address" 41 | 42 | msgid "attribute" 43 | msgstr "" 44 | 45 | msgid "basket" 46 | msgstr "" 47 | 48 | msgid "catalog" 49 | msgstr "" 50 | 51 | msgid "coupon" 52 | msgstr "" 53 | 54 | msgid "customer" 55 | msgstr "" 56 | 57 | msgid "group" 58 | msgstr "" 59 | 60 | msgid "locale" 61 | msgstr "" 62 | 63 | msgid "media" 64 | msgstr "" 65 | 66 | msgid "order" 67 | msgstr "" 68 | 69 | msgid "plugin" 70 | msgstr "" 71 | 72 | msgid "price" 73 | msgstr "" 74 | 75 | msgid "product" 76 | msgstr "" 77 | 78 | msgid "review" 79 | msgstr "" 80 | 81 | msgid "rule" 82 | msgstr "" 83 | 84 | msgid "service" 85 | msgstr "" 86 | 87 | msgid "service:delivery" 88 | msgstr "Delivery" 89 | 90 | msgid "service:payment" 91 | msgstr "Payment" 92 | 93 | msgid "stock" 94 | msgstr "" 95 | 96 | msgid "subscription" 97 | msgstr "" 98 | 99 | msgid "supplier" 100 | msgstr "" 101 | 102 | msgid "tag" 103 | msgstr "" 104 | 105 | msgid "text" 106 | msgstr "" 107 | 108 | msgid "type" 109 | msgstr "" 110 | 111 | msgid "~=" 112 | msgstr "contains" 113 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/list-setting.php: -------------------------------------------------------------------------------- 1 | encoder(); 4 | 5 | $settings = [ 6 | 'file_uploads' => ini_get( 'file_uploads' ) != 1 ? ['danger', $this->translate( 'admin', 'PHP setting "%1$s" is disabled' )] : null, 7 | 'opcache.enable' => ini_get( 'opcache.enable' ) != 1 ? ['warning', $this->translate( 'admin', 'PHP setting "%1$s" is disabled' )] : null, 8 | 'open_basedir' => ini_get( 'open_basedir' ) != null ? ['warning', $this->translate( 'admin', 'PHP setting "%1$s" is enabled' )] : null, 9 | 'xdebug.default_enable' => ini_get( 'xdebug.default_enable' ) != 0 ? ['warning', $this->translate( 'admin', 'PHP setting "%1$s" is enabled' )] : null, 10 | 'madmin/cache/manager/name' => $this->get( 'madmin/cache/manager/name' ) === 'None' ? ['warning', $this->translate( 'admin', 'Aimeos caching is disabled by "%1$s"' )] : null, 11 | 'madmin/log/manager/loglevel' => $this->get( 'madmin/log/manager/loglevel', 0 ) > 6 ? ['warning', $this->translate( 'admin', 'Aimeos debug logging is enabled by "%1$s"' )] : null, 12 | ]; 13 | 14 | ?> 15 | 16 |
17 |
18 |
19 |
22 |
23 |
24 |
25 |

26 | html( $this->translate( 'admin', 'Potential problems' ) ) ?> 27 |

28 |
29 |
30 |
31 | $entry ) : list( $type, $problem ) = $entry ?> 32 |

33 | html( sprintf( $problem, $setting ) ) ?> 34 |

35 | 36 |
37 |
38 |
39 |
40 |
41 | -------------------------------------------------------------------------------- /themes/default/nav.css: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2015-2025 4 | */ 5 | 6 | 7 | /* Content navigation */ 8 | 9 | .aimeos .main-navbar { 10 | display: flex; 11 | flex-wrap: wrap; 12 | align-items: center; 13 | justify-content: space-between; 14 | box-shadow: var(--bs-shadow); 15 | background-color: var(--bs-bg-light, #ffffff); 16 | border: 1px solid rgba(0,0,0,.125); 17 | border-radius: .25rem; 18 | padding: 0.5rem 1rem; 19 | margin: 0.75rem 0; 20 | z-index: 1040; 21 | } 22 | 23 | .aimeos .main-navbar .navbar-brand { 24 | align-items: baseline; 25 | white-space: nowrap; 26 | overflow: hidden; 27 | text-overflow: ellipsis; 28 | margin-bottom: 0; 29 | padding: 0.575rem 0; 30 | } 31 | 32 | .aimeos .main-navbar .navbar-secondary { 33 | color: var(--bs-secondary, #707880); 34 | font-size: 80%; 35 | } 36 | 37 | .aimeos .main-navbar .navbar-secondary:before { 38 | content: " "; 39 | } 40 | 41 | .aimeos .main-navbar span.btnspace { 42 | display: inline-block; 43 | height: 2.4rem; 44 | } 45 | 46 | .aimeos .main-navbar .act-search { 47 | margin: 0; 48 | } 49 | 50 | 51 | @media (min-width: 992px) { 52 | .aimeos .main-navbar { 53 | position: sticky; 54 | top: 0; 55 | } 56 | } 57 | 58 | 59 | /** Content **/ 60 | 61 | .aimeos .main-content { 62 | padding: 0; 63 | min-height: calc(100vh - 6rem); 64 | } 65 | 66 | .aimeos .main-content .item-actions { 67 | white-space: nowrap; 68 | display: block; 69 | width: inherit; 70 | margin: 0.5rem; 71 | margin-left: auto; 72 | } 73 | 74 | .aimeos .main-content .main-navbar .item-actions { 75 | display: inline-block; 76 | margin: 0; 77 | } 78 | 79 | .aimeos .main-content .item-actions .btn:not(.dropdown-toggle) { 80 | min-width: 6.25rem; 81 | } 82 | 83 | .aimeos .main-content .item-actions .btn.act-help { 84 | min-width: 2rem; 85 | } 86 | 87 | @media (min-width: 992px) { 88 | .aimeos .main-content { 89 | margin-left: max(15%, 12rem); 90 | } 91 | [dir="rtl"] .aimeos .main-content { 92 | margin-right: max(15%, 12rem); 93 | margin-left: 0; 94 | } 95 | } 96 | -------------------------------------------------------------------------------- /tests/Admin/JQAdmTest.php: -------------------------------------------------------------------------------- 1 | aimeos = \TestHelper::getAimeos(); 21 | $this->context = \TestHelper::context(); 22 | $this->context->setView( \TestHelper::view() ); 23 | } 24 | 25 | 26 | public function testCreateClient() 27 | { 28 | $this->context->config()->set( 'admin/jqadm/resources', ['product'] ); 29 | $client = \Aimeos\Admin\JQAdm::create( $this->context, $this->aimeos, 'product' ); 30 | $this->assertInstanceOf( '\\Aimeos\\Admin\\JQAdm\\Iface', $client ); 31 | } 32 | 33 | 34 | public function testCreateClientName() 35 | { 36 | $this->context->config()->set( 'admin/jqadm/resources', ['product'] ); 37 | $client = \Aimeos\Admin\JQAdm::create( $this->context, $this->aimeos, 'product', 'Standard' ); 38 | $this->assertInstanceOf( '\\Aimeos\\Admin\\JQAdm\\Iface', $client ); 39 | } 40 | 41 | 42 | public function testCreateSubClient() 43 | { 44 | $this->context->config()->set( 'admin/jqadm/resources', ['type'] ); 45 | $client = \Aimeos\Admin\JQAdm::create( $this->context, $this->aimeos, 'type' ); 46 | $this->assertInstanceOf( '\\Aimeos\\Admin\\JQAdm\\Iface', $client ); 47 | } 48 | 49 | 50 | public function testCreateClientNameEmpty() 51 | { 52 | $this->expectException( '\\Aimeos\\Admin\\JQAdm\\Exception' ); 53 | \Aimeos\Admin\JQAdm::create( $this->context, $this->aimeos, '' ); 54 | } 55 | 56 | 57 | public function testCreateClientNameInvalid() 58 | { 59 | $this->expectException( \LogicException::class ); 60 | \Aimeos\Admin\JQAdm::create( $this->context, $this->aimeos, '%^unknown' ); 61 | } 62 | 63 | 64 | public function testCreateClientNameNotFound() 65 | { 66 | $this->expectException( \LogicException::class ); 67 | \Aimeos\Admin\JQAdm::create( $this->context, $this->aimeos, 'unknown' ); 68 | } 69 | 70 | } 71 | -------------------------------------------------------------------------------- /i18n/code/my.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: Burmese (http://app.transifex.com/aimeos/aimeos-core/language/my/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: my\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | 20 | msgid "!=" 21 | msgstr "" 22 | 23 | msgid "<" 24 | msgstr "" 25 | 26 | msgid "<=" 27 | msgstr "" 28 | 29 | msgid "==" 30 | msgstr "" 31 | 32 | msgid "=~" 33 | msgstr "" 34 | 35 | msgid ">" 36 | msgstr "" 37 | 38 | msgid ">=" 39 | msgstr "" 40 | 41 | msgid "~=" 42 | msgstr "" 43 | 44 | msgid "address:delivery" 45 | msgstr "ပေးပို့ရမည့်လိပ်စာ" 46 | 47 | msgid "address:payment" 48 | msgstr "" 49 | 50 | msgid "service:delivery" 51 | msgstr "" 52 | 53 | msgid "service:payment" 54 | msgstr "" 55 | 56 | msgid "attribute" 57 | msgstr "" 58 | 59 | msgid "basket" 60 | msgstr "" 61 | 62 | msgid "catalog" 63 | msgstr "" 64 | 65 | msgid "coupon" 66 | msgstr "" 67 | 68 | msgid "customer" 69 | msgstr "" 70 | 71 | msgid "group" 72 | msgstr "" 73 | 74 | msgid "locale" 75 | msgstr "" 76 | 77 | msgid "media" 78 | msgstr "" 79 | 80 | msgid "order" 81 | msgstr "" 82 | 83 | msgid "plugin" 84 | msgstr "" 85 | 86 | msgid "price" 87 | msgstr "" 88 | 89 | msgid "product" 90 | msgstr "" 91 | 92 | msgid "review" 93 | msgstr "" 94 | 95 | msgid "rule" 96 | msgstr "" 97 | 98 | msgid "service" 99 | msgstr "" 100 | 101 | msgid "stock" 102 | msgstr "" 103 | 104 | msgid "subscription" 105 | msgstr "" 106 | 107 | msgid "supplier" 108 | msgstr "" 109 | 110 | msgid "tag" 111 | msgstr "" 112 | 113 | msgid "text" 114 | msgstr "" 115 | 116 | msgid "type" 117 | msgstr "" 118 | -------------------------------------------------------------------------------- /i18n/code/no.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: Norwegian (http://app.transifex.com/aimeos/aimeos-core/language/no/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: no\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "!=" 21 | msgstr "" 22 | 23 | msgid "<" 24 | msgstr "" 25 | 26 | msgid "<=" 27 | msgstr "" 28 | 29 | msgid "==" 30 | msgstr "" 31 | 32 | msgid "=~" 33 | msgstr "" 34 | 35 | msgid ">" 36 | msgstr "" 37 | 38 | msgid ">=" 39 | msgstr "" 40 | 41 | msgid "~=" 42 | msgstr "" 43 | 44 | msgid "address:delivery" 45 | msgstr "leveringsadresse" 46 | 47 | msgid "address:payment" 48 | msgstr "" 49 | 50 | msgid "service:delivery" 51 | msgstr "" 52 | 53 | msgid "service:payment" 54 | msgstr "" 55 | 56 | msgid "attribute" 57 | msgstr "" 58 | 59 | msgid "basket" 60 | msgstr "" 61 | 62 | msgid "catalog" 63 | msgstr "" 64 | 65 | msgid "coupon" 66 | msgstr "" 67 | 68 | msgid "customer" 69 | msgstr "" 70 | 71 | msgid "group" 72 | msgstr "" 73 | 74 | msgid "locale" 75 | msgstr "" 76 | 77 | msgid "media" 78 | msgstr "" 79 | 80 | msgid "order" 81 | msgstr "" 82 | 83 | msgid "plugin" 84 | msgstr "" 85 | 86 | msgid "price" 87 | msgstr "" 88 | 89 | msgid "product" 90 | msgstr "" 91 | 92 | msgid "review" 93 | msgstr "" 94 | 95 | msgid "rule" 96 | msgstr "" 97 | 98 | msgid "service" 99 | msgstr "" 100 | 101 | msgid "stock" 102 | msgstr "" 103 | 104 | msgid "subscription" 105 | msgstr "" 106 | 107 | msgid "supplier" 108 | msgstr "" 109 | 110 | msgid "tag" 111 | msgstr "" 112 | 113 | msgid "text" 114 | msgstr "" 115 | 116 | msgid "type" 117 | msgstr "" 118 | -------------------------------------------------------------------------------- /i18n/code/bn.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: Bengali (http://app.transifex.com/aimeos/aimeos-core/language/bn/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: bn\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "!=" 21 | msgstr "" 22 | 23 | msgid "<" 24 | msgstr "" 25 | 26 | msgid "<=" 27 | msgstr "" 28 | 29 | msgid "==" 30 | msgstr "" 31 | 32 | msgid "=~" 33 | msgstr "" 34 | 35 | msgid ">" 36 | msgstr "" 37 | 38 | msgid ">=" 39 | msgstr "" 40 | 41 | msgid "~=" 42 | msgstr "" 43 | 44 | msgid "address:delivery" 45 | msgstr "ডেলিভারির ঠিকানা" 46 | 47 | msgid "address:payment" 48 | msgstr "" 49 | 50 | msgid "service:delivery" 51 | msgstr "ডেলিভারি" 52 | 53 | msgid "service:payment" 54 | msgstr "" 55 | 56 | msgid "attribute" 57 | msgstr "" 58 | 59 | msgid "basket" 60 | msgstr "" 61 | 62 | msgid "catalog" 63 | msgstr "" 64 | 65 | msgid "coupon" 66 | msgstr "" 67 | 68 | msgid "customer" 69 | msgstr "" 70 | 71 | msgid "group" 72 | msgstr "" 73 | 74 | msgid "locale" 75 | msgstr "" 76 | 77 | msgid "media" 78 | msgstr "" 79 | 80 | msgid "order" 81 | msgstr "" 82 | 83 | msgid "plugin" 84 | msgstr "" 85 | 86 | msgid "price" 87 | msgstr "" 88 | 89 | msgid "product" 90 | msgstr "" 91 | 92 | msgid "review" 93 | msgstr "" 94 | 95 | msgid "rule" 96 | msgstr "" 97 | 98 | msgid "service" 99 | msgstr "" 100 | 101 | msgid "stock" 102 | msgstr "" 103 | 104 | msgid "subscription" 105 | msgstr "" 106 | 107 | msgid "supplier" 108 | msgstr "" 109 | 110 | msgid "tag" 111 | msgstr "" 112 | 113 | msgid "text" 114 | msgstr "" 115 | 116 | msgid "type" 117 | msgstr "" 118 | -------------------------------------------------------------------------------- /i18n/code/lb.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: Luxembourgish (http://app.transifex.com/aimeos/aimeos-core/language/lb/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: lb\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "!=" 21 | msgstr "" 22 | 23 | msgid "<" 24 | msgstr "" 25 | 26 | msgid "<=" 27 | msgstr "" 28 | 29 | msgid "==" 30 | msgstr "" 31 | 32 | msgid "=~" 33 | msgstr "" 34 | 35 | msgid ">" 36 | msgstr "" 37 | 38 | msgid ">=" 39 | msgstr "" 40 | 41 | msgid "~=" 42 | msgstr "" 43 | 44 | msgid "address:delivery" 45 | msgstr "" 46 | 47 | msgid "address:payment" 48 | msgstr "Rechnungsadress" 49 | 50 | msgid "service:delivery" 51 | msgstr "" 52 | 53 | msgid "service:payment" 54 | msgstr "" 55 | 56 | msgid "attribute" 57 | msgstr "" 58 | 59 | msgid "basket" 60 | msgstr "" 61 | 62 | msgid "catalog" 63 | msgstr "" 64 | 65 | msgid "coupon" 66 | msgstr "" 67 | 68 | msgid "customer" 69 | msgstr "" 70 | 71 | msgid "group" 72 | msgstr "" 73 | 74 | msgid "locale" 75 | msgstr "" 76 | 77 | msgid "media" 78 | msgstr "" 79 | 80 | msgid "order" 81 | msgstr "Bestellung" 82 | 83 | msgid "plugin" 84 | msgstr "" 85 | 86 | msgid "price" 87 | msgstr "" 88 | 89 | msgid "product" 90 | msgstr "" 91 | 92 | msgid "review" 93 | msgstr "" 94 | 95 | msgid "rule" 96 | msgstr "" 97 | 98 | msgid "service" 99 | msgstr "" 100 | 101 | msgid "stock" 102 | msgstr "" 103 | 104 | msgid "subscription" 105 | msgstr "" 106 | 107 | msgid "supplier" 108 | msgstr "" 109 | 110 | msgid "tag" 111 | msgstr "" 112 | 113 | msgid "text" 114 | msgstr "" 115 | 116 | msgid "type" 117 | msgstr "" 118 | -------------------------------------------------------------------------------- /js/rule.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2021-2025 4 | */ 5 | 6 | 7 | 8 | Aimeos.Rule = { 9 | 10 | init() { 11 | const node = document.querySelector('.item-rule #basic') 12 | 13 | if(node) { 14 | Aimeos.apps['rule'] = Aimeos.app({ 15 | props: { 16 | data: {type: String, default: '{}'}, 17 | siteid: {type: String, default: ''}, 18 | providers: {type: String, default: '[]'}, 19 | decorators: {type: String, default: '[]'}, 20 | }, 21 | data() { 22 | return { 23 | item: null, 24 | cache: {}, 25 | show: false 26 | } 27 | }, 28 | beforeMount() { 29 | this.Aimeos = Aimeos; 30 | this.item = JSON.parse(this.data); 31 | this.show = Aimeos.session('aimeos/jqadm/item/form') == 1 32 | }, 33 | mixins: [this.mixins] 34 | }, {...node.dataset || {}}).mount(node); 35 | } 36 | }, 37 | 38 | 39 | mixins: { 40 | methods: { 41 | can(action) { 42 | return Aimeos.can(action, this.item['rule.siteid'] || null, this.siteid) 43 | }, 44 | 45 | 46 | config(provider, type) { 47 | if(!provider) return [] 48 | if(this.cache[provider]) return this.cache[provider] 49 | 50 | return this.cache[provider] = Aimeos.graphql(`query { 51 | getRuleConfig(provider: ` + JSON.stringify(provider) + `, type: ` + JSON.stringify(type) + `) { 52 | code 53 | label 54 | type 55 | default 56 | required 57 | } 58 | }`).then(result => { 59 | return (result?.getRuleConfig || []).map(entry => { 60 | entry.default = JSON.parse(entry.default) 61 | entry.key = entry.code 62 | return entry 63 | }) 64 | }) 65 | }, 66 | 67 | 68 | decorate(name) { 69 | if(!(new String(this.item['rule.provider'])).includes(name)) { 70 | this.item['rule.provider'] = this.item['rule.provider'] + ',' + name 71 | } 72 | }, 73 | 74 | 75 | toggle() { 76 | this.show = Aimeos.session('aimeos/jqadm/item/form', +!this.show) 77 | } 78 | } 79 | } 80 | }; 81 | 82 | 83 | 84 | document.addEventListener("DOMContentLoaded", function() { 85 | Aimeos.Rule.init(); 86 | }); 87 | -------------------------------------------------------------------------------- /tests/Admin/JQAdm/Product/Order/StandardTest.php: -------------------------------------------------------------------------------- 1 | view = \TestHelper::view(); 22 | $this->context = \TestHelper::context(); 23 | 24 | $this->object = new \Aimeos\Admin\JQAdm\Product\Order\Standard( $this->context ); 25 | $this->object = new \Aimeos\Admin\JQAdm\Common\Decorator\Page( $this->object, $this->context ); 26 | $this->object->setAimeos( \TestHelper::getAimeos() ); 27 | $this->object->setView( $this->view ); 28 | } 29 | 30 | 31 | protected function tearDown() : void 32 | { 33 | unset( $this->object, $this->view, $this->context ); 34 | } 35 | 36 | 37 | public function testCreate() 38 | { 39 | $manager = \Aimeos\MShop::create( $this->context, 'product' ); 40 | 41 | $this->view->item = $manager->create(); 42 | $result = $this->object->create(); 43 | 44 | $this->assertEmpty( $this->view->get( 'errors' ) ); 45 | $this->assertStringContainsString( 'item-order', $result ); 46 | } 47 | 48 | 49 | public function testCopy() 50 | { 51 | $manager = \Aimeos\MShop::create( $this->context, 'product' ); 52 | 53 | $this->view->item = $manager->find( 'CNC' ); 54 | $result = $this->object->copy(); 55 | 56 | $this->assertEmpty( $this->view->get( 'errors' ) ); 57 | $this->assertStringContainsString( 'item-order', $result ); 58 | } 59 | 60 | 61 | public function testGet() 62 | { 63 | $manager = \Aimeos\MShop::create( $this->context, 'product' ); 64 | 65 | $this->view->item = $manager->find( 'CNC' ); 66 | $result = $this->object->get(); 67 | 68 | $this->assertEmpty( $this->view->get( 'errors' ) ); 69 | $this->assertStringContainsString( 'item-order', $result ); 70 | } 71 | 72 | 73 | public function testGetSubClient() 74 | { 75 | $this->expectException( \LogicException::class ); 76 | $this->object->getSubClient( 'unknown' ); 77 | } 78 | } 79 | -------------------------------------------------------------------------------- /i18n/code/ca.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: Catalan (http://app.transifex.com/aimeos/aimeos-core/language/ca/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: ca\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "!=" 21 | msgstr "" 22 | 23 | msgid "<" 24 | msgstr "" 25 | 26 | msgid "<=" 27 | msgstr "" 28 | 29 | msgid "==" 30 | msgstr "" 31 | 32 | msgid "=~" 33 | msgstr "" 34 | 35 | msgid ">" 36 | msgstr "" 37 | 38 | msgid ">=" 39 | msgstr "" 40 | 41 | msgid "~=" 42 | msgstr "" 43 | 44 | msgid "address:delivery" 45 | msgstr "Adreça de lliurament" 46 | 47 | msgid "address:payment" 48 | msgstr "Adreça de facturació" 49 | 50 | msgid "service:delivery" 51 | msgstr "Entrega" 52 | 53 | msgid "service:payment" 54 | msgstr "Pagament" 55 | 56 | msgid "attribute" 57 | msgstr "" 58 | 59 | msgid "basket" 60 | msgstr "" 61 | 62 | msgid "catalog" 63 | msgstr "" 64 | 65 | msgid "coupon" 66 | msgstr "" 67 | 68 | msgid "customer" 69 | msgstr "" 70 | 71 | msgid "group" 72 | msgstr "" 73 | 74 | msgid "locale" 75 | msgstr "" 76 | 77 | msgid "media" 78 | msgstr "" 79 | 80 | msgid "order" 81 | msgstr "" 82 | 83 | msgid "plugin" 84 | msgstr "" 85 | 86 | msgid "price" 87 | msgstr "" 88 | 89 | msgid "product" 90 | msgstr "" 91 | 92 | msgid "review" 93 | msgstr "" 94 | 95 | msgid "rule" 96 | msgstr "" 97 | 98 | msgid "service" 99 | msgstr "" 100 | 101 | msgid "stock" 102 | msgstr "" 103 | 104 | msgid "subscription" 105 | msgstr "" 106 | 107 | msgid "supplier" 108 | msgstr "" 109 | 110 | msgid "tag" 111 | msgstr "" 112 | 113 | msgid "text" 114 | msgstr "" 115 | 116 | msgid "type" 117 | msgstr "" 118 | -------------------------------------------------------------------------------- /i18n/code/source.pot: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # FIRST AUTHOR , YEAR. 5 | # 6 | 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" 13 | "Last-Translator: Aimeos \n" 14 | "Language-Team: LANGUAGE \n" 15 | "Language: \n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | 20 | msgid "!=" 21 | msgstr "not equals" 22 | 23 | msgid "<" 24 | msgstr "before" 25 | 26 | msgid "<=" 27 | msgstr "before (incl.)" 28 | 29 | msgid "==" 30 | msgstr "equals" 31 | 32 | msgid "=~" 33 | msgstr "starts with" 34 | 35 | msgid ">" 36 | msgstr "after" 37 | 38 | msgid ">=" 39 | msgstr "after (incl.)" 40 | 41 | msgid "~=" 42 | msgstr "contains" 43 | 44 | 45 | msgid "address:delivery" 46 | msgstr "Delivery address" 47 | 48 | msgid "address:payment" 49 | msgstr "Billing address" 50 | 51 | msgid "service:delivery" 52 | msgstr "Delivery" 53 | 54 | msgid "service:payment" 55 | msgstr "Payment" 56 | 57 | 58 | msgid "attribute" 59 | msgstr "" 60 | 61 | msgid "basket" 62 | msgstr "" 63 | 64 | msgid "catalog" 65 | msgstr "" 66 | 67 | msgid "coupon" 68 | msgstr "" 69 | 70 | msgid "customer" 71 | msgstr "" 72 | 73 | msgid "group" 74 | msgstr "" 75 | 76 | msgid "locale" 77 | msgstr "" 78 | 79 | msgid "media" 80 | msgstr "" 81 | 82 | msgid "order" 83 | msgstr "" 84 | 85 | msgid "plugin" 86 | msgstr "" 87 | 88 | msgid "price" 89 | msgstr "" 90 | 91 | msgid "product" 92 | msgstr "" 93 | 94 | msgid "review" 95 | msgstr "" 96 | 97 | msgid "rule" 98 | msgstr "" 99 | 100 | msgid "service" 101 | msgstr "" 102 | 103 | msgid "stock" 104 | msgstr "" 105 | 106 | msgid "subscription" 107 | msgstr "" 108 | 109 | msgid "supplier" 110 | msgstr "" 111 | 112 | msgid "tag" 113 | msgstr "" 114 | 115 | msgid "text" 116 | msgstr "" 117 | 118 | msgid "type" 119 | msgstr "" 120 | -------------------------------------------------------------------------------- /i18n/code/tk.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: Turkmen (http://app.transifex.com/aimeos/aimeos-core/language/tk/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: tk\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "!=" 21 | msgstr "" 22 | 23 | msgid "<" 24 | msgstr "" 25 | 26 | msgid "<=" 27 | msgstr "" 28 | 29 | msgid "==" 30 | msgstr "" 31 | 32 | msgid "=~" 33 | msgstr "" 34 | 35 | msgid ">" 36 | msgstr "" 37 | 38 | msgid ">=" 39 | msgstr "" 40 | 41 | msgid "~=" 42 | msgstr "" 43 | 44 | msgid "address:delivery" 45 | msgstr "Eltip beriş salgysy" 46 | 47 | msgid "address:payment" 48 | msgstr "Hasaplaşyk salgysy" 49 | 50 | msgid "service:delivery" 51 | msgstr "Eltip bermek" 52 | 53 | msgid "service:payment" 54 | msgstr "Töleg" 55 | 56 | msgid "attribute" 57 | msgstr "" 58 | 59 | msgid "basket" 60 | msgstr "" 61 | 62 | msgid "catalog" 63 | msgstr "" 64 | 65 | msgid "coupon" 66 | msgstr "" 67 | 68 | msgid "customer" 69 | msgstr "" 70 | 71 | msgid "group" 72 | msgstr "" 73 | 74 | msgid "locale" 75 | msgstr "" 76 | 77 | msgid "media" 78 | msgstr "" 79 | 80 | msgid "order" 81 | msgstr "sargyt" 82 | 83 | msgid "plugin" 84 | msgstr "" 85 | 86 | msgid "price" 87 | msgstr "" 88 | 89 | msgid "product" 90 | msgstr "" 91 | 92 | msgid "review" 93 | msgstr "" 94 | 95 | msgid "rule" 96 | msgstr "" 97 | 98 | msgid "service" 99 | msgstr "" 100 | 101 | msgid "stock" 102 | msgstr "" 103 | 104 | msgid "subscription" 105 | msgstr "" 106 | 107 | msgid "supplier" 108 | msgstr "" 109 | 110 | msgid "tag" 111 | msgstr "" 112 | 113 | msgid "text" 114 | msgstr "" 115 | 116 | msgid "type" 117 | msgstr "" 118 | -------------------------------------------------------------------------------- /tests/Base/View/Helper/Site/StandardTest.php: -------------------------------------------------------------------------------- 1 | pageSiteItem = new \Aimeos\MShop\Locale\Item\Site\Standard( 'locale.site.', [ 21 | 'locale.site.siteid' => '0.', 22 | 'locale.site.label' => 'label1' 23 | ] ); 24 | 25 | $this->object = new \Aimeos\Base\View\Helper\Site\Standard( $view ); 26 | } 27 | 28 | 29 | protected function tearDown() : void 30 | { 31 | $this->object = null; 32 | } 33 | 34 | 35 | public function testTransform() 36 | { 37 | $this->assertInstanceOf( '\\Aimeos\\Base\\View\\Helper\\Site\\Iface', $this->object->transform() ); 38 | } 39 | 40 | 41 | public function testCan() 42 | { 43 | $this->assertEquals( true, $this->object->transform()->can( '0.' ) ); 44 | $this->assertEquals( true, $this->object->transform()->can( '0.2.' ) ); 45 | $this->assertEquals( false, $this->object->transform()->can( '3.' ) ); 46 | } 47 | 48 | 49 | public function testLabel() 50 | { 51 | $this->assertEquals( 'label1', $this->object->transform()->label() ); 52 | } 53 | 54 | 55 | public function testMatch() 56 | { 57 | $this->assertEquals( 'label1', $this->object->transform()->match( '0.' ) ); 58 | } 59 | 60 | 61 | public function testMismatch() 62 | { 63 | $this->assertEquals( '', $this->object->transform()->mismatch( '0.' ) ); 64 | $this->assertEquals( 'mismatch', $this->object->transform()->mismatch( '3.' ) ); 65 | $this->assertEquals( 'mismatch', $this->object->transform()->mismatch( '0.2.' ) ); 66 | } 67 | 68 | 69 | public function testReadonly() 70 | { 71 | $this->assertEquals( '', $this->object->transform()->readonly( '0.2.' ) ); 72 | $this->assertEquals( 'readonly', $this->object->transform()->readonly( '3.' ) ); 73 | } 74 | 75 | 76 | public function testSiteid() 77 | { 78 | $this->assertEquals( '0.', $this->object->transform()->siteid() ); 79 | } 80 | } 81 | -------------------------------------------------------------------------------- /js/service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2025 4 | */ 5 | 6 | 7 | 8 | Aimeos.Service = { 9 | 10 | init() { 11 | const node = document.querySelector('.item-service #basic') 12 | 13 | if(node) { 14 | Aimeos.apps['service'] = Aimeos.app({ 15 | props: { 16 | data: {type: String, default: '{}'}, 17 | siteid: {type: String, default: ''}, 18 | providers: {type: String, default: '[]'}, 19 | decorators: {type: String, default: '[]'}, 20 | }, 21 | data() { 22 | return { 23 | item: null, 24 | cache: {}, 25 | show: false 26 | } 27 | }, 28 | beforeMount() { 29 | this.Aimeos = Aimeos; 30 | this.item = JSON.parse(this.data); 31 | this.show = Aimeos.session('aimeos/jqadm/item/form') == 1 32 | }, 33 | mixins: [this.mixins] 34 | }, {...node.dataset || {}}).mount(node); 35 | } 36 | }, 37 | 38 | 39 | mixins: { 40 | methods: { 41 | can(action) { 42 | return Aimeos.can(action, this.item['service.siteid'] || null, this.siteid) 43 | }, 44 | 45 | 46 | config(provider, type) { 47 | if(!provider) return [] 48 | if(this.cache[provider]) return this.cache[provider] 49 | 50 | return this.cache[provider] = Aimeos.graphql(`query { 51 | getServiceConfig(provider: ` + JSON.stringify(provider) + `, type: ` + JSON.stringify(type) + `) { 52 | code 53 | label 54 | type 55 | default 56 | required 57 | } 58 | }`).then(result => { 59 | return (result?.getServiceConfig || []).map(entry => { 60 | entry.default = JSON.parse(entry.default) 61 | entry.key = entry.code 62 | return entry 63 | }) 64 | }) 65 | }, 66 | 67 | 68 | decorate(name) { 69 | if(!(new String(this.item['service.provider'])).includes(name)) { 70 | this.item['service.provider'] = this.item['service.provider'] + ',' + name 71 | } 72 | }, 73 | 74 | 75 | toggle() { 76 | this.show = Aimeos.session('aimeos/jqadm/item/form', +!this.show) 77 | } 78 | } 79 | } 80 | }; 81 | 82 | 83 | 84 | document.addEventListener("DOMContentLoaded", function() { 85 | Aimeos.Service.init(); 86 | }); 87 | -------------------------------------------------------------------------------- /js/components/nav-search.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2025 4 | */ 5 | 6 | 7 | Aimeos.components['nav-search'] = { 8 | template: '#nav-search', 9 | props: { 10 | 'attributes': {type: Object, required: true}, 11 | 'filter': {type: Object, required: true}, 12 | 'name': {type: String, required: true}, 13 | 'operators': {type: Object, required: true}, 14 | 'show': {type: Boolean, default: false}, 15 | 'url': {type: String, required: true}, 16 | }, 17 | data() { 18 | return { 19 | 'key': null, 20 | 'op': null, 21 | 'ops': { 22 | 'string': ['=~', '~=', '==', '!='], 23 | 'int': ['==', '!=', '>', '<', '>=', '<='], 24 | 'integer': ['==', '!=', '>', '<', '>=', '<='], 25 | 'datetime': ['>', '<', '>=', '<=', '==', '!='], 26 | 'date': ['>', '<', '>=', '<=', '==', '!='], 27 | 'float': ['>', '<', '>=', '<=', '==', '!='], 28 | 'boolean': ['==', '!='], 29 | 'bool': ['==', '!='] 30 | }, 31 | 'type': 'text', 32 | } 33 | }, 34 | beforeMount() { 35 | this.key = this.filter['key'] && this.filter['key'][0] || Object.keys(this.attributes).shift(); 36 | this.op = this.filter['op'] && this.filter['op'][0] || null; 37 | }, 38 | computed: { 39 | oplist() { 40 | const type = this.key && this.attributes[this.key] && this.attributes[this.key]['type'] || 'string'; 41 | let entries = {}; 42 | 43 | (this.ops[type] || []).forEach( function(val) { 44 | entries[val] = this.operators[val] || ''; 45 | }, this); 46 | 47 | return entries; 48 | } 49 | }, 50 | watch: { 51 | key(key) { 52 | const type = this.attributes[key] && this.attributes[key]['type'] || 'string'; 53 | 54 | switch(type) { 55 | case 'bool': 56 | case 'boolean': 57 | case 'decimal': 58 | case 'integer': 59 | case 'int': 60 | case 'float': 61 | this.type = 'number'; break; 62 | case 'date': 63 | this.type = 'date'; break; 64 | case 'datetime': 65 | this.type = 'datetime-local'; break; 66 | default: 67 | this.type = 'text'; break; 68 | } 69 | 70 | if((this.ops[type] || []).indexOf(this.op) === -1) { 71 | [this.op] = this.ops[type]; 72 | } 73 | } 74 | } 75 | }; 76 | -------------------------------------------------------------------------------- /i18n/code/ko.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Aimeos, 2025 7 | # Aimeos, 2025 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: Aimeos, 2025\n" 15 | "Language-Team: Korean (http://app.transifex.com/aimeos/aimeos-core/language/ko/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: ko\n" 20 | "Plural-Forms: nplurals=1; plural=0;\n" 21 | 22 | msgid "!=" 23 | msgstr "!=" 24 | 25 | msgid "<" 26 | msgstr "<" 27 | 28 | msgid "<=" 29 | msgstr "<=" 30 | 31 | msgid "==" 32 | msgstr "==" 33 | 34 | msgid "=~" 35 | msgstr "=~" 36 | 37 | msgid ">" 38 | msgstr ">" 39 | 40 | msgid ">=" 41 | msgstr ">=" 42 | 43 | msgid "~=" 44 | msgstr "~=" 45 | 46 | msgid "address:delivery" 47 | msgstr "배송 주소" 48 | 49 | msgid "address:payment" 50 | msgstr "청구지" 51 | 52 | msgid "service:delivery" 53 | msgstr "배송" 54 | 55 | msgid "service:payment" 56 | msgstr "결제" 57 | 58 | msgid "attribute" 59 | msgstr "속성" 60 | 61 | msgid "basket" 62 | msgstr "바구니" 63 | 64 | msgid "catalog" 65 | msgstr "카탈로그" 66 | 67 | msgid "coupon" 68 | msgstr "쿠폰" 69 | 70 | msgid "customer" 71 | msgstr "고객" 72 | 73 | msgid "group" 74 | msgstr "그룹" 75 | 76 | msgid "locale" 77 | msgstr "로캘" 78 | 79 | msgid "media" 80 | msgstr "미디어" 81 | 82 | msgid "order" 83 | msgstr "주문" 84 | 85 | msgid "plugin" 86 | msgstr "플러그인" 87 | 88 | msgid "price" 89 | msgstr "가격" 90 | 91 | msgid "product" 92 | msgstr "제품" 93 | 94 | msgid "review" 95 | msgstr "리뷰" 96 | 97 | msgid "rule" 98 | msgstr "규칙" 99 | 100 | msgid "service" 101 | msgstr "서비스" 102 | 103 | msgid "stock" 104 | msgstr "재고" 105 | 106 | msgid "subscription" 107 | msgstr "구독" 108 | 109 | msgid "supplier" 110 | msgstr "공급업체" 111 | 112 | msgid "tag" 113 | msgstr "태그" 114 | 115 | msgid "text" 116 | msgstr "텍스트" 117 | 118 | msgid "type" 119 | msgstr "유형" 120 | -------------------------------------------------------------------------------- /src/Admin/JQAdm/Common/Decorator/Page.php: -------------------------------------------------------------------------------- 1 | pageParams = $this->getClientParams(); 34 | $context = $this->context(); 35 | 36 | $siteManager = \Aimeos\MShop::create( $context, 'locale/site' ); 37 | $langManager = \Aimeos\MShop::create( $context, 'locale/language' ); 38 | 39 | if( $user = $context->user() ) 40 | { 41 | $siteid = $user->getSiteId(); 42 | $view->pageUserSiteid = $siteid; 43 | 44 | $search = $siteManager->filter(); 45 | $search->add( $search->and( [ 46 | $search->is( 'locale.site.code', '==', $view->param( 'site', 'default' ) ), 47 | $search->is( 'locale.site.siteid', $view->access( ['admin'] ) ? '=~' : '==', $siteid ) 48 | ] ) )->slice( 0, 1 ); 49 | 50 | $siteItem = $siteManager->search( $search )->first(); 51 | } 52 | else 53 | { 54 | $siteItem = $siteManager->find( $view->param( 'site', 'default' ) ); 55 | } 56 | 57 | $view->pageInfo = $context->session()->pull( 'info', [] ); 58 | $view->pageI18nList = $this->getAimeos()->getI18nList( 'admin' ); 59 | $view->pageLangItems = $langManager->search( $langManager->filter( true ) ); 60 | $view->pageNumberStep = 1 / pow( 10, $context->config()->get( 'mshop/price/precision', 2 ) ); 61 | $view->pageSitePath = $siteManager->getPath( $siteItem->getId() ); 62 | $view->pageSiteItem = $siteItem; 63 | 64 | $this->getClient()->setView( $view ); 65 | return $this; 66 | } 67 | } 68 | -------------------------------------------------------------------------------- /i18n/code/zh.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Bruce Liu , 2016 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: Bruce Liu , 2016\n" 14 | "Language-Team: Chinese (http://app.transifex.com/aimeos/aimeos-core/language/zh/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: zh\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | 21 | msgid "!=" 22 | msgstr "不等於" 23 | 24 | msgid "<" 25 | msgstr "小於" 26 | 27 | msgid "<=" 28 | msgstr "小於(等於)" 29 | 30 | msgid "==" 31 | msgstr "等於" 32 | 33 | msgid "=~" 34 | msgstr "開頭" 35 | 36 | msgid ">" 37 | msgstr "大於" 38 | 39 | msgid ">=" 40 | msgstr "大於(等於)" 41 | 42 | msgid "~=" 43 | msgstr "包含" 44 | 45 | msgid "address:delivery" 46 | msgstr "配送地址" 47 | 48 | msgid "address:payment" 49 | msgstr "帳單地址" 50 | 51 | msgid "service:delivery" 52 | msgstr "運送" 53 | 54 | msgid "service:payment" 55 | msgstr "支付" 56 | 57 | msgid "attribute" 58 | msgstr "特质" 59 | 60 | msgid "basket" 61 | msgstr "笼" 62 | 63 | msgid "catalog" 64 | msgstr "编目" 65 | 66 | msgid "coupon" 67 | msgstr "优惠券" 68 | 69 | msgid "customer" 70 | msgstr "顾客" 71 | 72 | msgid "group" 73 | msgstr "组" 74 | 75 | msgid "locale" 76 | msgstr "地点" 77 | 78 | msgid "media" 79 | msgstr "媒体" 80 | 81 | msgid "order" 82 | msgstr "订单" 83 | 84 | msgid "plugin" 85 | msgstr "插头" 86 | 87 | msgid "price" 88 | msgstr "价格" 89 | 90 | msgid "product" 91 | msgstr "产品" 92 | 93 | msgid "review" 94 | msgstr "审查" 95 | 96 | msgid "rule" 97 | msgstr "规则" 98 | 99 | msgid "service" 100 | msgstr "服务" 101 | 102 | msgid "stock" 103 | msgstr "股票" 104 | 105 | msgid "subscription" 106 | msgstr "订阅费" 107 | 108 | msgid "supplier" 109 | msgstr "供货商" 110 | 111 | msgid "tag" 112 | msgstr "标签" 113 | 114 | msgid "text" 115 | msgstr "文本" 116 | 117 | msgid "type" 118 | msgstr "类型" 119 | -------------------------------------------------------------------------------- /templates/admin/jqadm/columns.php: -------------------------------------------------------------------------------- 1 | encoder(); 19 | $names = array_merge( (array) $this->get( 'group', [] ), ['fields', ''] ); 20 | 21 | 22 | ?> 23 |
24 | 63 |
64 | -------------------------------------------------------------------------------- /i18n/code/fa.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # محمد مسعودزاده, 2021 7 | # محمد مسعودزاده, 2021 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: محمد مسعودزاده, 2021\n" 15 | "Language-Team: Persian (http://app.transifex.com/aimeos/aimeos-core/language/fa/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: fa\n" 20 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 21 | 22 | msgid "!=" 23 | msgstr "برابر نیست" 24 | 25 | msgid "<" 26 | msgstr "قبل از" 27 | 28 | msgid "<=" 29 | msgstr "قبل از (شامل)" 30 | 31 | msgid "==" 32 | msgstr "برابر است" 33 | 34 | msgid "=~" 35 | msgstr "شروع می شود با" 36 | 37 | msgid ">" 38 | msgstr "بعد از" 39 | 40 | msgid ">=" 41 | msgstr "پس از (شامل)" 42 | 43 | msgid "~=" 44 | msgstr "شامل" 45 | 46 | msgid "address:delivery" 47 | msgstr "آدرس تحویل" 48 | 49 | msgid "address:payment" 50 | msgstr "آدرس صورتحساب" 51 | 52 | msgid "service:delivery" 53 | msgstr "تحویل" 54 | 55 | msgid "service:payment" 56 | msgstr "پرداخت" 57 | 58 | msgid "attribute" 59 | msgstr "" 60 | 61 | msgid "basket" 62 | msgstr "" 63 | 64 | msgid "catalog" 65 | msgstr "" 66 | 67 | msgid "coupon" 68 | msgstr "" 69 | 70 | msgid "customer" 71 | msgstr "" 72 | 73 | msgid "group" 74 | msgstr "" 75 | 76 | msgid "locale" 77 | msgstr "" 78 | 79 | msgid "media" 80 | msgstr "" 81 | 82 | msgid "order" 83 | msgstr "سفارش" 84 | 85 | msgid "plugin" 86 | msgstr "" 87 | 88 | msgid "price" 89 | msgstr "" 90 | 91 | msgid "product" 92 | msgstr "" 93 | 94 | msgid "review" 95 | msgstr "مرور" 96 | 97 | msgid "rule" 98 | msgstr "" 99 | 100 | msgid "service" 101 | msgstr "" 102 | 103 | msgid "stock" 104 | msgstr "" 105 | 106 | msgid "subscription" 107 | msgstr "" 108 | 109 | msgid "supplier" 110 | msgstr "" 111 | 112 | msgid "tag" 113 | msgstr "" 114 | 115 | msgid "text" 116 | msgstr "" 117 | 118 | msgid "type" 119 | msgstr "" 120 | -------------------------------------------------------------------------------- /i18n/code/ja.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Darshan Sampat , 2018 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: Darshan Sampat , 2018\n" 14 | "Language-Team: Japanese (http://app.transifex.com/aimeos/aimeos-core/language/ja/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: ja\n" 19 | "Plural-Forms: nplurals=1; plural=0;\n" 20 | 21 | msgid "!=" 22 | msgstr "等しくない" 23 | 24 | msgid "<" 25 | msgstr "前" 26 | 27 | msgid "<=" 28 | msgstr "前(含む)" 29 | 30 | msgid "==" 31 | msgstr "等しい" 32 | 33 | msgid "=~" 34 | msgstr "で始まる" 35 | 36 | msgid ">" 37 | msgstr "後" 38 | 39 | msgid ">=" 40 | msgstr "後(含む)" 41 | 42 | msgid "~=" 43 | msgstr "含まれる" 44 | 45 | msgid "address:delivery" 46 | msgstr "配達先" 47 | 48 | msgid "address:payment" 49 | msgstr "請求先住所" 50 | 51 | msgid "service:delivery" 52 | msgstr "配達" 53 | 54 | msgid "service:payment" 55 | msgstr "支払い" 56 | 57 | msgid "attribute" 58 | msgstr "属性" 59 | 60 | msgid "basket" 61 | msgstr "バスケット" 62 | 63 | msgid "catalog" 64 | msgstr "カタログ" 65 | 66 | msgid "coupon" 67 | msgstr "クーポン" 68 | 69 | msgid "customer" 70 | msgstr "顧客" 71 | 72 | msgid "group" 73 | msgstr "グループ" 74 | 75 | msgid "locale" 76 | msgstr "ロケール" 77 | 78 | msgid "media" 79 | msgstr "メディア" 80 | 81 | msgid "order" 82 | msgstr "オーダー" 83 | 84 | msgid "plugin" 85 | msgstr "プラグイン" 86 | 87 | msgid "price" 88 | msgstr "価格" 89 | 90 | msgid "product" 91 | msgstr "製品" 92 | 93 | msgid "review" 94 | msgstr "レビュー" 95 | 96 | msgid "rule" 97 | msgstr "ルール" 98 | 99 | msgid "service" 100 | msgstr "サービス" 101 | 102 | msgid "stock" 103 | msgstr "在庫" 104 | 105 | msgid "subscription" 106 | msgstr "サブスクリプション" 107 | 108 | msgid "supplier" 109 | msgstr "サプライヤー" 110 | 111 | msgid "tag" 112 | msgstr "タグ" 113 | 114 | msgid "text" 115 | msgstr "テキスト" 116 | 117 | msgid "type" 118 | msgstr "タイプ" 119 | -------------------------------------------------------------------------------- /i18n/code/sv.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: Swedish (http://app.transifex.com/aimeos/aimeos-core/language/sv/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: sv\n" 18 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 19 | 20 | msgid "!=" 21 | msgstr "!=" 22 | 23 | msgid "<" 24 | msgstr "<" 25 | 26 | msgid "<=" 27 | msgstr "<=" 28 | 29 | msgid "==" 30 | msgstr "==" 31 | 32 | msgid "=~" 33 | msgstr "=~" 34 | 35 | msgid ">" 36 | msgstr ">" 37 | 38 | msgid ">=" 39 | msgstr ">=" 40 | 41 | msgid "~=" 42 | msgstr "~=" 43 | 44 | msgid "address:delivery" 45 | msgstr "Leveransadress" 46 | 47 | msgid "address:payment" 48 | msgstr "Faktureringsadress" 49 | 50 | msgid "service:delivery" 51 | msgstr "Leverans" 52 | 53 | msgid "service:payment" 54 | msgstr "Betalning" 55 | 56 | msgid "attribute" 57 | msgstr "attribut" 58 | 59 | msgid "basket" 60 | msgstr "korg" 61 | 62 | msgid "catalog" 63 | msgstr "katalog" 64 | 65 | msgid "coupon" 66 | msgstr "kupong" 67 | 68 | msgid "customer" 69 | msgstr "kund" 70 | 71 | msgid "group" 72 | msgstr "grupp" 73 | 74 | msgid "locale" 75 | msgstr "lokal" 76 | 77 | msgid "media" 78 | msgstr "media" 79 | 80 | msgid "order" 81 | msgstr "ordning" 82 | 83 | msgid "plugin" 84 | msgstr "plugin" 85 | 86 | msgid "price" 87 | msgstr "pris" 88 | 89 | msgid "product" 90 | msgstr "Produkt" 91 | 92 | msgid "review" 93 | msgstr "granskning" 94 | 95 | msgid "rule" 96 | msgstr "Regel" 97 | 98 | msgid "service" 99 | msgstr "service" 100 | 101 | msgid "stock" 102 | msgstr "lager" 103 | 104 | msgid "subscription" 105 | msgstr "prenumeration" 106 | 107 | msgid "supplier" 108 | msgstr "leverantör" 109 | 110 | msgid "tag" 111 | msgstr "tagg" 112 | 113 | msgid "text" 114 | msgstr "text" 115 | 116 | msgid "type" 117 | msgstr "typ" 118 | -------------------------------------------------------------------------------- /i18n/code/fi.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Aimeos, 2025 7 | # Aimeos, 2025 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: Aimeos, 2025\n" 15 | "Language-Team: Finnish (http://app.transifex.com/aimeos/aimeos-core/language/fi/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: fi\n" 20 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 21 | 22 | msgid "!=" 23 | msgstr "!=" 24 | 25 | msgid "<" 26 | msgstr "<" 27 | 28 | msgid "<=" 29 | msgstr "<=" 30 | 31 | msgid "==" 32 | msgstr "==" 33 | 34 | msgid "=~" 35 | msgstr "=~" 36 | 37 | msgid ">" 38 | msgstr ">" 39 | 40 | msgid ">=" 41 | msgstr ">=" 42 | 43 | msgid "~=" 44 | msgstr "~=" 45 | 46 | msgid "address:delivery" 47 | msgstr "Toimitusosoite" 48 | 49 | msgid "address:payment" 50 | msgstr "Laskutusosoite" 51 | 52 | msgid "service:delivery" 53 | msgstr "Toimitus" 54 | 55 | msgid "service:payment" 56 | msgstr "Maksu" 57 | 58 | msgid "attribute" 59 | msgstr "attribuutti" 60 | 61 | msgid "basket" 62 | msgstr "kori" 63 | 64 | msgid "catalog" 65 | msgstr "luettelo" 66 | 67 | msgid "coupon" 68 | msgstr "kuponki" 69 | 70 | msgid "customer" 71 | msgstr "asiakas" 72 | 73 | msgid "group" 74 | msgstr "ryhmä" 75 | 76 | msgid "locale" 77 | msgstr "locale" 78 | 79 | msgid "media" 80 | msgstr "media" 81 | 82 | msgid "order" 83 | msgstr "tilaus" 84 | 85 | msgid "plugin" 86 | msgstr "lisäosa" 87 | 88 | msgid "price" 89 | msgstr "hinta" 90 | 91 | msgid "product" 92 | msgstr "tuote" 93 | 94 | msgid "review" 95 | msgstr "arvostelu" 96 | 97 | msgid "rule" 98 | msgstr "sääntö" 99 | 100 | msgid "service" 101 | msgstr "palvelu" 102 | 103 | msgid "stock" 104 | msgstr "varasto" 105 | 106 | msgid "subscription" 107 | msgstr "tilaus" 108 | 109 | msgid "supplier" 110 | msgstr "toimittaja" 111 | 112 | msgid "tag" 113 | msgstr "tag" 114 | 115 | msgid "text" 116 | msgstr "teksti" 117 | 118 | msgid "type" 119 | msgstr "tyyppi" 120 | -------------------------------------------------------------------------------- /i18n/code/th.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: Thai (http://app.transifex.com/aimeos/aimeos-core/language/th/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: th\n" 18 | "Plural-Forms: nplurals=1; plural=0;\n" 19 | 20 | msgid "!=" 21 | msgstr "ไม่เท่ากับ" 22 | 23 | msgid "<" 24 | msgstr "<" 25 | 26 | msgid "<=" 27 | msgstr "<=" 28 | 29 | msgid "==" 30 | msgstr "==" 31 | 32 | msgid "=~" 33 | msgstr "=~" 34 | 35 | msgid ">" 36 | msgstr ">" 37 | 38 | msgid ">=" 39 | msgstr ">=" 40 | 41 | msgid "~=" 42 | msgstr "~=" 43 | 44 | msgid "address:delivery" 45 | msgstr "ที่อยู่สำหรับการจัดส่ง" 46 | 47 | msgid "address:payment" 48 | msgstr "ที่อยู่สำหรับออกใบแจ้งหนี้" 49 | 50 | msgid "service:delivery" 51 | msgstr "การจัดส่ง" 52 | 53 | msgid "service:payment" 54 | msgstr "การชำระเงิน" 55 | 56 | msgid "attribute" 57 | msgstr "คุณลักษณะ" 58 | 59 | msgid "basket" 60 | msgstr "ตะกร้า" 61 | 62 | msgid "catalog" 63 | msgstr "แคตตาล็อก" 64 | 65 | msgid "coupon" 66 | msgstr "คูปอง" 67 | 68 | msgid "customer" 69 | msgstr "ลูกค้า" 70 | 71 | msgid "group" 72 | msgstr "กลุ่ม" 73 | 74 | msgid "locale" 75 | msgstr "โลคัล" 76 | 77 | msgid "media" 78 | msgstr "สื่อ" 79 | 80 | msgid "order" 81 | msgstr "คำสั่ง" 82 | 83 | msgid "plugin" 84 | msgstr "ปลั๊กอิน" 85 | 86 | msgid "price" 87 | msgstr "ราคา" 88 | 89 | msgid "product" 90 | msgstr "ผลิตภัณฑ์" 91 | 92 | msgid "review" 93 | msgstr "ทบทวน" 94 | 95 | msgid "rule" 96 | msgstr "กฎ" 97 | 98 | msgid "service" 99 | msgstr "บริการ" 100 | 101 | msgid "stock" 102 | msgstr "สต็อก" 103 | 104 | msgid "subscription" 105 | msgstr "การสมัครสมาชิก" 106 | 107 | msgid "supplier" 108 | msgstr "ผู้จัดหา" 109 | 110 | msgid "tag" 111 | msgstr "แท็ก" 112 | 113 | msgid "text" 114 | msgstr "ข้อความ" 115 | 116 | msgid "type" 117 | msgstr "ประเภท" 118 | -------------------------------------------------------------------------------- /i18n/code/et.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Aimeos, 2025 7 | # Aimeos, 2025 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: Aimeos, 2025\n" 15 | "Language-Team: Estonian (http://app.transifex.com/aimeos/aimeos-core/language/et/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: et\n" 20 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 21 | 22 | msgid "!=" 23 | msgstr "!=" 24 | 25 | msgid "<" 26 | msgstr "<" 27 | 28 | msgid "<=" 29 | msgstr "<=" 30 | 31 | msgid "==" 32 | msgstr "==" 33 | 34 | msgid "=~" 35 | msgstr "=~" 36 | 37 | msgid ">" 38 | msgstr ">" 39 | 40 | msgid ">=" 41 | msgstr ">=" 42 | 43 | msgid "~=" 44 | msgstr "~=" 45 | 46 | msgid "address:delivery" 47 | msgstr "Saadetise kättetoimetamise aadress" 48 | 49 | msgid "address:payment" 50 | msgstr "Arve esitamise aadress" 51 | 52 | msgid "service:delivery" 53 | msgstr "Saadetis" 54 | 55 | msgid "service:payment" 56 | msgstr "Makse" 57 | 58 | msgid "attribute" 59 | msgstr "atribuut" 60 | 61 | msgid "basket" 62 | msgstr "Korv" 63 | 64 | msgid "catalog" 65 | msgstr "kataloog" 66 | 67 | msgid "coupon" 68 | msgstr "kupong" 69 | 70 | msgid "customer" 71 | msgstr "klient" 72 | 73 | msgid "group" 74 | msgstr "grupp" 75 | 76 | msgid "locale" 77 | msgstr "locale" 78 | 79 | msgid "media" 80 | msgstr "meedia" 81 | 82 | msgid "order" 83 | msgstr "tellimus" 84 | 85 | msgid "plugin" 86 | msgstr "plugin" 87 | 88 | msgid "price" 89 | msgstr "hind" 90 | 91 | msgid "product" 92 | msgstr "toode" 93 | 94 | msgid "review" 95 | msgstr "vaadata" 96 | 97 | msgid "rule" 98 | msgstr "reegel" 99 | 100 | msgid "service" 101 | msgstr "teenus" 102 | 103 | msgid "stock" 104 | msgstr "varu" 105 | 106 | msgid "subscription" 107 | msgstr "tellimus" 108 | 109 | msgid "supplier" 110 | msgstr "tarnija" 111 | 112 | msgid "tag" 113 | msgstr "tag" 114 | 115 | msgid "text" 116 | msgstr "tekst" 117 | 118 | msgid "type" 119 | msgstr "tüüp" 120 | -------------------------------------------------------------------------------- /js/customer.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2024 4 | */ 5 | 6 | 7 | 8 | Aimeos.Customer = { 9 | 10 | init() { 11 | const node = document.querySelector('.item-customer #basic'); 12 | 13 | if(node) { 14 | Aimeos.apps['customer'] = Aimeos.app({ 15 | props: { 16 | data: {type: String, default: '{}'}, 17 | groups: {type: String, default: '{}'}, 18 | siteid: {type: String, default: ''}, 19 | super: {type: Number, default: 0}, 20 | }, 21 | data() { 22 | return { 23 | item: null, 24 | groupList: {} 25 | } 26 | }, 27 | beforeMount() { 28 | this.Aimeos = Aimeos; 29 | this.item = JSON.parse(this.data) || {}; 30 | this.groupList = JSON.parse(this.groups) || {}; 31 | }, 32 | mixins: [this.mixins] 33 | }, {...node.dataset || {}}).mount(node); 34 | } 35 | }, 36 | 37 | 38 | mixins: { 39 | computed: { 40 | list() { 41 | const list = [] 42 | for(const id of (this.item['groups'] || [])) { 43 | list.push({id: id, code: this.groupList[id] ? this.groupList[id]['group.code'] : id}) 44 | } 45 | return list 46 | } 47 | }, 48 | methods: { 49 | can(action) { 50 | return this.super || Aimeos.can(action, this.item['customer.siteid'] || null, this.siteid) 51 | }, 52 | 53 | 54 | clear() { 55 | this.item['groups'] = [] 56 | }, 57 | 58 | 59 | deselect(option) { 60 | const idx = this.item.groups?.indexOf(option.id) 61 | if(idx !== -1) this.item.groups?.splice(idx, 1) 62 | }, 63 | 64 | 65 | fetch(query) { 66 | const filter = {'||': [ 67 | {'==': {'group.id': query}}, 68 | {'=~': {'group.code': query}}, 69 | {'=~': {'group.label': query}} 70 | ]} 71 | return Aimeos.graphql(`query { 72 | searchGroups(filter: ` + JSON.stringify(JSON.stringify(filter)) + `) { 73 | items { 74 | id 75 | code 76 | label 77 | } 78 | } 79 | }`).then(result => { 80 | return (result?.searchGroups?.items || []) 81 | }) 82 | }, 83 | 84 | 85 | use(option) { 86 | const idx = this.item.groups.indexOf(option.id) 87 | if(idx === -1) this.item.groups.push(option.id) 88 | } 89 | } 90 | } 91 | }; 92 | 93 | 94 | 95 | document.addEventListener("DOMContentLoaded", function() { 96 | Aimeos.Customer.init(); 97 | }); 98 | -------------------------------------------------------------------------------- /i18n/code/nb.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Aimeos, 2025 7 | # Aimeos, 2025 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: Aimeos, 2025\n" 15 | "Language-Team: Norwegian Bokmål (http://app.transifex.com/aimeos/aimeos-core/language/nb/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: nb\n" 20 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 21 | 22 | msgid "!=" 23 | msgstr "!=" 24 | 25 | msgid "<" 26 | msgstr "<" 27 | 28 | msgid "<=" 29 | msgstr "<=" 30 | 31 | msgid "==" 32 | msgstr "==" 33 | 34 | msgid "=~" 35 | msgstr "=~" 36 | 37 | msgid ">" 38 | msgstr ">" 39 | 40 | msgid ">=" 41 | msgstr ">=" 42 | 43 | msgid "~=" 44 | msgstr "~=" 45 | 46 | msgid "address:delivery" 47 | msgstr "Leveringsadresse" 48 | 49 | msgid "address:payment" 50 | msgstr "Faktureringsadresse" 51 | 52 | msgid "service:delivery" 53 | msgstr "Levering" 54 | 55 | msgid "service:payment" 56 | msgstr "Betaling" 57 | 58 | msgid "attribute" 59 | msgstr "attributt" 60 | 61 | msgid "basket" 62 | msgstr "kurv" 63 | 64 | msgid "catalog" 65 | msgstr "katalog" 66 | 67 | msgid "coupon" 68 | msgstr "kupong" 69 | 70 | msgid "customer" 71 | msgstr "kunde" 72 | 73 | msgid "group" 74 | msgstr "gruppe" 75 | 76 | msgid "locale" 77 | msgstr "lokalitet" 78 | 79 | msgid "media" 80 | msgstr "medier" 81 | 82 | msgid "order" 83 | msgstr "rekkefølge" 84 | 85 | msgid "plugin" 86 | msgstr "plugin" 87 | 88 | msgid "price" 89 | msgstr "pris" 90 | 91 | msgid "product" 92 | msgstr "produkt" 93 | 94 | msgid "review" 95 | msgstr "gjennomgang" 96 | 97 | msgid "rule" 98 | msgstr "styre" 99 | 100 | msgid "service" 101 | msgstr "service" 102 | 103 | msgid "stock" 104 | msgstr "lager" 105 | 106 | msgid "subscription" 107 | msgstr "abonnement" 108 | 109 | msgid "supplier" 110 | msgstr "leverandør" 111 | 112 | msgid "tag" 113 | msgstr "merke" 114 | 115 | msgid "text" 116 | msgstr "tekst" 117 | 118 | msgid "type" 119 | msgstr "type" 120 | -------------------------------------------------------------------------------- /templates/admin/jqadm/dashboard/list-job.php: -------------------------------------------------------------------------------- 1 | encoder(); 9 | $params = $this->param(); 10 | $items = $this->get( 'jobItems', map() ); 11 | 12 | 13 | ?> 14 | isEmpty() ) : ?> 15 |
16 |
17 |
18 |
21 |
22 |
23 |
24 |

25 | html( $this->translate( 'admin', 'Import/Export jobs' ) ) ?> 26 |

27 |
28 |
29 | 30 | 31 | $item ) : ?> 32 | 33 | 34 | 35 | 50 | 51 | 52 | 53 |
html( $item->getLabel() ) ?>html( $item->getTimeModified() ) ?> 36 | site()->readonly( $item->getSiteId() ) ) : ?> 37 |
38 | csrf()->formfield() ?> 39 | 43 |
44 | 45 | 49 |
54 |
55 |
56 |
57 |
58 | -------------------------------------------------------------------------------- /i18n/code/el.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Aimeos, 2025 7 | # Aimeos, 2025 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: Aimeos, 2025\n" 15 | "Language-Team: Greek (http://app.transifex.com/aimeos/aimeos-core/language/el/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: el\n" 20 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 21 | 22 | msgid "!=" 23 | msgstr "!=" 24 | 25 | msgid "<" 26 | msgstr "<" 27 | 28 | msgid "<=" 29 | msgstr "<=" 30 | 31 | msgid "==" 32 | msgstr "==" 33 | 34 | msgid "=~" 35 | msgstr "=~" 36 | 37 | msgid ">" 38 | msgstr ">" 39 | 40 | msgid ">=" 41 | msgstr ">=" 42 | 43 | msgid "~=" 44 | msgstr "~=" 45 | 46 | msgid "address:delivery" 47 | msgstr "Διεύθυνση παράδοσης" 48 | 49 | msgid "address:payment" 50 | msgstr "Διεύθυνση χρέωσης" 51 | 52 | msgid "service:delivery" 53 | msgstr "Παράδοση" 54 | 55 | msgid "service:payment" 56 | msgstr "Πληρωμή" 57 | 58 | msgid "attribute" 59 | msgstr "χαρακτηριστικό" 60 | 61 | msgid "basket" 62 | msgstr "καλάθι" 63 | 64 | msgid "catalog" 65 | msgstr "Κατάλογος" 66 | 67 | msgid "coupon" 68 | msgstr "κουπόνι" 69 | 70 | msgid "customer" 71 | msgstr "πελάτης" 72 | 73 | msgid "group" 74 | msgstr "ομάδα" 75 | 76 | msgid "locale" 77 | msgstr "locale" 78 | 79 | msgid "media" 80 | msgstr "μέσα ενημέρωσης" 81 | 82 | msgid "order" 83 | msgstr "παραγγελία" 84 | 85 | msgid "plugin" 86 | msgstr "plugin" 87 | 88 | msgid "price" 89 | msgstr "τιμή" 90 | 91 | msgid "product" 92 | msgstr "προϊόν" 93 | 94 | msgid "review" 95 | msgstr "αναθεώρηση" 96 | 97 | msgid "rule" 98 | msgstr "κανόνας" 99 | 100 | msgid "service" 101 | msgstr "υπηρεσία" 102 | 103 | msgid "stock" 104 | msgstr "απόθεμα" 105 | 106 | msgid "subscription" 107 | msgstr "συνδρομή" 108 | 109 | msgid "supplier" 110 | msgstr "προμηθευτής" 111 | 112 | msgid "tag" 113 | msgstr "ετικέτα" 114 | 115 | msgid "text" 116 | msgstr "κείμενο" 117 | 118 | msgid "type" 119 | msgstr "τύπος" 120 | -------------------------------------------------------------------------------- /templates/admin/jqadm/listhead.php: -------------------------------------------------------------------------------- 1 | $params] : $params; 25 | }; 26 | 27 | $sort = function( $sortcode, $code ) { 28 | return ( $sortcode === $code ? '-' . $code : $code ); 29 | }; 30 | 31 | $sortclass = function( $sortcode, $code ) { 32 | if( $sortcode === $code ) { 33 | return 'icon sort-asc'; 34 | } 35 | if( $sortcode === '-' . $code ) { 36 | return 'icon sort-desc'; 37 | } 38 | }; 39 | 40 | 41 | $enc = $this->encoder(); 42 | 43 | $fields = $this->get( 'fields', [] ); 44 | $params = $this->get( 'params', [] ); 45 | $fragment = (array) $this->get( 'fragment', [] ); 46 | $sortcode = $this->get( 'sort' ); 47 | $group = $this->get( 'group' ); 48 | 49 | 50 | if( $this->get( 'action' ) === 'get' ) 51 | { 52 | if( isset( $params['id'] ) ) { 53 | $cfgkey = 'admin/jqadm/url/get'; 54 | } else { 55 | $cfgkey = 'admin/jqadm/url/create'; 56 | } 57 | } 58 | else 59 | { 60 | $cfgkey = 'admin/jqadm/url/search'; 61 | } 62 | 63 | 64 | ?> 65 | get( 'data', [] ) as $key => $name ) : ?> 66 | 67 | 68 | 69 | 71 | html( $name ) ?> 72 | 73 | 74 | html( $name ) ?> 75 | 76 | 77 | 78 | 79 | -------------------------------------------------------------------------------- /js/components/imagegen.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @license LGPLv3, http://opensource.org/licenses/LGPL-3.0 3 | * @copyright Aimeos (aimeos.org), 2017-2025 4 | */ 5 | 6 | 7 | Aimeos.components['imagegen'] = { 8 | template: '#imagegen', 9 | emits: ['close', 'confirm'], 10 | props: { 11 | 'config': {type: Object, required: true}, 12 | 'show': {type: Boolean, default: false} 13 | }, 14 | data() { 15 | return { 16 | prompt: '', 17 | loading: false, 18 | missing: false, 19 | size: '1792x1024', 20 | style: 'natural', 21 | selected: 0, 22 | images: [], 23 | } 24 | }, 25 | methods: { 26 | async generate() { 27 | if(!this.config['key']) { 28 | alert('Add the OpenAI API key in the Setting > API panel first'); 29 | return; 30 | } 31 | 32 | if(!this.prompt.trim().length) { 33 | this.missing = true; 34 | return; 35 | } else { 36 | this.missing = false; 37 | } 38 | 39 | this.loading = true; 40 | 41 | await fetch(this.config['image-url'] || 'https://api.openai.com/v1/images/generations', { 42 | body: JSON.stringify({ 43 | model: this.config['image-model'] || 'dall-e-3', 44 | response_format: 'b64_json', 45 | prompt: this.prompt, 46 | style: this.style, 47 | size: this.size, 48 | }), 49 | headers: { 50 | 'Content-Type': 'application/json', 51 | 'Authorization': 'Bearer ' + this.config['key'] 52 | }, 53 | method: 'POST' 54 | }).then(response => { 55 | if(!response.ok) { 56 | throw new Error(`${response.status}: ${response.statusText}`) 57 | } 58 | return response.json(); 59 | }).then(result => { 60 | for(const item of result.data) { 61 | if(item.b64_json) { 62 | const file = new File([Uint8Array.from(atob(item.b64_json), (m) => m.codePointAt(0))], new Date().getTime() + '.png', { 63 | lastModified: new Date().getTime(), 64 | type: 'image/png' 65 | }); 66 | this.images.push({ 67 | file: file, 68 | url: URL.createObjectURL(file), 69 | prompt: this.prompt, 70 | usedprompt: item.revised_prompt 71 | }); 72 | } 73 | } 74 | 75 | if(this.images.length) { 76 | this.selected = this.images.length - 1; 77 | this.prompt = this.images[this.selected].usedprompt; 78 | } 79 | }).finally(() => { 80 | this.loading = false; 81 | }).catch((error) => { 82 | alert(error); 83 | }); 84 | } 85 | } 86 | }; 87 | -------------------------------------------------------------------------------- /i18n/code/he.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # shmuel adler, 2024 7 | # shmuel adler, 2024 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: shmuel adler, 2024\n" 15 | "Language-Team: Hebrew (http://app.transifex.com/aimeos/aimeos-core/language/he/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: he\n" 20 | "Plural-Forms: nplurals=3; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: 2;\n" 21 | 22 | msgid "!=" 23 | msgstr "לא שווה" 24 | 25 | msgid "<" 26 | msgstr "לפני" 27 | 28 | msgid "<=" 29 | msgstr "לפני (כולל)" 30 | 31 | msgid "==" 32 | msgstr "שווה" 33 | 34 | msgid "=~" 35 | msgstr "מתחיל מ-" 36 | 37 | msgid ">" 38 | msgstr "אחרי" 39 | 40 | msgid ">=" 41 | msgstr "אחרי (כולל)" 42 | 43 | msgid "~=" 44 | msgstr "מכיל" 45 | 46 | msgid "address:delivery" 47 | msgstr "כתובת:משלוח" 48 | 49 | msgid "address:payment" 50 | msgstr "כתובת:תשלום" 51 | 52 | msgid "service:delivery" 53 | msgstr "משלוח" 54 | 55 | msgid "service:payment" 56 | msgstr "תשלום" 57 | 58 | msgid "attribute" 59 | msgstr "תכונה" 60 | 61 | msgid "basket" 62 | msgstr "סל" 63 | 64 | msgid "catalog" 65 | msgstr "קטלוג" 66 | 67 | msgid "coupon" 68 | msgstr "קופון" 69 | 70 | msgid "customer" 71 | msgstr "לקוח" 72 | 73 | msgid "group" 74 | msgstr "קבוצה" 75 | 76 | msgid "locale" 77 | msgstr "מקום" 78 | 79 | msgid "media" 80 | msgstr "מדיה" 81 | 82 | msgid "order" 83 | msgstr "הזמנה" 84 | 85 | msgid "plugin" 86 | msgstr "תוסף" 87 | 88 | msgid "price" 89 | msgstr "מחיר" 90 | 91 | msgid "product" 92 | msgstr "מוצר" 93 | 94 | msgid "review" 95 | msgstr "לִסְקוֹר" 96 | 97 | msgid "rule" 98 | msgstr "כלל" 99 | 100 | msgid "service" 101 | msgstr "שירות" 102 | 103 | msgid "stock" 104 | msgstr "מלאי" 105 | 106 | msgid "subscription" 107 | msgstr "מנוי" 108 | 109 | msgid "supplier" 110 | msgstr "ספק" 111 | 112 | msgid "tag" 113 | msgstr "תג" 114 | 115 | msgid "text" 116 | msgstr "טקסט" 117 | 118 | msgid "type" 119 | msgstr "סוג" 120 | -------------------------------------------------------------------------------- /i18n/code/hr.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Miro Sertić , 2018 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: Miro Sertić , 2018\n" 14 | "Language-Team: Croatian (http://app.transifex.com/aimeos/aimeos-core/language/hr/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: hr\n" 19 | "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n" 20 | 21 | msgid "!=" 22 | msgstr "nije jednako" 23 | 24 | msgid "<" 25 | msgstr "prije" 26 | 27 | msgid "<=" 28 | msgstr "prije (uključeno)" 29 | 30 | msgid "==" 31 | msgstr "jednako" 32 | 33 | msgid "=~" 34 | msgstr "počinje sa" 35 | 36 | msgid ">" 37 | msgstr "poslije" 38 | 39 | msgid ">=" 40 | msgstr "poslije (uključeno)" 41 | 42 | msgid "~=" 43 | msgstr "sadrži" 44 | 45 | msgid "address:delivery" 46 | msgstr "Adresa za isporuku" 47 | 48 | msgid "address:payment" 49 | msgstr "Adresa za račun" 50 | 51 | msgid "service:delivery" 52 | msgstr "Isporuka" 53 | 54 | msgid "service:payment" 55 | msgstr "Plaćanje" 56 | 57 | msgid "attribute" 58 | msgstr "" 59 | 60 | msgid "basket" 61 | msgstr "" 62 | 63 | msgid "catalog" 64 | msgstr "" 65 | 66 | msgid "coupon" 67 | msgstr "" 68 | 69 | msgid "customer" 70 | msgstr "" 71 | 72 | msgid "group" 73 | msgstr "" 74 | 75 | msgid "locale" 76 | msgstr "" 77 | 78 | msgid "media" 79 | msgstr "" 80 | 81 | msgid "order" 82 | msgstr "" 83 | 84 | msgid "plugin" 85 | msgstr "" 86 | 87 | msgid "price" 88 | msgstr "" 89 | 90 | msgid "product" 91 | msgstr "" 92 | 93 | msgid "review" 94 | msgstr "" 95 | 96 | msgid "rule" 97 | msgstr "" 98 | 99 | msgid "service" 100 | msgstr "" 101 | 102 | msgid "stock" 103 | msgstr "" 104 | 105 | msgid "subscription" 106 | msgstr "" 107 | 108 | msgid "supplier" 109 | msgstr "" 110 | 111 | msgid "tag" 112 | msgstr "" 113 | 114 | msgid "text" 115 | msgstr "" 116 | 117 | msgid "type" 118 | msgstr "" 119 | -------------------------------------------------------------------------------- /i18n/code/vi.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Hoang Bac Nam, 2022 7 | # Hoang Bac Nam, 2022 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: Hoang Bac Nam, 2022\n" 15 | "Language-Team: Vietnamese (http://app.transifex.com/aimeos/aimeos-core/language/vi/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: vi\n" 20 | "Plural-Forms: nplurals=1; plural=0;\n" 21 | 22 | msgid "!=" 23 | msgstr "không bằng" 24 | 25 | msgid "<" 26 | msgstr "trước" 27 | 28 | msgid "<=" 29 | msgstr "bao gồm" 30 | 31 | msgid "==" 32 | msgstr "bằng" 33 | 34 | msgid "=~" 35 | msgstr "bắt đầu với" 36 | 37 | msgid ">" 38 | msgstr "sau" 39 | 40 | msgid ">=" 41 | msgstr "≥" 42 | 43 | msgid "~=" 44 | msgstr "chứa" 45 | 46 | msgid "address:delivery" 47 | msgstr "Địa chỉ gửi" 48 | 49 | msgid "address:payment" 50 | msgstr "Địa chỉ hóa đơn" 51 | 52 | msgid "service:delivery" 53 | msgstr "Vận chuyển" 54 | 55 | msgid "service:payment" 56 | msgstr "Chi trả" 57 | 58 | msgid "attribute" 59 | msgstr "thuộc tính" 60 | 61 | msgid "basket" 62 | msgstr "giỏ" 63 | 64 | msgid "catalog" 65 | msgstr "mục lục" 66 | 67 | msgid "coupon" 68 | msgstr "phiếu giảm giá" 69 | 70 | msgid "customer" 71 | msgstr "khách hàng" 72 | 73 | msgid "group" 74 | msgstr "nhóm" 75 | 76 | msgid "locale" 77 | msgstr "vùng" 78 | 79 | msgid "media" 80 | msgstr "phương tiện truyền thông" 81 | 82 | msgid "order" 83 | msgstr "đặt hàng" 84 | 85 | msgid "plugin" 86 | msgstr "plugin" 87 | 88 | msgid "price" 89 | msgstr "giá" 90 | 91 | msgid "product" 92 | msgstr "sản phẩm" 93 | 94 | msgid "review" 95 | msgstr "Đánh giá" 96 | 97 | msgid "rule" 98 | msgstr "quy tắc" 99 | 100 | msgid "service" 101 | msgstr "dịch vụ" 102 | 103 | msgid "stock" 104 | msgstr "cổ phiếu" 105 | 106 | msgid "subscription" 107 | msgstr "đăng ký" 108 | 109 | msgid "supplier" 110 | msgstr "nhà cung cấp" 111 | 112 | msgid "tag" 113 | msgstr "thẻ" 114 | 115 | msgid "text" 116 | msgstr "văn bản" 117 | 118 | msgid "type" 119 | msgstr "loại" 120 | -------------------------------------------------------------------------------- /i18n/code/tr.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Metal , 2015,2025 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: Metal , 2015,2025\n" 14 | "Language-Team: Turkish (http://app.transifex.com/aimeos/aimeos-core/language/tr/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: tr\n" 19 | "Plural-Forms: nplurals=2; plural=(n > 1);\n" 20 | 21 | msgid "!=" 22 | msgstr "eşit olmayanlar" 23 | 24 | msgid "<" 25 | msgstr "önce" 26 | 27 | msgid "<=" 28 | msgstr "önce (dahil)" 29 | 30 | msgid "==" 31 | msgstr "eşit olanlar" 32 | 33 | msgid "=~" 34 | msgstr "ile başlayan" 35 | 36 | msgid ">" 37 | msgstr "sonra" 38 | 39 | msgid ">=" 40 | msgstr "sonra (dahil)" 41 | 42 | msgid "~=" 43 | msgstr "içeren" 44 | 45 | msgid "address:delivery" 46 | msgstr "Teslimat adresi" 47 | 48 | msgid "address:payment" 49 | msgstr "Fatura adresi" 50 | 51 | msgid "service:delivery" 52 | msgstr "Teslimat" 53 | 54 | msgid "service:payment" 55 | msgstr "Ödeme" 56 | 57 | msgid "attribute" 58 | msgstr "öznitelik" 59 | 60 | msgid "basket" 61 | msgstr "sepet" 62 | 63 | msgid "catalog" 64 | msgstr "Katalog" 65 | 66 | msgid "coupon" 67 | msgstr "kupon" 68 | 69 | msgid "customer" 70 | msgstr "müşteri" 71 | 72 | msgid "group" 73 | msgstr "Grup" 74 | 75 | msgid "locale" 76 | msgstr "YEREL" 77 | 78 | msgid "media" 79 | msgstr "medya" 80 | 81 | msgid "order" 82 | msgstr "Sipariş" 83 | 84 | msgid "plugin" 85 | msgstr "eklenti" 86 | 87 | msgid "price" 88 | msgstr "fiyat" 89 | 90 | msgid "product" 91 | msgstr "ürün" 92 | 93 | msgid "review" 94 | msgstr "inceleme" 95 | 96 | msgid "rule" 97 | msgstr "kural" 98 | 99 | msgid "service" 100 | msgstr "hizmet" 101 | 102 | msgid "stock" 103 | msgstr "stok" 104 | 105 | msgid "subscription" 106 | msgstr "abonelik" 107 | 108 | msgid "supplier" 109 | msgstr "Tedarikçi" 110 | 111 | msgid "tag" 112 | msgstr "etiket" 113 | 114 | msgid "text" 115 | msgstr "Metin" 116 | 117 | msgid "type" 118 | msgstr "tip" 119 | -------------------------------------------------------------------------------- /i18n/code/de.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Michael Spahn , 2014 7 | # nsendetzky, 2014 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: nsendetzky, 2014\n" 15 | "Language-Team: German (http://app.transifex.com/aimeos/aimeos-core/language/de/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: de\n" 20 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 21 | 22 | msgid "!=" 23 | msgstr "ungleich" 24 | 25 | msgid "<" 26 | msgstr "vor" 27 | 28 | msgid "<=" 29 | msgstr "vor (inkl.)" 30 | 31 | msgid "==" 32 | msgstr "entspricht" 33 | 34 | msgid "=~" 35 | msgstr "beginnt mit" 36 | 37 | msgid ">" 38 | msgstr "nach" 39 | 40 | msgid ">=" 41 | msgstr "nach (inkl.)" 42 | 43 | msgid "~=" 44 | msgstr "enthält" 45 | 46 | msgid "address:delivery" 47 | msgstr "Lieferadresse" 48 | 49 | msgid "address:payment" 50 | msgstr "Rechnungsadresse" 51 | 52 | msgid "service:delivery" 53 | msgstr "Versand" 54 | 55 | msgid "service:payment" 56 | msgstr "Zahlung" 57 | 58 | msgid "attribute" 59 | msgstr "Attribut" 60 | 61 | msgid "basket" 62 | msgstr "Korb" 63 | 64 | msgid "catalog" 65 | msgstr "Katalog" 66 | 67 | msgid "coupon" 68 | msgstr "Coupon" 69 | 70 | msgid "customer" 71 | msgstr "Kunde" 72 | 73 | msgid "group" 74 | msgstr "Gruppe" 75 | 76 | msgid "locale" 77 | msgstr "Standort" 78 | 79 | msgid "media" 80 | msgstr "Medien" 81 | 82 | msgid "order" 83 | msgstr "Bestellung" 84 | 85 | msgid "plugin" 86 | msgstr "Plugin" 87 | 88 | msgid "price" 89 | msgstr "Preis" 90 | 91 | msgid "product" 92 | msgstr "Produkt" 93 | 94 | msgid "review" 95 | msgstr "Überprüfung" 96 | 97 | msgid "rule" 98 | msgstr "Regel" 99 | 100 | msgid "service" 101 | msgstr "Dienstleistung" 102 | 103 | msgid "stock" 104 | msgstr "Aktie" 105 | 106 | msgid "subscription" 107 | msgstr "Abonnement" 108 | 109 | msgid "supplier" 110 | msgstr "Anbieter" 111 | 112 | msgid "tag" 113 | msgstr "Tag" 114 | 115 | msgid "text" 116 | msgstr "Text" 117 | 118 | msgid "type" 119 | msgstr "Typ" 120 | -------------------------------------------------------------------------------- /i18n/code/da.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Tobias Madsen , 2020 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: Tobias Madsen , 2020\n" 14 | "Language-Team: Danish (http://app.transifex.com/aimeos/aimeos-core/language/da/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: da\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 | 21 | msgid "!=" 22 | msgstr "ikke lig med" 23 | 24 | msgid "<" 25 | msgstr "før" 26 | 27 | msgid "<=" 28 | msgstr "før (inkl.)" 29 | 30 | msgid "==" 31 | msgstr "lig med" 32 | 33 | msgid "=~" 34 | msgstr "starter med" 35 | 36 | msgid ">" 37 | msgstr "efter" 38 | 39 | msgid ">=" 40 | msgstr "efter (inkl.)" 41 | 42 | msgid "~=" 43 | msgstr "indeholder" 44 | 45 | msgid "address:delivery" 46 | msgstr "Leveringsadresse" 47 | 48 | msgid "address:payment" 49 | msgstr "Faktureringsadresse" 50 | 51 | msgid "service:delivery" 52 | msgstr "Levering" 53 | 54 | msgid "service:payment" 55 | msgstr "Betaling" 56 | 57 | msgid "attribute" 58 | msgstr "attribut" 59 | 60 | msgid "basket" 61 | msgstr "kurv" 62 | 63 | msgid "catalog" 64 | msgstr "Katalog" 65 | 66 | msgid "coupon" 67 | msgstr "Kupon" 68 | 69 | msgid "customer" 70 | msgstr "Kunde" 71 | 72 | msgid "group" 73 | msgstr "gruppe" 74 | 75 | msgid "locale" 76 | msgstr "lokalitet" 77 | 78 | msgid "media" 79 | msgstr "medier" 80 | 81 | msgid "order" 82 | msgstr "Bestil" 83 | 84 | msgid "plugin" 85 | msgstr "plugin" 86 | 87 | msgid "price" 88 | msgstr "Pris" 89 | 90 | msgid "product" 91 | msgstr "produkt" 92 | 93 | msgid "review" 94 | msgstr "anmeldelse" 95 | 96 | msgid "rule" 97 | msgstr "Regel" 98 | 99 | msgid "service" 100 | msgstr "service" 101 | 102 | msgid "stock" 103 | msgstr "lager" 104 | 105 | msgid "subscription" 106 | msgstr "Abonnement" 107 | 108 | msgid "supplier" 109 | msgstr "leverandør" 110 | 111 | msgid "tag" 112 | msgstr "mærke" 113 | 114 | msgid "text" 115 | msgstr "tekst" 116 | 117 | msgid "type" 118 | msgstr "type" 119 | -------------------------------------------------------------------------------- /i18n/code/bg.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Bistra Kumanova , 2015 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: Bistra Kumanova , 2015\n" 14 | "Language-Team: Bulgarian (http://app.transifex.com/aimeos/aimeos-core/language/bg/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: bg\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 | 21 | msgid "!=" 22 | msgstr "не е равно" 23 | 24 | msgid "<" 25 | msgstr "преди" 26 | 27 | msgid "<=" 28 | msgstr "преди (вкл.)" 29 | 30 | msgid "==" 31 | msgstr "равно на" 32 | 33 | msgid "=~" 34 | msgstr "започва с" 35 | 36 | msgid ">" 37 | msgstr "след" 38 | 39 | msgid ">=" 40 | msgstr "след (вкл.)" 41 | 42 | msgid "~=" 43 | msgstr "съдържа" 44 | 45 | msgid "address:delivery" 46 | msgstr "Адрес на доставка" 47 | 48 | msgid "address:payment" 49 | msgstr "Разплащателен адрес" 50 | 51 | msgid "service:delivery" 52 | msgstr "Доставка" 53 | 54 | msgid "service:payment" 55 | msgstr "Заплащане" 56 | 57 | msgid "attribute" 58 | msgstr "атрибут" 59 | 60 | msgid "basket" 61 | msgstr "кошница" 62 | 63 | msgid "catalog" 64 | msgstr "каталог" 65 | 66 | msgid "coupon" 67 | msgstr "купон" 68 | 69 | msgid "customer" 70 | msgstr "клиент" 71 | 72 | msgid "group" 73 | msgstr "група" 74 | 75 | msgid "locale" 76 | msgstr "локал" 77 | 78 | msgid "media" 79 | msgstr "медии" 80 | 81 | msgid "order" 82 | msgstr "поръчка" 83 | 84 | msgid "plugin" 85 | msgstr "плъгин" 86 | 87 | msgid "price" 88 | msgstr "цена" 89 | 90 | msgid "product" 91 | msgstr "продукт" 92 | 93 | msgid "review" 94 | msgstr "преглед" 95 | 96 | msgid "rule" 97 | msgstr "правило" 98 | 99 | msgid "service" 100 | msgstr "услуга" 101 | 102 | msgid "stock" 103 | msgstr "склад" 104 | 105 | msgid "subscription" 106 | msgstr "абонамент" 107 | 108 | msgid "supplier" 109 | msgstr "доставчик" 110 | 111 | msgid "tag" 112 | msgstr "етикет" 113 | 114 | msgid "text" 115 | msgstr "текст" 116 | 117 | msgid "type" 118 | msgstr "тип" 119 | -------------------------------------------------------------------------------- /i18n/code/sr.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # danijel marinovic , 2015 7 | # Mario Domonji , 2015 8 | msgid "" 9 | msgstr "" 10 | "Project-Id-Version: aimeos-core\n" 11 | "Report-Msgid-Bugs-To: \n" 12 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 13 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 14 | "Last-Translator: Mario Domonji , 2015\n" 15 | "Language-Team: Serbian (http://app.transifex.com/aimeos/aimeos-core/language/sr/)\n" 16 | "MIME-Version: 1.0\n" 17 | "Content-Type: text/plain; charset=UTF-8\n" 18 | "Content-Transfer-Encoding: 8bit\n" 19 | "Language: sr\n" 20 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" 21 | 22 | msgid "!=" 23 | msgstr "nije jednako" 24 | 25 | msgid "<" 26 | msgstr "pre" 27 | 28 | msgid "<=" 29 | msgstr "pre" 30 | 31 | msgid "==" 32 | msgstr "jednako" 33 | 34 | msgid "=~" 35 | msgstr "pocinje sa" 36 | 37 | msgid ">" 38 | msgstr "posle" 39 | 40 | msgid ">=" 41 | msgstr "Posle (incl.)" 42 | 43 | msgid "~=" 44 | msgstr "sadrži" 45 | 46 | msgid "address:delivery" 47 | msgstr "Adresa Isporuke" 48 | 49 | msgid "address:payment" 50 | msgstr "Adresa za račun" 51 | 52 | msgid "service:delivery" 53 | msgstr "Isporuka" 54 | 55 | msgid "service:payment" 56 | msgstr "Placanje" 57 | 58 | msgid "attribute" 59 | msgstr "" 60 | 61 | msgid "basket" 62 | msgstr "" 63 | 64 | msgid "catalog" 65 | msgstr "" 66 | 67 | msgid "coupon" 68 | msgstr "" 69 | 70 | msgid "customer" 71 | msgstr "" 72 | 73 | msgid "group" 74 | msgstr "" 75 | 76 | msgid "locale" 77 | msgstr "" 78 | 79 | msgid "media" 80 | msgstr "" 81 | 82 | msgid "order" 83 | msgstr "porudzbina" 84 | 85 | msgid "plugin" 86 | msgstr "" 87 | 88 | msgid "price" 89 | msgstr "" 90 | 91 | msgid "product" 92 | msgstr "" 93 | 94 | msgid "review" 95 | msgstr "" 96 | 97 | msgid "rule" 98 | msgstr "" 99 | 100 | msgid "service" 101 | msgstr "" 102 | 103 | msgid "stock" 104 | msgstr "" 105 | 106 | msgid "subscription" 107 | msgstr "" 108 | 109 | msgid "supplier" 110 | msgstr "" 111 | 112 | msgid "tag" 113 | msgstr "" 114 | 115 | msgid "text" 116 | msgstr "" 117 | 118 | msgid "type" 119 | msgstr "" 120 | -------------------------------------------------------------------------------- /i18n/code/es.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: Spanish (http://app.transifex.com/aimeos/aimeos-core/language/es/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: es\n" 18 | "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" 19 | 20 | msgid "!=" 21 | msgstr "no es igual a" 22 | 23 | msgid "<" 24 | msgstr "antes" 25 | 26 | msgid "<=" 27 | msgstr "antes (incl.)" 28 | 29 | msgid "==" 30 | msgstr "igual a" 31 | 32 | msgid "=~" 33 | msgstr "empieza con" 34 | 35 | msgid ">" 36 | msgstr "después" 37 | 38 | msgid ">=" 39 | msgstr "después (incl.)" 40 | 41 | msgid "~=" 42 | msgstr "contiene" 43 | 44 | msgid "address:delivery" 45 | msgstr "Dirección de entrega" 46 | 47 | msgid "address:payment" 48 | msgstr "Dirección de cobro" 49 | 50 | msgid "service:delivery" 51 | msgstr "Entrega" 52 | 53 | msgid "service:payment" 54 | msgstr "Pago" 55 | 56 | msgid "attribute" 57 | msgstr "atributo" 58 | 59 | msgid "basket" 60 | msgstr "cesta" 61 | 62 | msgid "catalog" 63 | msgstr "catálogo" 64 | 65 | msgid "coupon" 66 | msgstr "cupón" 67 | 68 | msgid "customer" 69 | msgstr "cliente" 70 | 71 | msgid "group" 72 | msgstr "grupo" 73 | 74 | msgid "locale" 75 | msgstr "localización" 76 | 77 | msgid "media" 78 | msgstr "medios de comunicación" 79 | 80 | msgid "order" 81 | msgstr "pedir" 82 | 83 | msgid "plugin" 84 | msgstr "plugin" 85 | 86 | msgid "price" 87 | msgstr "precio" 88 | 89 | msgid "product" 90 | msgstr "producto" 91 | 92 | msgid "review" 93 | msgstr "revise" 94 | 95 | msgid "rule" 96 | msgstr "regla" 97 | 98 | msgid "service" 99 | msgstr "servicio" 100 | 101 | msgid "stock" 102 | msgstr "stock" 103 | 104 | msgid "subscription" 105 | msgstr "suscripción" 106 | 107 | msgid "supplier" 108 | msgstr "proveedor" 109 | 110 | msgid "tag" 111 | msgstr "etiqueta" 112 | 113 | msgid "text" 114 | msgstr "texto" 115 | 116 | msgid "type" 117 | msgstr "tipo" 118 | -------------------------------------------------------------------------------- /i18n/code/fr.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | msgid "" 7 | msgstr "" 8 | "Project-Id-Version: aimeos-core\n" 9 | "Report-Msgid-Bugs-To: \n" 10 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 11 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 12 | "Last-Translator: Aimeos \n" 13 | "Language-Team: French (http://app.transifex.com/aimeos/aimeos-core/language/fr/)\n" 14 | "MIME-Version: 1.0\n" 15 | "Content-Type: text/plain; charset=UTF-8\n" 16 | "Content-Transfer-Encoding: 8bit\n" 17 | "Language: fr\n" 18 | "Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" 19 | 20 | msgid "!=" 21 | msgstr "n'est pas égal à" 22 | 23 | msgid "<" 24 | msgstr "avant" 25 | 26 | msgid "<=" 27 | msgstr "avant (inclus)" 28 | 29 | msgid "==" 30 | msgstr "est égal à" 31 | 32 | msgid "=~" 33 | msgstr "commence par" 34 | 35 | msgid ">" 36 | msgstr "après" 37 | 38 | msgid ">=" 39 | msgstr "après (inclus)" 40 | 41 | msgid "~=" 42 | msgstr "contient" 43 | 44 | msgid "address:delivery" 45 | msgstr "Adresse de livraison" 46 | 47 | msgid "address:payment" 48 | msgstr "Adresse de facturation" 49 | 50 | msgid "service:delivery" 51 | msgstr "Livraison" 52 | 53 | msgid "service:payment" 54 | msgstr "Paiement" 55 | 56 | msgid "attribute" 57 | msgstr "attribut" 58 | 59 | msgid "basket" 60 | msgstr "panier" 61 | 62 | msgid "catalog" 63 | msgstr "catalogue" 64 | 65 | msgid "coupon" 66 | msgstr "coupon" 67 | 68 | msgid "customer" 69 | msgstr "client" 70 | 71 | msgid "group" 72 | msgstr "groupe" 73 | 74 | msgid "locale" 75 | msgstr "lieu" 76 | 77 | msgid "media" 78 | msgstr "médias" 79 | 80 | msgid "order" 81 | msgstr "commande" 82 | 83 | msgid "plugin" 84 | msgstr "plugin" 85 | 86 | msgid "price" 87 | msgstr "prix" 88 | 89 | msgid "product" 90 | msgstr "produit" 91 | 92 | msgid "review" 93 | msgstr "examen" 94 | 95 | msgid "rule" 96 | msgstr "règle" 97 | 98 | msgid "service" 99 | msgstr "service" 100 | 101 | msgid "stock" 102 | msgstr "stock" 103 | 104 | msgid "subscription" 105 | msgstr "abonnement" 106 | 107 | msgid "supplier" 108 | msgstr "fournisseur" 109 | 110 | msgid "tag" 111 | msgstr "étiquette" 112 | 113 | msgid "text" 114 | msgstr "texte" 115 | 116 | msgid "type" 117 | msgstr "type" 118 | -------------------------------------------------------------------------------- /i18n/code/hu.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Péter Kozma , 2016 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: Péter Kozma , 2016\n" 14 | "Language-Team: Hungarian (http://app.transifex.com/aimeos/aimeos-core/language/hu/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: hu\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 | 21 | msgid "!=" 22 | msgstr "nem egyenlő" 23 | 24 | msgid "<" 25 | msgstr "előtt" 26 | 27 | msgid "<=" 28 | msgstr "előtt (tartalmaz)" 29 | 30 | msgid "==" 31 | msgstr "egyenlő" 32 | 33 | msgid "=~" 34 | msgstr "kezdődik" 35 | 36 | msgid ">" 37 | msgstr "után" 38 | 39 | msgid ">=" 40 | msgstr "után (tartalmaz)" 41 | 42 | msgid "~=" 43 | msgstr "tartalmaz" 44 | 45 | msgid "address:delivery" 46 | msgstr "Szállítási cím" 47 | 48 | msgid "address:payment" 49 | msgstr "Számlázási cím" 50 | 51 | msgid "service:delivery" 52 | msgstr "Szállítás" 53 | 54 | msgid "service:payment" 55 | msgstr "Fizetés" 56 | 57 | msgid "attribute" 58 | msgstr "attribútum" 59 | 60 | msgid "basket" 61 | msgstr "kosár" 62 | 63 | msgid "catalog" 64 | msgstr "katalógus" 65 | 66 | msgid "coupon" 67 | msgstr "kupon" 68 | 69 | msgid "customer" 70 | msgstr "ügyfél" 71 | 72 | msgid "group" 73 | msgstr "csoport" 74 | 75 | msgid "locale" 76 | msgstr "locale" 77 | 78 | msgid "media" 79 | msgstr "média" 80 | 81 | msgid "order" 82 | msgstr "megrendelés" 83 | 84 | msgid "plugin" 85 | msgstr "plugin" 86 | 87 | msgid "price" 88 | msgstr "ár" 89 | 90 | msgid "product" 91 | msgstr "termék" 92 | 93 | msgid "review" 94 | msgstr "felülvizsgálat" 95 | 96 | msgid "rule" 97 | msgstr "szabály" 98 | 99 | msgid "service" 100 | msgstr "szolgáltatás" 101 | 102 | msgid "stock" 103 | msgstr "készlet" 104 | 105 | msgid "subscription" 106 | msgstr "előfizetés" 107 | 108 | msgid "supplier" 109 | msgstr "beszállító" 110 | 111 | msgid "tag" 112 | msgstr "tag" 113 | 114 | msgid "text" 115 | msgstr "szöveg" 116 | 117 | msgid "type" 118 | msgstr "típus" 119 | -------------------------------------------------------------------------------- /i18n/code/it.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # R M , 2019 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: R M , 2019\n" 14 | "Language-Team: Italian (http://app.transifex.com/aimeos/aimeos-core/language/it/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: it\n" 19 | "Plural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n" 20 | 21 | msgid "!=" 22 | msgstr "diverso" 23 | 24 | msgid "<" 25 | msgstr "prima" 26 | 27 | msgid "<=" 28 | msgstr "prima (incl.)" 29 | 30 | msgid "==" 31 | msgstr "uguale" 32 | 33 | msgid "=~" 34 | msgstr "inizia con" 35 | 36 | msgid ">" 37 | msgstr "dopo" 38 | 39 | msgid ">=" 40 | msgstr "dopo (incl.)" 41 | 42 | msgid "~=" 43 | msgstr "contiene" 44 | 45 | msgid "address:delivery" 46 | msgstr "Indirizzo di consegna" 47 | 48 | msgid "address:payment" 49 | msgstr "Indirizzo di fatturazione" 50 | 51 | msgid "service:delivery" 52 | msgstr "Consegna" 53 | 54 | msgid "service:payment" 55 | msgstr "Pagamento" 56 | 57 | msgid "attribute" 58 | msgstr "attributo" 59 | 60 | msgid "basket" 61 | msgstr "cestino" 62 | 63 | msgid "catalog" 64 | msgstr "catalogo" 65 | 66 | msgid "coupon" 67 | msgstr "cedola" 68 | 69 | msgid "customer" 70 | msgstr "cliente" 71 | 72 | msgid "group" 73 | msgstr "gruppo" 74 | 75 | msgid "locale" 76 | msgstr "locale" 77 | 78 | msgid "media" 79 | msgstr "media" 80 | 81 | msgid "order" 82 | msgstr "ordine" 83 | 84 | msgid "plugin" 85 | msgstr "plugin" 86 | 87 | msgid "price" 88 | msgstr "prezzo" 89 | 90 | msgid "product" 91 | msgstr "prodotto" 92 | 93 | msgid "review" 94 | msgstr "recensione" 95 | 96 | msgid "rule" 97 | msgstr "regola" 98 | 99 | msgid "service" 100 | msgstr "servizio" 101 | 102 | msgid "stock" 103 | msgstr "stock" 104 | 105 | msgid "subscription" 106 | msgstr "abbonamento" 107 | 108 | msgid "supplier" 109 | msgstr "fornitore" 110 | 111 | msgid "tag" 112 | msgstr "tag" 113 | 114 | msgid "text" 115 | msgstr "testo" 116 | 117 | msgid "type" 118 | msgstr "tipo" 119 | -------------------------------------------------------------------------------- /i18n/code/nl.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Maurice Lourens , 2015 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: Maurice Lourens , 2015\n" 14 | "Language-Team: Dutch (http://app.transifex.com/aimeos/aimeos-core/language/nl/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: nl\n" 19 | "Plural-Forms: nplurals=2; plural=(n != 1);\n" 20 | 21 | msgid "!=" 22 | msgstr "Niet gelijk aan" 23 | 24 | msgid "<" 25 | msgstr "Kleiner dan" 26 | 27 | msgid "<=" 28 | msgstr "kleiner dan of gelijk aan" 29 | 30 | msgid "==" 31 | msgstr "gelijk aan" 32 | 33 | msgid "=~" 34 | msgstr "begint met" 35 | 36 | msgid ">" 37 | msgstr "groter dan" 38 | 39 | msgid ">=" 40 | msgstr "Groter dan of gelijk aan" 41 | 42 | msgid "~=" 43 | msgstr "bevat" 44 | 45 | msgid "address:delivery" 46 | msgstr "Bezorg adres" 47 | 48 | msgid "address:payment" 49 | msgstr "Factuur adres" 50 | 51 | msgid "service:delivery" 52 | msgstr "Bezorging" 53 | 54 | msgid "service:payment" 55 | msgstr "Betaling" 56 | 57 | msgid "attribute" 58 | msgstr "attribuut" 59 | 60 | msgid "basket" 61 | msgstr "mand" 62 | 63 | msgid "catalog" 64 | msgstr "catalogus" 65 | 66 | msgid "coupon" 67 | msgstr "coupon" 68 | 69 | msgid "customer" 70 | msgstr "klant" 71 | 72 | msgid "group" 73 | msgstr "groep" 74 | 75 | msgid "locale" 76 | msgstr "plaatselijke" 77 | 78 | msgid "media" 79 | msgstr "media" 80 | 81 | msgid "order" 82 | msgstr "bestel" 83 | 84 | msgid "plugin" 85 | msgstr "plugin" 86 | 87 | msgid "price" 88 | msgstr "prijs" 89 | 90 | msgid "product" 91 | msgstr "product" 92 | 93 | msgid "review" 94 | msgstr "beoordeling" 95 | 96 | msgid "rule" 97 | msgstr "regel" 98 | 99 | msgid "service" 100 | msgstr "service" 101 | 102 | msgid "stock" 103 | msgstr "voorraad" 104 | 105 | msgid "subscription" 106 | msgstr "abonnement" 107 | 108 | msgid "supplier" 109 | msgstr "leverancier" 110 | 111 | msgid "tag" 112 | msgstr "tag" 113 | 114 | msgid "text" 115 | msgstr "tekst" 116 | 117 | msgid "type" 118 | msgstr "type" 119 | -------------------------------------------------------------------------------- /i18n/code/ro.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # iulian iulian , 2020 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: iulian iulian , 2020\n" 14 | "Language-Team: Romanian (http://app.transifex.com/aimeos/aimeos-core/language/ro/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: ro\n" 19 | "Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n" 20 | 21 | msgid "!=" 22 | msgstr "nu este egal" 23 | 24 | msgid "<" 25 | msgstr "inainte de" 26 | 27 | msgid "<=" 28 | msgstr "inainte de (inclusiv)" 29 | 30 | msgid "==" 31 | msgstr "egal" 32 | 33 | msgid "=~" 34 | msgstr "incepe cu" 35 | 36 | msgid ">" 37 | msgstr "dupa" 38 | 39 | msgid ">=" 40 | msgstr "dupa (inclusiv)" 41 | 42 | msgid "~=" 43 | msgstr "contine" 44 | 45 | msgid "address:delivery" 46 | msgstr "Adresa de livrare" 47 | 48 | msgid "address:payment" 49 | msgstr "Adresa de facturare" 50 | 51 | msgid "service:delivery" 52 | msgstr "LIvrare" 53 | 54 | msgid "service:payment" 55 | msgstr "Plata" 56 | 57 | msgid "attribute" 58 | msgstr "atribut" 59 | 60 | msgid "basket" 61 | msgstr "coș" 62 | 63 | msgid "catalog" 64 | msgstr "catalog" 65 | 66 | msgid "coupon" 67 | msgstr "cupon" 68 | 69 | msgid "customer" 70 | msgstr "client" 71 | 72 | msgid "group" 73 | msgstr "grup" 74 | 75 | msgid "locale" 76 | msgstr "local" 77 | 78 | msgid "media" 79 | msgstr "media" 80 | 81 | msgid "order" 82 | msgstr "comandă" 83 | 84 | msgid "plugin" 85 | msgstr "plugin" 86 | 87 | msgid "price" 88 | msgstr "preț" 89 | 90 | msgid "product" 91 | msgstr "produs" 92 | 93 | msgid "review" 94 | msgstr "revizuire" 95 | 96 | msgid "rule" 97 | msgstr "regulă" 98 | 99 | msgid "service" 100 | msgstr "serviciu" 101 | 102 | msgid "stock" 103 | msgstr "stoc" 104 | 105 | msgid "subscription" 106 | msgstr "abonament" 107 | 108 | msgid "supplier" 109 | msgstr "furnizor" 110 | 111 | msgid "tag" 112 | msgstr "etichetă" 113 | 114 | msgid "text" 115 | msgstr "text" 116 | 117 | msgid "type" 118 | msgstr "tip" 119 | -------------------------------------------------------------------------------- /templates/admin/jqadm/catalog/item-product.php: -------------------------------------------------------------------------------- 1 | config( 'admin/jqadm/catalog/product/fields', $fields ); 42 | 43 | 44 | ?> 45 |
46 | partial( $this->config( 'admin/jqadm/partial/productlist', 'productlist' ), [ 47 | 'types' => $this->get( 'productListTypes', map() )->col( null, 'product.lists.type.code' )->getName()->toArray(), 48 | 'params' => $this->get( 'pageParams', [] ), 49 | 'tabindex' => $this->get( 'tabindex' ), 50 | 'siteid' => $this->site()->siteid(), 51 | 'refid' => $this->param( 'id' ), 52 | 'domain' => 'catalog', 53 | 'fields' => $fields, 54 | ] ) ?> 55 |
56 | get( 'productBody' ) ?> 57 | -------------------------------------------------------------------------------- /templates/admin/jqadm/itemactions.php: -------------------------------------------------------------------------------- 1 | get( 'actions', ['search', 'copy', 'create'] ); 17 | $params = $this->get( 'params', [] ); 18 | unset( $params['id'] ); 19 | 20 | $enc = $this->encoder(); 21 | 22 | 23 | ?> 24 |
25 | html( $this->translate( 'admin', '?' ) ) ?> 26 |
27 | 28 | 31 | html( $this->translate( 'admin', 'Cancel' ) ) ?> 32 | 33 | 34 |
35 | 39 | 40 | 44 | 55 | 56 |
57 | -------------------------------------------------------------------------------- /i18n/code/lv.po: -------------------------------------------------------------------------------- 1 | # SOME DESCRIPTIVE TITLE. 2 | # Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER 3 | # This file is distributed under the same license as the PACKAGE package. 4 | # 5 | # Translators: 6 | # Martins Nav , 2021 7 | msgid "" 8 | msgstr "" 9 | "Project-Id-Version: aimeos-core\n" 10 | "Report-Msgid-Bugs-To: \n" 11 | "POT-Creation-Date: 2016-04-21 23:29+0200\n" 12 | "PO-Revision-Date: 2015-07-09 20:33+0000\n" 13 | "Last-Translator: Martins Nav , 2021\n" 14 | "Language-Team: Latvian (http://app.transifex.com/aimeos/aimeos-core/language/lv/)\n" 15 | "MIME-Version: 1.0\n" 16 | "Content-Type: text/plain; charset=UTF-8\n" 17 | "Content-Transfer-Encoding: 8bit\n" 18 | "Language: lv\n" 19 | "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\n" 20 | 21 | msgid "!=" 22 | msgstr "nav vienāds" 23 | 24 | msgid "<" 25 | msgstr "pirms" 26 | 27 | msgid "<=" 28 | msgstr "pirms (iekļaujot)" 29 | 30 | msgid "==" 31 | msgstr "vienāds" 32 | 33 | msgid "=~" 34 | msgstr "sākas ar" 35 | 36 | msgid ">" 37 | msgstr "pēc" 38 | 39 | msgid ">=" 40 | msgstr "pēc (iekļaujot)" 41 | 42 | msgid "~=" 43 | msgstr "ietver" 44 | 45 | msgid "address:delivery" 46 | msgstr "Piegādes adrese" 47 | 48 | msgid "address:payment" 49 | msgstr "Norēķinu adrese" 50 | 51 | msgid "service:delivery" 52 | msgstr "Piegāde" 53 | 54 | msgid "service:payment" 55 | msgstr "Apmaksa" 56 | 57 | msgid "attribute" 58 | msgstr "atribūts" 59 | 60 | msgid "basket" 61 | msgstr "grozs" 62 | 63 | msgid "catalog" 64 | msgstr "katalogs" 65 | 66 | msgid "coupon" 67 | msgstr "kupons" 68 | 69 | msgid "customer" 70 | msgstr "klients" 71 | 72 | msgid "group" 73 | msgstr "grupa" 74 | 75 | msgid "locale" 76 | msgstr "vietne" 77 | 78 | msgid "media" 79 | msgstr "plašsaziņas līdzekļi" 80 | 81 | msgid "order" 82 | msgstr "pasūtījums" 83 | 84 | msgid "plugin" 85 | msgstr "spraudnis" 86 | 87 | msgid "price" 88 | msgstr "cena" 89 | 90 | msgid "product" 91 | msgstr "produkts" 92 | 93 | msgid "review" 94 | msgstr "pārskatīt" 95 | 96 | msgid "rule" 97 | msgstr "noteikums" 98 | 99 | msgid "service" 100 | msgstr "pakalpojums" 101 | 102 | msgid "stock" 103 | msgstr "krājums" 104 | 105 | msgid "subscription" 106 | msgstr "abonements" 107 | 108 | msgid "supplier" 109 | msgstr "piegādātājs" 110 | 111 | msgid "tag" 112 | msgstr "birka" 113 | 114 | msgid "text" 115 | msgstr "teksts" 116 | 117 | msgid "type" 118 | msgstr "tips" 119 | --------------------------------------------------------------------------------