├── README.md ├── license.txt ├── readme.txt └── upload ├── admin ├── controller │ ├── module │ │ └── multiseller.php │ └── multiseller │ │ ├── attribute.php │ │ ├── base.php │ │ ├── dashboard.php │ │ ├── debug.php │ │ ├── payment.php │ │ ├── product.php │ │ ├── seller-group.php │ │ ├── seller.php │ │ └── transaction.php ├── language │ └── english │ │ ├── module │ │ └── multiseller.php │ │ └── multiseller │ │ └── multiseller.php ├── model │ └── multiseller │ │ ├── install.php │ │ └── upgrade.php └── view │ ├── image │ ├── badge-add.png │ ├── badge.png │ ├── multiseller │ │ ├── ms-bag.png │ │ ├── ms-book.png │ │ ├── ms-bubble.png │ │ ├── ms-cart.png │ │ ├── ms-cross.png │ │ ├── ms-dollar-plus.png │ │ ├── ms-dollar.png │ │ ├── ms-gear.png │ │ ├── ms-paypal-bw.png │ │ ├── ms-paypal.png │ │ ├── ms-pencil.png │ │ ├── ms-profile-plus.png │ │ ├── ms-profile.png │ │ └── ms-tick.png │ └── ui-bg_gloss-wave_35_000000_500x100.png │ ├── javascript │ └── multimerch │ │ ├── common.js │ │ ├── datatables │ │ ├── css │ │ │ ├── jquery.dataTables.css │ │ │ └── jquery.dataTables_themeroller.css │ │ ├── images │ │ │ ├── back_disabled.png │ │ │ ├── back_enabled.png │ │ │ ├── back_enabled_hover.png │ │ │ ├── favicon.ico │ │ │ ├── forward_disabled.png │ │ │ ├── forward_enabled.png │ │ │ ├── forward_enabled_hover.png │ │ │ ├── sort_asc.png │ │ │ ├── sort_asc_disabled.png │ │ │ ├── sort_both.png │ │ │ ├── sort_desc.png │ │ │ └── sort_desc_disabled.png │ │ ├── js │ │ │ └── jquery.dataTables.min.js │ │ └── lang │ │ │ └── en.lng │ │ └── settings.js │ ├── stylesheet │ └── multimerch │ │ └── multiseller.css │ └── template │ ├── multiseller │ ├── attribute-form.tpl │ ├── attribute.tpl │ ├── debug.tpl │ ├── dialog-withdrawal-markpaid.tpl │ ├── payment-form.tpl │ ├── payment.tpl │ ├── product.tpl │ ├── seller-form.tpl │ ├── seller-group-form.tpl │ ├── seller-group.tpl │ ├── seller.tpl │ ├── settings.tpl │ ├── transaction-form.tpl │ └── transaction.tpl │ └── payment │ └── multimerch-paypal.tpl ├── catalog ├── controller │ ├── account │ │ └── register-seller.php │ ├── payment │ │ └── multimerch-paypal.php │ └── seller │ │ ├── account-dashboard.php │ │ ├── account-order.php │ │ ├── account-product.php │ │ ├── account-profile.php │ │ ├── account-stats.php │ │ ├── account-transaction.php │ │ ├── account-withdrawal.php │ │ ├── account.php │ │ ├── catalog-seller.php │ │ └── catalog.php ├── language │ └── english │ │ └── multiseller │ │ └── multiseller.php ├── model │ └── localisation │ │ └── order_status.php └── view │ ├── javascript │ ├── account-product-form.js │ ├── account-seller-profile.js │ ├── account-withdrawal.js │ ├── dialog-sellercontact.js │ ├── ms-common.js │ ├── multimerch │ │ ├── Sortable.js │ │ ├── account-product-form-options.js │ │ ├── account-register-seller.js │ │ ├── common.js │ │ ├── datatables │ │ │ ├── css │ │ │ │ ├── jquery.dataTables.css │ │ │ │ └── jquery.dataTables_themeroller.css │ │ │ ├── images │ │ │ │ ├── back_disabled.png │ │ │ │ ├── back_enabled.png │ │ │ │ ├── back_enabled_hover.png │ │ │ │ ├── favicon.ico │ │ │ │ ├── forward_disabled.png │ │ │ │ ├── forward_enabled.png │ │ │ │ ├── forward_enabled_hover.png │ │ │ │ ├── sort_asc.png │ │ │ │ ├── sort_asc_disabled.png │ │ │ │ ├── sort_both.png │ │ │ │ ├── sort_desc.png │ │ │ │ └── sort_desc_disabled.png │ │ │ ├── js │ │ │ │ └── jquery.dataTables.min.js │ │ │ └── lang │ │ │ │ └── en.lng │ │ └── summernote │ │ │ ├── summernote-bs2.css │ │ │ ├── summernote-bs3.css │ │ │ ├── summernote.css │ │ │ ├── summernote.js │ │ │ └── summernote.min.js │ └── plupload │ │ ├── jquery.plupload.queue │ │ ├── css │ │ │ └── jquery.plupload.queue.css │ │ ├── img │ │ │ ├── backgrounds.gif │ │ │ ├── buttons-disabled.png │ │ │ ├── buttons.png │ │ │ ├── delete.gif │ │ │ ├── done.gif │ │ │ ├── error.gif │ │ │ ├── throbber.gif │ │ │ └── transp50.png │ │ └── jquery.plupload.queue.js │ │ ├── jquery.ui.plupload │ │ ├── css │ │ │ └── jquery.ui.plupload.css │ │ ├── img │ │ │ ├── plupload-bw.png │ │ │ └── plupload.png │ │ └── jquery.ui.plupload.js │ │ ├── plupload.browserplus.js │ │ ├── plupload.flash.js │ │ ├── plupload.flash.swf │ │ ├── plupload.full.js │ │ ├── plupload.gears.js │ │ ├── plupload.html4.js │ │ ├── plupload.html5.js │ │ ├── plupload.js │ │ ├── plupload.silverlight.js │ │ └── plupload.silverlight.xap │ └── theme │ └── default │ ├── image │ ├── ms-arrowdown-bw.png │ ├── ms-arrowdown.png │ ├── ms-arrowleft.png │ ├── ms-arrowright.png │ ├── ms-bag-96.png │ ├── ms-bag-plus-96.png │ ├── ms-bag-plus.png │ ├── ms-bag.png │ ├── ms-book-96.png │ ├── ms-cart-96.png │ ├── ms-clone.png │ ├── ms-cross.png │ ├── ms-dollar-96.png │ ├── ms-dollar.png │ ├── ms-graph-96.png │ ├── ms-graph.png │ ├── ms-magnifier.png │ ├── ms-minus-blue.png │ ├── ms-minus.png │ ├── ms-pencil.png │ ├── ms-plus-blue.png │ ├── ms-plus.png │ ├── ms-profile-96.png │ ├── ms-profile-plus-96.png │ ├── ms-profile.png │ ├── ms-refresh-bw.png │ ├── ms-refresh.png │ ├── ms-relist.png │ ├── ms-stats-96.png │ ├── ms-stats.png │ ├── ms-tick-bw.png │ └── ms-tick.png │ ├── stylesheet │ └── multiseller.css │ └── template │ ├── account │ └── register-seller.tpl │ └── multiseller │ ├── account-dashboard.tpl │ ├── account-order-info.tpl │ ├── account-order.tpl │ ├── account-product-form-options-values.tpl │ ├── account-product-form-options.tpl │ ├── account-product-form-shipping-categories.tpl │ ├── account-product-form.tpl │ ├── account-product.tpl │ ├── account-profile.tpl │ ├── account-stats.tpl │ ├── account-transaction.tpl │ ├── account-withdrawal.tpl │ ├── catalog-seller-products.tpl │ ├── catalog-seller-profile.tpl │ ├── catalog-seller.tpl │ ├── dialog-sellercontact.tpl │ └── payment-paypal.tpl ├── image └── ms_no_image.jpg ├── system └── library │ ├── ms-paypal.php │ ├── msattribute.php │ ├── msbalance.php │ ├── mscommission.php │ ├── msfile.php │ ├── mshelper.php │ ├── msloader.php │ ├── msmail.php │ ├── msoption.php │ ├── msorderdata.php │ ├── mspayment.php │ ├── msproduct.php │ ├── msseller.php │ ├── mssellergroup.php │ └── msstatistic.php └── vqmod └── xml ├── multimerch_core.xml ├── multimerch_core_admin.xml ├── multimerch_core_listingperiod.xml ├── multimerch_core_oc2_loader_magic.xml ├── multimerch_core_ordercomments.xml_ ├── multimerch_core_productpage.xml ├── multimerch_core_sellerinfos.xml ├── multimerch_core_sellermenu.xml ├── multimerch_core_seourl.xml └── multimerch_core_transactions.xml /README.md: -------------------------------------------------------------------------------- 1 | # MultiMerch Multivendor Marketplace 2 | 3 | MultiMerch Marketplace is an OpenCart extension for creating multivendor marketplaces. 4 | 5 | [Demo](http://demo.multimerch.com) | [Website](http://multimerch.com) | [Forum](http://community.multimerch.com) 6 | 7 | ## Core Features 8 | 9 | MultiMerch Core is a free & open source version of MultiMerch providing basic multivendor functionality that can be further extended via addons if necessary. 10 | 11 | - Front office seller accounts - vendors have no access to OpenCart admin 12 | - Support for custom OpenCart themes and extensions 13 | - Flexible fee and commission system - signup, listing and sale fees 14 | - Multiple languages and currencies if needed 15 | - Seller groups, PayPal payouts, user-friendly interfaces and lots of other features 16 | - Extensive configuration with dozens of settings 17 | 18 | ## Addons 19 | 20 | It's also possible to extend MultiMerch Core with dozens of other MultiMerch addons (free or paid), including: 21 | - Advanced Shipping system - different shipping rates per product, seller, carrier & zone 22 | - Custom seller badges like top or premium sellers 23 | - Private messaging with conversation support between buyers and sellers 24 | - PayPal MassPay & PayPal Adaptive 25 | - Seller & product comments and others 26 | 27 | ## Documentation 28 | The links below will take you to the latest versions of documentation available on MultiMerch website. 29 | - [Installation](http://multimerch.com/docs/installation/) 30 | - [Configuration](http://multimerch.com/docs/configuration/) 31 | - [Custom Themes](http://multimerch.com/docs/custom-theme-compatibility/) 32 | - [Seller Accounts](http://multimerch.com/docs/multimerch-seller-accounts/) 33 | - [Transactions & Balance](http://multimerch.com/docs/transactions-seller-balance/) 34 | - [Fees & Commissions](http://multimerch.com/docs/commissions/) 35 | - [Seller Groups](http://multimerch.com/docs/seller-groups/) 36 | -------------------------------------------------------------------------------- /readme.txt: -------------------------------------------------------------------------------- 1 | Please see the MultiMerch documentation at http://multimerch.com/documentation/. -------------------------------------------------------------------------------- /upload/admin/controller/multiseller/base.php: -------------------------------------------------------------------------------- 1 | registry = $registry; 10 | $parts = explode('/', $this->request->request['route']); 11 | if (!isset($parts[2]) || !in_array($parts[2], array('install','uninstall'))) { 12 | } 13 | 14 | //$data = array(); 15 | $this->data = array_merge($this->data, $this->load->language('multiseller/multiseller')); 16 | $this->data['token'] = $this->session->data['token']; 17 | $this->document->addStyle('view/stylesheet/multimerch/multiseller.css'); 18 | $this->document->addStyle('view/javascript/multimerch/datatables/css/jquery.dataTables.css'); 19 | $this->document->addScript('view/javascript/multimerch/datatables/js/jquery.dataTables.min.js'); 20 | $this->document->addScript('view/javascript/multimerch/common.js'); 21 | //$this->document->addScript('//code.jquery.com/ui/1.11.2/jquery-ui.min.js'); 22 | } 23 | 24 | // @todo: validation 25 | public function validate($action = '', $level = 'access') { 26 | return true; 27 | //var_dump($this->user->hasPermission($level, 'module/multiseller')); 28 | // if (in_array(strtolower($action), array('sellers', 'install','uninstall','jxsavesellerinfo', 'savesettings', 'jxconfirmpayment', 'jxcompletepayment', 'jxproductstatus')) 29 | if (!$this->user->hasPermission($level, 'module/multiseller')) { 30 | return $this->forward('error/permission'); 31 | } 32 | } 33 | } 34 | ?> 35 | -------------------------------------------------------------------------------- /upload/admin/controller/multiseller/dashboard.php: -------------------------------------------------------------------------------- 1 | response->redirect($this->url->link('module/multiseller', 'token=' . $this->session->data['token'], 'SSL')); 6 | } 7 | } 8 | ?> 9 | -------------------------------------------------------------------------------- /upload/admin/controller/multiseller/debug.php: -------------------------------------------------------------------------------- 1 | 0 && $lines >= 0) { 16 | $seek = min(ftell($f), $buffer); 17 | fseek($f, -$seek, SEEK_CUR); 18 | $output = ($chunk = fread($f, $seek)) . $output; 19 | fseek($f, -mb_strlen($chunk, '8bit'), SEEK_CUR); 20 | $lines -= substr_count($chunk, "\n"); 21 | } 22 | 23 | while ($lines++ < 0) $output = substr($output, strpos($output, "\n") + 1); 24 | fclose($f); 25 | 26 | return trim($output); 27 | } 28 | 29 | public function index() { 30 | $this->validate(__FUNCTION__); 31 | 32 | $this->load->model('extension/extension'); 33 | $this->load->model('extension/module'); 34 | 35 | // extensions 36 | $this->data['extensions'] = array(); 37 | $installed = $this->model_extension_extension->getInstalled('module'); 38 | 39 | $files = glob(DIR_APPLICATION . 'controller/module/*.php'); 40 | if ($files) { 41 | foreach ($files as $file) { 42 | $extension = basename($file, '.php'); 43 | $this->load->language('module/' . $extension); 44 | 45 | $version = ''; 46 | if (strpos($extension, 'multimerch_') !== FALSE) { 47 | $f = file($file); 48 | foreach ($f as $line) { 49 | if (strpos($line, 'version') !== false) { 50 | if (preg_match("/['\"](.*?)['\"]/", $line, $matches)) $version = $matches[1]; 51 | break; 52 | } 53 | } 54 | } 55 | 56 | if (in_array($extension, $installed)) { 57 | $this->data['installed_extensions'][] = array( 58 | 'name' => $this->language->get('heading_title'), 59 | 'version' => $version 60 | ); 61 | }else { 62 | $this->data['other_extensions'][] = array( 63 | 'name' => $this->language->get('heading_title'), 64 | 'version' => $version 65 | ); 66 | } 67 | } 68 | } 69 | 70 | // error log 71 | $file = DIR_LOGS . $this->config->get('config_error_filename'); 72 | $this->data['error_log'] = ''; 73 | if (file_exists($file)) { 74 | $this->data['error_log'] = $this->_readLog($file); 75 | } 76 | 77 | // vqmod log 78 | $files = glob(DIR_APPLICATION . '../' . vQmod::$logFolder . '*.log'); 79 | if ($files) { 80 | usort($files, create_function('$a,$b', 'return filemtime($b) - filemtime($a);')); 81 | $log = array_shift($files); 82 | $this->data['vqmod_log'] = $this->_readLog($log, 150); 83 | } 84 | 85 | $this->data['token'] = $this->session->data['token']; 86 | $this->data['heading'] = $this->language->get('ms_debug_heading'); 87 | $this->document->setTitle($this->language->get('ms_debug_heading')); 88 | 89 | $this->data['breadcrumbs'] = $this->MsLoader->MsHelper->admSetBreadcrumbs(array( 90 | array( 91 | 'text' => $this->language->get('ms_menu_multiseller'), 92 | 'href' => $this->url->link('multiseller/dashboard', '', 'SSL'), 93 | ), 94 | array( 95 | 'text' => $this->language->get('ms_debug_breadcrumbs'), 96 | 'href' => $this->url->link('multiseller/debug', '', 'SSL'), 97 | ) 98 | )); 99 | 100 | $this->data['column_left'] = $this->load->controller('common/column_left'); 101 | $this->data['footer'] = $this->load->controller('common/footer'); 102 | $this->data['header'] = $this->load->controller('common/header'); 103 | $this->response->setOutput($this->load->view('multiseller/debug.tpl', $this->data)); 104 | } 105 | } 106 | ?> 107 | -------------------------------------------------------------------------------- /upload/admin/language/english/module/multiseller.php: -------------------------------------------------------------------------------- 1 | [MultiMerch] Digital Marketplace'; 3 | ?> 4 | -------------------------------------------------------------------------------- /upload/admin/model/multiseller/upgrade.php: -------------------------------------------------------------------------------- 1 | load->model('localisation/language'); 6 | } 7 | 8 | public function getDbVersion() { 9 | $res = $this->db->query("SHOW TABLES LIKE '" . DB_PREFIX . "ms_db_schema'"); 10 | if (!$res->num_rows) return '0.0.0.0'; 11 | 12 | $res = $this->db->query("SELECT * FROM `" . DB_PREFIX . "ms_db_schema` ORDER BY schema_change_id DESC LIMIT 1"); 13 | 14 | if ($res->num_rows) 15 | return $res->row['major'] . '.' . $res->row['minor'] . '.' . $res->row['build'] . '.' . $res->row['revision']; 16 | else 17 | return '0.0.0.0'; 18 | } 19 | 20 | public function isDbLatest() { 21 | $current = $this->getDbVersion(); 22 | if ($this->MsLoader->dbVer == $current) return true; 23 | return false; 24 | } 25 | 26 | private function _createSchemaEntry($version) { 27 | $schema = explode(".", $version); 28 | $this->db->query("INSERT INTO `" . DB_PREFIX . "ms_db_schema` (major, minor, build, revision, date_applied) VALUES({$schema[0]},{$schema[1]},{$schema[2]},{$schema[3]}, NOW())"); 29 | } 30 | 31 | public function upgradeDb() { 32 | $version = $this->getDbVersion(); 33 | 34 | if (version_compare($version, '1.0.0.0') < 0) { 35 | $this->db->query(" 36 | CREATE TABLE `" . DB_PREFIX . "ms_db_schema` ( 37 | `schema_change_id` int(11) NOT NULL AUTO_INCREMENT, 38 | `major` TINYINT NOT NULL, 39 | `minor` TINYINT NOT NULL, 40 | `build` TINYINT NOT NULL, 41 | `revision` SMALLINT NOT NULL, 42 | `date_applied` DATETIME NOT NULL, 43 | PRIMARY KEY (`schema_change_id`)) default CHARSET=utf8"); 44 | 45 | $this->db->query(" 46 | CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "ms_suborder` ( 47 | `suborder_id` int(11) NOT NULL AUTO_INCREMENT, 48 | `order_id` int(11) NOT NULL, 49 | `seller_id` int(11) NOT NULL, 50 | `order_status_id` int(11) NOT NULL, 51 | PRIMARY KEY (`suborder_id`) 52 | ) DEFAULT CHARSET=utf8"); 53 | 54 | $this->_createSchemaEntry('1.0.0.0'); 55 | } 56 | 57 | if (version_compare($version, '1.0.1.0') < 0) { 58 | $this->db->query(" 59 | ALTER TABLE `" . DB_PREFIX . "ms_seller` ADD ( 60 | `banner` VARCHAR(255) DEFAULT NULL)"); 61 | 62 | $this->load->model('user/user_group'); 63 | $this->model_user_user_group->addPermission($this->user->getId(), 'access', 'multiseller/addon'); 64 | $this->model_user_user_group->addPermission($this->user->getId(), 'modify', 'multiseller/addon'); 65 | 66 | $this->_createSchemaEntry('1.0.1.0'); 67 | } 68 | 69 | if (version_compare($version, '1.0.2.0') < 0) { 70 | $this->db->query(" 71 | CREATE TABLE IF NOT EXISTS `" . DB_PREFIX . "ms_suborder_history` ( 72 | `suborder_history_id` int(5) NOT NULL AUTO_INCREMENT, 73 | `suborder_id` int(5) NOT NULL, 74 | `order_status_id` int(5) NOT NULL, 75 | `comment` text NOT NULL DEFAULT '', 76 | `date_added` datetime NOT NULL, 77 | PRIMARY KEY (`suborder_history_id`) 78 | ) DEFAULT CHARSET=utf8"); 79 | 80 | $this->_createSchemaEntry('1.0.2.0'); 81 | } 82 | 83 | if (version_compare($version, '1.0.2.1') < 0) { 84 | $this->load->model('user/user_group'); 85 | $this->model_user_user_group->addPermission($this->user->getId(), 'access', 'multiseller/debug'); 86 | $this->model_user_user_group->addPermission($this->user->getId(), 'modify', 'multiseller/debug'); 87 | 88 | $this->_createSchemaEntry('1.0.2.1'); 89 | } 90 | } 91 | } -------------------------------------------------------------------------------- /upload/admin/view/image/badge-add.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/badge-add.png -------------------------------------------------------------------------------- /upload/admin/view/image/badge.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/badge.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-bag.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-bag.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-book.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-book.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-bubble.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-bubble.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-cart.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-cart.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-cross.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-dollar-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-dollar-plus.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-dollar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-dollar.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-gear.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-gear.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-paypal-bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-paypal-bw.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-paypal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-paypal.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-pencil.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-pencil.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-profile-plus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-profile-plus.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-profile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-profile.png -------------------------------------------------------------------------------- /upload/admin/view/image/multiseller/ms-tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/multiseller/ms-tick.png -------------------------------------------------------------------------------- /upload/admin/view/image/ui-bg_gloss-wave_35_000000_500x100.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/image/ui-bg_gloss-wave_35_000000_500x100.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/common.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $.fn.dataTableExt.sErrMode = 'throw'; 3 | 4 | if (typeof msGlobals.config_language != 'undefined') { 5 | $.extend($.fn.dataTable.defaults, { 6 | "oLanguage": { 7 | "sUrl": msGlobals.config_language 8 | } 9 | }); 10 | } 11 | 12 | $.extend($.fn.dataTable.defaults, { 13 | "bProcessing": true, 14 | "bSortCellsTop": true, 15 | "bServerSide": true, 16 | "sPaginationType": "full_numbers", 17 | "aaSorting": [], 18 | "bAutoWidth": false, 19 | "bLengthChange": false, 20 | "iDisplayLength": 50 21 | //"iDisplayLength": msGlobals.config_admin_limit 22 | /* 23 | "fnDrawCallback":function(){ 24 | if ( $('.dataTables_paginate span span.paginate_button').size()) { 25 | $('.dataTables_paginate')[0].style.display = "block"; 26 | } else { 27 | $('.dataTables_paginate')[0].style.display = "none"; 28 | } 29 | }*/ 30 | }); 31 | 32 | 33 | $("body").delegate(".dataTable .filter input[type='text']", "keyup", function() { 34 | $(this).parents(".dataTable").dataTable().fnFilter(this.value, $(this).parents(".dataTable").find("thead tr.filter td").index($(this).parent("td"))); 35 | }); 36 | }); -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/css/jquery.dataTables.css: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Table 4 | */ 5 | table.dataTable { 6 | margin: 0 auto; 7 | clear: both; 8 | width: 100%; 9 | } 10 | 11 | table.dataTable thead th { 12 | padding: 3px 18px 3px 10px; 13 | border-bottom: 1px solid black; 14 | font-weight: bold; 15 | cursor: pointer; 16 | *cursor: hand; 17 | } 18 | 19 | table.dataTable tfoot th { 20 | padding: 3px 18px 3px 10px; 21 | border-top: 1px solid black; 22 | font-weight: bold; 23 | } 24 | 25 | table.dataTable td { 26 | padding: 3px 10px; 27 | } 28 | 29 | table.dataTable td.center, 30 | table.dataTable td.dataTables_empty { 31 | text-align: center; 32 | } 33 | 34 | table.dataTable tr.odd { background-color: #E2E4FF; } 35 | table.dataTable tr.even { background-color: white; } 36 | 37 | table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; } 38 | table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; } 39 | table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; } 40 | table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; } 41 | table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; } 42 | table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; } 43 | 44 | 45 | /* 46 | * Table wrapper 47 | */ 48 | .dataTables_wrapper { 49 | position: relative; 50 | clear: both; 51 | *zoom: 1; 52 | } 53 | 54 | 55 | /* 56 | * Page length menu 57 | */ 58 | .dataTables_length { 59 | float: left; 60 | } 61 | 62 | 63 | /* 64 | * Filter 65 | */ 66 | .dataTables_filter { 67 | float: right; 68 | text-align: right; 69 | } 70 | 71 | 72 | /* 73 | * Table information 74 | */ 75 | .dataTables_info { 76 | clear: both; 77 | float: left; 78 | } 79 | 80 | 81 | /* 82 | * Pagination 83 | */ 84 | .dataTables_paginate { 85 | float: right; 86 | text-align: right; 87 | } 88 | 89 | /* Two button pagination - previous / next */ 90 | .paginate_disabled_previous, 91 | .paginate_enabled_previous, 92 | .paginate_disabled_next, 93 | .paginate_enabled_next { 94 | height: 19px; 95 | float: left; 96 | cursor: pointer; 97 | *cursor: hand; 98 | color: #111 !important; 99 | } 100 | .paginate_disabled_previous:hover, 101 | .paginate_enabled_previous:hover, 102 | .paginate_disabled_next:hover, 103 | .paginate_enabled_next:hover { 104 | text-decoration: none !important; 105 | } 106 | .paginate_disabled_previous:active, 107 | .paginate_enabled_previous:active, 108 | .paginate_disabled_next:active, 109 | .paginate_enabled_next:active { 110 | outline: none; 111 | } 112 | 113 | .paginate_disabled_previous, 114 | .paginate_disabled_next { 115 | color: #666 !important; 116 | } 117 | .paginate_disabled_previous, 118 | .paginate_enabled_previous { 119 | padding-left: 23px; 120 | } 121 | .paginate_disabled_next, 122 | .paginate_enabled_next { 123 | padding-right: 23px; 124 | margin-left: 10px; 125 | } 126 | 127 | .paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; } 128 | .paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; } 129 | .paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; } 130 | 131 | .paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; } 132 | .paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; } 133 | .paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; } 134 | 135 | /* Full number pagination */ 136 | .paging_full_numbers { 137 | height: 22px; 138 | line-height: 22px; 139 | } 140 | .paging_full_numbers a:active { 141 | outline: none 142 | } 143 | .paging_full_numbers a:hover { 144 | text-decoration: none; 145 | } 146 | 147 | .paging_full_numbers a.paginate_button, 148 | .paging_full_numbers a.paginate_active { 149 | border: 1px solid #aaa; 150 | -webkit-border-radius: 5px; 151 | -moz-border-radius: 5px; 152 | border-radius: 5px; 153 | padding: 2px 5px; 154 | margin: 0 3px; 155 | cursor: pointer; 156 | *cursor: hand; 157 | color: #333 !important; 158 | } 159 | 160 | .paging_full_numbers a.paginate_button { 161 | background-color: #ddd; 162 | } 163 | 164 | .paging_full_numbers a.paginate_button:hover { 165 | background-color: #ccc; 166 | text-decoration: none !important; 167 | } 168 | 169 | .paging_full_numbers a.paginate_active { 170 | background-color: #99B3FF; 171 | } 172 | 173 | 174 | /* 175 | * Processing indicator 176 | */ 177 | .dataTables_processing { 178 | position: absolute; 179 | top: 50%; 180 | left: 50%; 181 | width: 250px; 182 | height: 30px; 183 | margin-left: -125px; 184 | margin-top: -15px; 185 | padding: 14px 0 2px 0; 186 | border: 1px solid #ddd; 187 | text-align: center; 188 | color: #999; 189 | font-size: 14px; 190 | background-color: white; 191 | } 192 | 193 | 194 | /* 195 | * Sorting 196 | */ 197 | .sorting { background: url('../images/sort_both.png') no-repeat center right; } 198 | .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; } 199 | .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; } 200 | 201 | .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; } 202 | .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; } 203 | 204 | table.dataTable thead th:active, 205 | table.dataTable thead td:active { 206 | outline: none; 207 | } 208 | 209 | 210 | /* 211 | * Scrolling 212 | */ 213 | .dataTables_scroll { 214 | clear: both; 215 | } 216 | 217 | .dataTables_scrollBody { 218 | *margin-top: -1px; 219 | -webkit-overflow-scrolling: touch; 220 | } 221 | 222 | -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/css/jquery.dataTables_themeroller.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* 4 | * Table 5 | */ 6 | table.dataTable { 7 | margin: 0 auto; 8 | clear: both; 9 | width: 100%; 10 | border-collapse: collapse; 11 | } 12 | 13 | table.dataTable thead th { 14 | padding: 3px 0px 3px 10px; 15 | cursor: pointer; 16 | *cursor: hand; 17 | } 18 | 19 | table.dataTable tfoot th { 20 | padding: 3px 10px; 21 | } 22 | 23 | table.dataTable td { 24 | padding: 3px 10px; 25 | } 26 | 27 | table.dataTable td.center, 28 | table.dataTable td.dataTables_empty { 29 | text-align: center; 30 | } 31 | 32 | table.dataTable tr.odd { background-color: #E2E4FF; } 33 | table.dataTable tr.even { background-color: white; } 34 | 35 | table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; } 36 | table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; } 37 | table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; } 38 | table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; } 39 | table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; } 40 | table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; } 41 | 42 | 43 | /* 44 | * Table wrapper 45 | */ 46 | .dataTables_wrapper { 47 | position: relative; 48 | clear: both; 49 | *zoom: 1; 50 | } 51 | .dataTables_wrapper .ui-widget-header { 52 | font-weight: normal; 53 | } 54 | .dataTables_wrapper .ui-toolbar { 55 | padding: 5px; 56 | } 57 | 58 | 59 | /* 60 | * Page length menu 61 | */ 62 | .dataTables_length { 63 | float: left; 64 | } 65 | 66 | 67 | /* 68 | * Filter 69 | */ 70 | .dataTables_filter { 71 | float: right; 72 | text-align: right; 73 | } 74 | 75 | 76 | /* 77 | * Table information 78 | */ 79 | .dataTables_info { 80 | padding-top: 3px; 81 | clear: both; 82 | float: left; 83 | } 84 | 85 | 86 | /* 87 | * Pagination 88 | */ 89 | .dataTables_paginate { 90 | float: right; 91 | text-align: right; 92 | } 93 | 94 | .dataTables_paginate .ui-button { 95 | margin-right: -0.1em !important; 96 | } 97 | 98 | .paging_two_button .ui-button { 99 | float: left; 100 | cursor: pointer; 101 | * cursor: hand; 102 | } 103 | 104 | .paging_full_numbers .ui-button { 105 | padding: 2px 6px; 106 | margin: 0; 107 | cursor: pointer; 108 | * cursor: hand; 109 | color: #333 !important; 110 | } 111 | 112 | /* Two button pagination - previous / next */ 113 | .paginate_disabled_previous, 114 | .paginate_enabled_previous, 115 | .paginate_disabled_next, 116 | .paginate_enabled_next { 117 | height: 19px; 118 | float: left; 119 | cursor: pointer; 120 | *cursor: hand; 121 | color: #111 !important; 122 | } 123 | .paginate_disabled_previous:hover, 124 | .paginate_enabled_previous:hover, 125 | .paginate_disabled_next:hover, 126 | .paginate_enabled_next:hover { 127 | text-decoration: none !important; 128 | } 129 | .paginate_disabled_previous:active, 130 | .paginate_enabled_previous:active, 131 | .paginate_disabled_next:active, 132 | .paginate_enabled_next:active { 133 | outline: none; 134 | } 135 | 136 | .paginate_disabled_previous, 137 | .paginate_disabled_next { 138 | color: #666 !important; 139 | } 140 | .paginate_disabled_previous, 141 | .paginate_enabled_previous { 142 | padding-left: 23px; 143 | } 144 | .paginate_disabled_next, 145 | .paginate_enabled_next { 146 | padding-right: 23px; 147 | margin-left: 10px; 148 | } 149 | 150 | .paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; } 151 | .paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; } 152 | .paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; } 153 | 154 | .paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; } 155 | .paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; } 156 | .paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; } 157 | 158 | /* Full number pagination */ 159 | .paging_full_numbers a:active { 160 | outline: none 161 | } 162 | .paging_full_numbers a:hover { 163 | text-decoration: none; 164 | } 165 | 166 | .paging_full_numbers a.paginate_button, 167 | .paging_full_numbers a.paginate_active { 168 | border: 1px solid #aaa; 169 | -webkit-border-radius: 5px; 170 | -moz-border-radius: 5px; 171 | border-radius: 5px; 172 | padding: 2px 5px; 173 | margin: 0 3px; 174 | cursor: pointer; 175 | *cursor: hand; 176 | color: #333 !important; 177 | } 178 | 179 | .paging_full_numbers a.paginate_button { 180 | background-color: #ddd; 181 | } 182 | 183 | .paging_full_numbers a.paginate_button:hover { 184 | background-color: #ccc; 185 | text-decoration: none !important; 186 | } 187 | 188 | .paging_full_numbers a.paginate_active { 189 | background-color: #99B3FF; 190 | } 191 | 192 | 193 | /* 194 | * Processing indicator 195 | */ 196 | .dataTables_processing { 197 | position: absolute; 198 | top: 50%; 199 | left: 50%; 200 | width: 250px; 201 | height: 30px; 202 | margin-left: -125px; 203 | margin-top: -15px; 204 | padding: 14px 0 2px 0; 205 | border: 1px solid #ddd; 206 | text-align: center; 207 | color: #999; 208 | font-size: 14px; 209 | background-color: white; 210 | } 211 | 212 | 213 | /* 214 | * Sorting 215 | */ 216 | table.dataTable thead th div.DataTables_sort_wrapper { 217 | position: relative; 218 | padding-right: 20px; 219 | } 220 | 221 | table.dataTable thead th div.DataTables_sort_wrapper span { 222 | position: absolute; 223 | top: 50%; 224 | margin-top: -8px; 225 | right: 0; 226 | } 227 | 228 | table.dataTable th:active { 229 | outline: none; 230 | } 231 | 232 | 233 | /* 234 | * Scrolling 235 | */ 236 | .dataTables_scroll { 237 | clear: both; 238 | } 239 | 240 | .dataTables_scrollBody { 241 | *margin-top: -1px; 242 | -webkit-overflow-scrolling: touch; 243 | } 244 | 245 | -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/back_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/back_disabled.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/back_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/back_enabled.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/back_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/back_enabled_hover.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/favicon.ico -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/forward_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/forward_disabled.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/forward_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/forward_enabled.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/forward_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/forward_enabled_hover.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/sort_asc.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/sort_asc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/sort_asc_disabled.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/sort_both.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/sort_desc.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/images/sort_desc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/admin/view/javascript/multimerch/datatables/images/sort_desc_disabled.png -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/datatables/lang/en.lng: -------------------------------------------------------------------------------- 1 | { 2 | "sEmptyTable": "No data available in table", 3 | "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", 4 | "sInfoEmpty": "Showing 0 to 0 of 0 entries", 5 | "sInfoFiltered": "(filtered from _MAX_ total entries)", 6 | "sInfoPostFix": "", 7 | "sInfoThousands": ",", 8 | "sLengthMenu": "Show _MENU_ entries", 9 | "sLoadingRecords": "Loading...", 10 | "sProcessing": "", 11 | "sSearch": "Search:", 12 | "sZeroRecords": "No matching records found", 13 | "oPaginate": { 14 | "sFirst": "|<", 15 | "sLast": ">|", 16 | "sNext": ">", 17 | "sPrevious": "<" 18 | }, 19 | "oAria": { 20 | "sSortAscending": ": activate to sort column ascending", 21 | "sSortDescending": ": activate to sort column descending" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /upload/admin/view/javascript/multimerch/settings.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $('body').delegate(".ffRemove", "click", function() { 3 | $(this).parents('tr').remove(); 4 | }); 5 | 6 | $('body').delegate(".ffClone", "click", function() { 7 | var lastRow = $(this).parents('table').find('tbody tr:last input:last').attr('name'); 8 | if (typeof lastRow == "undefined") { 9 | var newRowNum = 1; 10 | } else { 11 | var newRowNum = parseInt(lastRow.match(/[0-9]+/)) + 1; 12 | } 13 | 14 | var newRow = $(this).parents('table').find('tbody tr.ffSample').clone(); 15 | newRow.find('input,select').attr('name', function(i,name) { 16 | return name.replace('[0]','[' + newRowNum + ']'); 17 | }); 18 | 19 | $(this).parents('table').find('tbody').append(newRow.removeAttr('class')); 20 | }); 21 | }); 22 | -------------------------------------------------------------------------------- /upload/admin/view/stylesheet/multimerch/multiseller.css: -------------------------------------------------------------------------------- 1 | .table-responsive { 2 | overflow-x: initial; 3 | } 4 | 5 | .control-inline input, .control-inline select, .input-auto { 6 | width: auto; 7 | display: inline; 8 | } 9 | 10 | .control-inline .col-sm-2 { 11 | height:35px; 12 | line-height: 35px; 13 | } 14 | 15 | .control-inline .col-sm-3 { 16 | text-align: center; 17 | margin:5px 0; 18 | } 19 | 20 | .ms-settings .content form table tr h2 { 21 | border-bottom: none; 22 | text-transform: none; 23 | margin: 25px 0 0; 24 | } 25 | 26 | .ms-settings .content form table tr:first-child h2 { 27 | margin: 0; 28 | } 29 | 30 | td h3 { 31 | color: #FF802B; 32 | padding: 0; 33 | margin: 0; 34 | } 35 | 36 | tr.ffSample { 37 | display: none; 38 | } 39 | 40 | table.list tbody td, 41 | table.list thead td { 42 | padding: 7px; 43 | } 44 | 45 | table.list td.checkbox { 46 | width: 10px; 47 | } 48 | 49 | table.list td.comment { 50 | width: 650px; 51 | } 52 | 53 | .ms-button { 54 | width: 32px; 55 | height: 32px; 56 | display: inline-block; 57 | margin: 0 1px; 58 | } 59 | 60 | .ms-button-small { 61 | width: 16px; 62 | height: 16px; 63 | } 64 | 65 | .ms-button-delete { 66 | background-image: url(../../image/multiseller/ms-cross.png); 67 | } 68 | 69 | .ms-button-edit { 70 | background-image: url(../../image/multiseller/ms-pencil.png); 71 | } 72 | 73 | .ms-button-paypal { 74 | background-image: url(../../image/multiseller/ms-paypal.png); 75 | } 76 | 77 | .ms-button-paypal-mass-seller { 78 | background-image: url(../../image/multiseller/ms-paypal-mass-seller.png); 79 | } 80 | 81 | .ms-button-paypal-mass-seller-all { 82 | background-image: url(../../image/multiseller/ms-paypal-mass-seller-all.png); 83 | } 84 | 85 | .ms-button-paypal-mass-payment { 86 | background-image: url(../../image/multiseller/ms-paypal-mass-payment.png); 87 | } 88 | 89 | .ms-button-paypal-mass-payment-all { 90 | background-image: url(../../image/multiseller/ms-paypal-mass-payment-all.png); 91 | } 92 | 93 | .ms-button-profile { 94 | background-image: url(../../image/multiseller/ms-profile.png); 95 | } 96 | 97 | .ms-button-profile-plus { 98 | background-image: url(../../image/multiseller/ms-profile-plus.png); 99 | } 100 | 101 | .ms-button-dollar-plus { 102 | background-image: url(../../image/multiseller/ms-dollar-plus.png); 103 | } 104 | 105 | 106 | .ms-button-paypal-bw { 107 | background-image: url(../../image/multiseller/ms-paypal-bw.png); 108 | cursor: default; 109 | } 110 | 111 | .ms-button-mark { 112 | background-image: url(../../image/multiseller/ms-tick.png); 113 | } 114 | 115 | .ms-loading { 116 | background: url(../../image/loading.gif) no-repeat center; 117 | } 118 | 119 | .ms-button-apply { 120 | background-image: url(../../image/success.png); 121 | display: inline-block; 122 | cursor: pointer; 123 | vertical-align: middle; 124 | } 125 | 126 | .ms-payout table.list tbody tr { 127 | height: 50px; 128 | } 129 | 130 | .fee-rate-1 { 131 | color: #4E8B00; 132 | } 133 | 134 | .fee-rate-2 { 135 | color: #1C237A; 136 | } 137 | 138 | .fee-rate-3 { 139 | color: #C84848; 140 | } 141 | 142 | h1 img { 143 | width: 22px; 144 | } 145 | 146 | /* datatables */ 147 | 148 | .dataTables_wrapper .dataTables_processing { 149 | width: 100%; 150 | height: 100%; 151 | left: 0; 152 | top: 0; 153 | margin:0; 154 | background: rgba(255,255,255,.90); 155 | border: 1px solid #efefef; 156 | } 157 | 158 | .dataTables_wrapper .dataTables_processing i { 159 | margin-top: 15px; 160 | } 161 | 162 | 163 | .dataTables_length, .dataTables_filter { 164 | display: inline-block; 165 | margin-bottom: 5px; 166 | } 167 | 168 | .dataTables_length { 169 | float: left; 170 | } 171 | 172 | .dataTables_filter { 173 | float: right; 174 | } 175 | 176 | 177 | .dataTables_wrapper table.dataTable { 178 | margin-bottom: 10px; 179 | } 180 | 181 | .dataTables_wrapper .dataTables_paginate { 182 | float: left; 183 | } 184 | 185 | .dataTables_wrapper .dataTables_info { 186 | float: right; 187 | } 188 | 189 | /* table cell sizes*/ 190 | table .tiny { 191 | width: 50px; 192 | } 193 | 194 | table .small { 195 | width: 75px; 196 | } 197 | 198 | table .medium { 199 | width: 125px; 200 | } 201 | 202 | table .large { 203 | width: 200px; 204 | } 205 | 206 | table .filter input[type="text"] { 207 | width: 100%; 208 | box-sizing: border-box; 209 | -webkit-box-sizing:border-box; 210 | -moz-box-sizing: border-box; 211 | } 212 | 213 | .dataTables_filter { 214 | display: none; 215 | } 216 | 217 | table.list thead td.right { 218 | text-align: center; 219 | } 220 | 221 | .dataTables_wrapper .paging_full_numbers a.paginate_button, 222 | .dataTables_wrapper .paging_full_numbers a.paginate_button:hover, 223 | .dataTables_wrapper .paging_full_numbers a.paginate_active { 224 | border: 1px solid #DDDDDD; 225 | padding: 4px 10px; 226 | font-size: 12px; 227 | text-decoration: none; 228 | color: #A3A3A3 !important; 229 | background-color: transparent; 230 | -webkit-border-radius: 0; 231 | -moz-border-radius: 0; 232 | border-radius: 0; 233 | margin: 0 2px; 234 | } 235 | 236 | .dataTables_wrapper .paging_full_numbers a.paginate_active { 237 | border: 1px solid #269BC6; 238 | color: #269BC6 !important; 239 | } 240 | 241 | .dataTables_wrapper .paging_full_numbers .paginate_button_disabled { 242 | display: none; 243 | } 244 | 245 | .v-top 246 | { 247 | vertical-align: top; 248 | } 249 | 250 | .msBlack .ui-widget-header { 251 | background: url("view/image/ui-bg_gloss-wave_35_000000_500x100.png") repeat-x scroll 50% 50% #F6A828; 252 | border: 1px solid #000000; 253 | } -------------------------------------------------------------------------------- /upload/admin/view/template/multiseller/attribute.tpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | 15 |
16 | 17 |
18 | 19 |
20 | 21 | 22 |
23 | 24 |
25 | 26 |
27 |
28 |

29 |
30 |
31 |
32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 | 52 |
53 |
54 |
55 | 56 | 57 | -------------------------------------------------------------------------------- /upload/admin/view/template/multiseller/debug.tpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | 13 |
14 |
15 |
16 |

17 |
18 |
19 | 55 |
56 |
57 |
58 |
59 | -------------------------------------------------------------------------------- /upload/admin/view/template/multiseller/dialog-withdrawal-markpaid.tpl: -------------------------------------------------------------------------------- 1 |

2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | -------------------------------------------------------------------------------- /upload/admin/view/template/multiseller/seller-group.tpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | 16 |
17 | 18 |
19 | 20 |
21 | 22 | 23 |
24 | 25 |
26 | 27 |
28 |
29 |

30 |
31 |
32 |
33 |
34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 |
53 |
54 |
55 |
56 |
57 |
58 | 59 | 77 | -------------------------------------------------------------------------------- /upload/admin/view/template/multiseller/seller.tpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | 15 |
16 | 17 |
18 | 19 |
20 | 21 | 22 |
23 | 24 |
25 | 26 |
27 |
28 |

29 |
30 |
31 |

32 |
33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 |
63 |
64 |
65 |
66 |
67 | 113 | -------------------------------------------------------------------------------- /upload/admin/view/template/multiseller/transaction-form.tpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | 16 |
17 | 20 | 21 |
22 |
23 |

24 |
25 |
26 |
27 |
28 | 29 |
30 | 36 |
37 |
38 | 39 |
40 | 41 |
42 | 48 |
49 |
50 | 51 |
52 | 53 |
54 | currency->getSymbolLeft(); ?> 55 | 56 | currency->getSymbolRight(); ?> 57 |
58 |
59 | 60 |
61 | 62 |
63 | 64 |
65 |
66 |
67 |
68 |
69 |
70 | 71 | 102 | -------------------------------------------------------------------------------- /upload/admin/view/template/multiseller/transaction.tpl: -------------------------------------------------------------------------------- 1 | 2 |
3 | 15 |
16 | 17 |
18 | 19 |
20 | 21 | 22 |
23 | 24 |
25 | 26 |
27 |
28 |

29 |
30 |
31 |
32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |
51 |
52 |
53 |
54 |
55 |
56 | 57 | 72 | -------------------------------------------------------------------------------- /upload/admin/view/template/payment/multimerch-paypal.tpl: -------------------------------------------------------------------------------- 1 |
2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
-------------------------------------------------------------------------------- /upload/catalog/controller/seller/account-dashboard.php: -------------------------------------------------------------------------------- 1 | request->post['payment_status']) && strtolower($this->request->post['payment_status']) == 'completed') { 7 | $this->data['success'] = $this->language->get('ms_account_sellerinfo_saved'); 8 | } 9 | 10 | $this->load->model('catalog/product'); 11 | $this->load->model('tool/image'); 12 | $this->load->model('account/order'); 13 | 14 | $seller_id = $this->customer->getId(); 15 | 16 | $seller = $this->MsLoader->MsSeller->getSeller($seller_id); 17 | $seller_group_names = $this->MsLoader->MsSellerGroup->getSellerGroupDescriptions($seller['ms.seller_group']); 18 | $my_first_day = date('Y-m-d H:i:s', mktime(0, 0, 0, date("n"), 1)); 19 | 20 | $this->data['seller'] = array_merge( 21 | $seller, 22 | array('balance' => $this->currency->format($this->MsLoader->MsBalance->getSellerBalance($seller_id), $this->config->get('config_currency'))), 23 | array('commission_rates' => $this->MsLoader->MsCommission->calculateCommission(array('seller_id' => $seller_id))), 24 | array('total_earnings' => $this->currency->format($this->MsLoader->MsSeller->getTotalEarnings($seller_id), $this->config->get('config_currency'))), 25 | array('earnings_month' => $this->currency->format($this->MsLoader->MsSeller->getTotalEarnings($seller_id, array('period_start' => $my_first_day)), $this->config->get('config_currency'))), 26 | array('sales_month' => $this->MsLoader->MsOrderData->getTotalSales(array( 27 | 'seller_id' => $seller_id, 28 | 'period_start' => $my_first_day 29 | ))), 30 | array('seller_group' => $seller_group_names[$this->config->get('config_language_id')]['name']), 31 | array('date_created' => date($this->language->get('date_format_short'), strtotime($seller['ms.date_created']))) 32 | //array('total_products' => $this->MsLoader->MsProduct->getTotalProducts(array( 33 | //'seller_id' => $seller_id, 34 | //'enabled' => )) 35 | ); 36 | 37 | if ($seller['ms.avatar'] && file_exists(DIR_IMAGE . $seller['ms.avatar'])) { 38 | $this->data['seller']['avatar'] = $this->MsLoader->MsFile->resizeImage($seller['ms.avatar'], $this->config->get('msconf_seller_avatar_dashboard_image_width'), $this->config->get('msconf_seller_avatar_dashboard_image_height')); 39 | } else { 40 | $this->data['seller']['avatar'] = $this->MsLoader->MsFile->resizeImage('ms_no_image.jpg', $this->config->get('msconf_seller_avatar_dashboard_image_width'), $this->config->get('msconf_seller_avatar_dashboard_image_height')); 41 | } 42 | 43 | $payments = $this->MsLoader->MsPayment->getPayments( 44 | array( 45 | 'seller_id' => $seller_id, 46 | ), 47 | array( 48 | 'order_by' => 'mpay.date_created', 49 | 'order_way' => 'DESC', 50 | 'offset' => 0, 51 | 'limit' => 5 52 | ) 53 | ); 54 | 55 | $orders = $this->MsLoader->MsOrderData->getOrders( 56 | array( 57 | 'seller_id' => $seller_id, 58 | 'order_status' => $this->config->get('msconf_display_order_statuses') 59 | ), 60 | array( 61 | 'order_by' => 'date_added', 62 | 'order_way' => 'DESC', 63 | 'offset' => 0, 64 | 'limit' => 5 65 | ) 66 | ); 67 | 68 | $this->load->model('localisation/order_status'); 69 | $order_statuses = $this->model_localisation_order_status->getOrderStatuses(); 70 | 71 | foreach ($orders as $order) { 72 | $suborder = $this->MsLoader->MsOrderData->getSuborders(array( 73 | 'order_id' => $order['order_id'], 74 | 'seller_id' => $this->customer->getId(), 75 | 'single' => 1 76 | )); 77 | 78 | $status_name = $this->MsLoader->MsHelper->getStatusName(array('order_status_id' => $order['order_status_id'])); 79 | 80 | if (isset($suborder['order_status_id']) && $suborder['order_status_id'] && $order['order_status_id'] != $suborder['order_status_id']) { 81 | $status_name .= ' (' . $this->MsLoader->MsHelper->getStatusName(array('order_status_id' => $suborder['order_status_id'])) . ')'; 82 | } 83 | 84 | $products = $this->MsLoader->MsOrderData->getOrderProducts(array('order_id' => $order['order_id'], 'seller_id' => $seller_id)); 85 | 86 | foreach($products as $key=>$p) 87 | $products[$key]['options'] = $this->model_account_order->getOrderOptions($order['order_id'], $p['order_product_id']); 88 | 89 | $this->data['orders'][] = array( 90 | 'order_id' => $order['order_id'], 91 | 'customer' => "{$order['firstname']} {$order['lastname']} ({$order['email']})", 92 | 'status' => $status_name, 93 | 'products' => $products, 94 | 'date_created' => date($this->language->get('date_format_short'), strtotime($order['date_added'])), 95 | 'total' => $this->currency->format($this->MsLoader->MsOrderData->getOrderTotal($order['order_id'], array('seller_id' => $seller_id)), $this->config->get('config_currency')) 96 | ); 97 | } 98 | 99 | $this->data['link_back'] = $this->url->link('account/account', '', 'SSL'); 100 | 101 | $this->document->setTitle($this->language->get('ms_account_dashboard_heading')); 102 | 103 | $this->data['breadcrumbs'] = $this->MsLoader->MsHelper->setBreadcrumbs(array( 104 | array( 105 | 'text' => $this->language->get('text_account'), 106 | 'href' => $this->url->link('account/account', '', 'SSL'), 107 | ), 108 | array( 109 | 'text' => $this->language->get('ms_account_dashboard_breadcrumbs'), 110 | 'href' => $this->url->link('seller/account-dashboard', '', 'SSL'), 111 | ) 112 | )); 113 | 114 | list($template, $children) = $this->MsLoader->MsHelper->loadTemplate('account-dashboard'); 115 | $this->response->setOutput($this->load->view($template, array_merge($this->data, $children))); 116 | } 117 | } 118 | 119 | ?> 120 | -------------------------------------------------------------------------------- /upload/catalog/controller/seller/account-withdrawal.php: -------------------------------------------------------------------------------- 1 | request->post; 6 | 7 | $seller = $this->MsLoader->MsSeller->getSeller($this->customer->getId()); 8 | $balance = $this->MsLoader->MsBalance->getAvailableSellerFunds($this->customer->getId()); 9 | 10 | $json = array(); 11 | 12 | if (!$this->MsLoader->MsSeller->getPaypal()) { 13 | $json['errors']['withdraw_amount'] = $this->language->get('ms_account_withdraw_no_paypal'); 14 | $this->response->setOutput(json_encode($json)); 15 | return; 16 | } 17 | 18 | if (!isset($data['withdraw_amount'])) { 19 | $data['withdraw_amount'] = $balance; 20 | } 21 | 22 | if (preg_match("/[^0-9.]/",$data['withdraw_amount']) || (float)$data['withdraw_amount'] <= 0) { 23 | $json['errors']['withdraw_amount'] = $this->language->get('ms_error_withdraw_amount'); 24 | } else { 25 | $data['withdraw_amount'] = (float)$data['withdraw_amount']; 26 | if ($data['withdraw_amount'] > $balance) { 27 | $json['errors']['withdraw_amount'] = $this->language->get('ms_error_withdraw_balance'); 28 | } else if ($data['withdraw_amount'] < $this->config->get('msconf_minimum_withdrawal_amount')) { 29 | $json['errors']['withdraw_amount'] = $this->language->get('ms_error_withdraw_minimum'); 30 | } 31 | } 32 | 33 | if (empty($json['errors'])) { 34 | $this->MsLoader->MsPayment->createPayment(array( 35 | 'seller_id' => $this->customer->getId(), 36 | 'payment_type' => MsPayment::TYPE_PAYOUT_REQUEST, 37 | 'payment_status' => MsPayment::STATUS_UNPAID, 38 | 'payment_method' => MsPayment::METHOD_PAYPAL, 39 | 'payment_data' => $seller['ms.paypal'], 40 | 'amount' => $data['withdraw_amount'], 41 | 'currency_id' => $this->currency->getId($this->config->get('config_currency')), 42 | 'currency_code' => $this->currency->getCode($this->config->get('config_currency')), 43 | 'description' => sprintf($this->language->get('ms_account_withdraw_description'), $this->language->get('ms_account_withdraw_method_paypal'), $seller['ms.paypal'], date($this->language->get('date_format_short'))), 44 | ) 45 | ); 46 | 47 | $mails[] = array( 48 | 'type' => MsMail::SMT_WITHDRAW_REQUEST_SUBMITTED 49 | ); 50 | $mails[] = array( 51 | 'type' => MsMail::AMT_WITHDRAW_REQUEST_SUBMITTED, 52 | ); 53 | 54 | $this->MsLoader->MsMail->sendMails($mails); 55 | 56 | $this->session->data['success'] = $this->language->get('ms_request_submitted'); 57 | $json['redirect'] = $this->url->link('account/account', '', 'SSL'); 58 | } 59 | $this->response->setOutput(json_encode($json)); 60 | } 61 | 62 | public function index() { 63 | if (!$this->config->get('msconf_allow_withdrawal_requests')) 64 | $this->response->redirect($this->url->link('account/account', '', 'SSL')); 65 | 66 | $seller_id = $this->customer->getId(); 67 | 68 | $seller_balance = $this->MsLoader->MsBalance->getSellerBalance($seller_id); 69 | $pending_funds = $this->MsLoader->MsBalance->getReservedSellerFunds($seller_id); 70 | $waiting_funds = $this->MsLoader->MsBalance->getWaitingSellerFunds($seller_id); 71 | $available_balance = $this->MsLoader->MsBalance->getAvailableSellerFunds($seller_id); 72 | 73 | $balance_formatted = $this->currency->format($this->MsLoader->MsBalance->getSellerBalance($seller_id),$this->config->get('config_currency')); 74 | $balance_reserved_formatted = $pending_funds > 0 ? sprintf($this->language->get('ms_account_balance_reserved_formatted'), $this->currency->format($pending_funds)) . ', ' : ''; 75 | $balance_reserved_formatted .= $waiting_funds > 0 ? sprintf($this->language->get('ms_account_balance_waiting_formatted'), $this->currency->format($waiting_funds)) . ', ' : ''; 76 | $balance_reserved_formatted = ($balance_reserved_formatted == '' ? '' : '(' . substr($balance_reserved_formatted, 0, -2) . ')'); 77 | 78 | $this->data['ms_account_balance_formatted'] = $balance_formatted; 79 | $this->data['ms_account_reserved_formatted'] = $balance_reserved_formatted; 80 | 81 | $this->document->addScript('catalog/view/javascript/account-withdrawal.js'); 82 | 83 | $this->data['balance'] = $seller_balance; 84 | $this->data['balance_formatted'] = $this->currency->format($this->data['balance'],$this->config->get('config_currency')); 85 | 86 | $this->data['balance_available'] = $available_balance; 87 | $this->data['balance_available_formatted'] = $this->currency->format($available_balance, $this->config->get('config_currency')); 88 | 89 | $this->data['paypal'] = $this->MsLoader->MsSeller->getPaypal(); 90 | $this->data['msconf_allow_partial_withdrawal'] = $this->config->get('msconf_allow_partial_withdrawal'); 91 | $this->data['currency_code'] = $this->config->get('config_currency'); 92 | 93 | if ($available_balance - $this->config->get('msconf_minimum_withdrawal_amount') >= 0) { 94 | $this->data['withdrawal_minimum_reached'] = TRUE; 95 | } else { 96 | $this->data['withdrawal_minimum_reached'] = FALSE; 97 | } 98 | 99 | $this->data['link_back'] = $this->url->link('account/account', '', 'SSL'); 100 | $this->document->setTitle($this->language->get('ms_account_withdraw_heading')); 101 | 102 | $this->data['breadcrumbs'] = $this->MsLoader->MsHelper->setBreadcrumbs(array( 103 | array( 104 | 'text' => $this->language->get('text_account'), 105 | 'href' => $this->url->link('account/account', '', 'SSL'), 106 | ), 107 | array( 108 | 'text' => $this->language->get('ms_account_dashboard_breadcrumbs'), 109 | 'href' => $this->url->link('seller/account-dashboard', '', 'SSL'), 110 | ), 111 | array( 112 | 'text' => $this->language->get('ms_account_withdraw_breadcrumbs'), 113 | 'href' => $this->url->link('seller/account-withdrawal', '', 'SSL'), 114 | ) 115 | )); 116 | 117 | list($template, $children) = $this->MsLoader->MsHelper->loadTemplate('account-withdrawal'); 118 | $this->response->setOutput($this->load->view($template, array_merge($this->data, $children))); 119 | } 120 | } 121 | 122 | ?> 123 | -------------------------------------------------------------------------------- /upload/catalog/controller/seller/account.php: -------------------------------------------------------------------------------- 1 | document->addStyle('catalog/view/javascript/multimerch/datatables/css/jquery.dataTables.css'); 10 | $this->document->addScript('catalog/view/javascript/multimerch/datatables/js/jquery.dataTables.min.js'); 11 | $this->document->addScript('catalog/view/javascript/multimerch/common.js'); 12 | $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/moment.js'); 13 | $this->document->addScript('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.js'); 14 | $this->document->addStyle('catalog/view/javascript/jquery/datetimepicker/bootstrap-datetimepicker.min.css'); 15 | 16 | $this->data = array_merge($this->data, $this->load->language('multiseller/multiseller'),$this->load->language('account/account')); 17 | $parts = explode('/', $this->request->request['route']); 18 | 19 | if (isset($parts[2]) && in_array($parts[2], array('jxUpdateFile','jxUploadImages', 'jxUploadDownloads', 'jxUploadSellerAvatar'))) { 20 | if (empty($_POST) || empty($_FILES)) 21 | return; 22 | // Re-create session as Flash doesn't pass session info 23 | if (isset($_POST['session_id'])) { 24 | if (!isset($this->session->data['customer_id'])) { 25 | session_destroy(); 26 | $_COOKIE['PHPSESSID'] = $_POST['session_id']; 27 | $registry->set('session', new Session()); 28 | } 29 | if (isset($_SESSION['customer_id'])) { 30 | $salt = $this->MsLoader->MsSeller->getSalt($_SESSION['customer_id']); 31 | if (isset($_POST['token']) && isset($_POST['timestamp']) && $_POST['token'] == md5($salt . $_POST['timestamp'])) { 32 | $this->session->data['customer_id'] = $_SESSION['customer_id']; 33 | $this->customer = new Customer($this->registry); 34 | // todo re-initialize seller object 35 | } 36 | } 37 | } 38 | } 39 | 40 | if (!$this->customer->isLogged()) { 41 | $this->session->data['redirect'] = $this->url->link('account/account', '', 'SSL'); 42 | $this->response->redirect($this->url->link('account/login', '', 'SSL')); 43 | } else if (!$this->MsLoader->MsSeller->isSeller()) { 44 | if (!array_intersect($parts, array('account-profile', 'jxsavesellerinfo', 'jxUploadSellerAvatar'))) { 45 | $this->response->redirect($this->url->link('seller/account-profile', '', 'SSL')); 46 | } 47 | } else if ($this->MsLoader->MsSeller->getStatus() != MsSeller::STATUS_ACTIVE) { 48 | $allowed_routes = array('account-profile', 'jxsavesellerinfo', 'jxUploadSellerAvatar'); 49 | if ($this->MsLoader->MsSeller->getStatus() == MsSeller::STATUS_INACTIVE && $this->config->get('msconf_allow_inactive_seller_products')) { 50 | $allowed_routes[] = 'account-product'; 51 | $allowed_routes[] = 'jxSubmitProduct'; 52 | $allowed_routes[] = 'jxUploadDownloads'; 53 | $allowed_routes[] = 'jxUploadImages'; 54 | $allowed_routes[] = 'jxAutocomplete'; 55 | $allowed_routes[] = 'tab-shipping'; 56 | } 57 | if (!array_intersect($parts, $allowed_routes)) { 58 | $this->response->redirect($this->url->link('seller/account-profile', '', 'SSL')); 59 | } 60 | } 61 | 62 | if (isset($this->session->data['success'])) { 63 | $this->data['success'] = $this->session->data['success']; 64 | unset($this->session->data['success']); 65 | } else { 66 | $this->data['success'] = ''; 67 | } 68 | 69 | $this->MsLoader->MsHelper->addStyle('multiseller'); 70 | 71 | if (!isset($this->session->data['multiseller']['files'])) 72 | $this->session->data['multiseller']['files'] = array(); 73 | } 74 | } 75 | ?> 76 | -------------------------------------------------------------------------------- /upload/catalog/controller/seller/catalog.php: -------------------------------------------------------------------------------- 1 | MsLoader->MsHelper->addStyle('multiseller'); 8 | $this->data = array_merge($this->data, $this->load->language('multiseller/multiseller'),$this->language->load('product/product')); 9 | } 10 | } 11 | ?> -------------------------------------------------------------------------------- /upload/catalog/model/localisation/order_status.php: -------------------------------------------------------------------------------- 1 | config->get('config_language_id'); 5 | 6 | if ($data) { 7 | $sql = "SELECT * FROM " . DB_PREFIX . "order_status WHERE language_id = $language_id"; 8 | 9 | $sql .= " ORDER BY name"; 10 | 11 | if (isset($data['order']) && ($data['order'] == 'DESC')) { 12 | $sql .= " DESC"; 13 | } else { 14 | $sql .= " ASC"; 15 | } 16 | 17 | if (isset($data['start']) || isset($data['limit'])) { 18 | if ($data['start'] < 0) { 19 | $data['start'] = 0; 20 | } 21 | 22 | if ($data['limit'] < 1) { 23 | $data['limit'] = 20; 24 | } 25 | 26 | $sql .= " LIMIT " . (int)$data['start'] . "," . (int)$data['limit']; 27 | } 28 | 29 | $query = $this->db->query($sql); 30 | 31 | return $query->rows; 32 | } else { 33 | $order_status_data = $this->cache->get('order_status.' . $language_id); 34 | 35 | if (!$order_status_data) { 36 | $query = $this->db->query("SELECT order_status_id, name FROM " . DB_PREFIX . "order_status WHERE language_id = $language_id ORDER BY name"); 37 | 38 | $order_status_data = $query->rows; 39 | 40 | $this->cache->set('order_status.' . $language_id, $order_status_data); 41 | } 42 | 43 | return $order_status_data; 44 | } 45 | } 46 | 47 | public function getOrderStatusDescriptions($order_status_id) { 48 | $order_status_data = array(); 49 | 50 | $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "order_status WHERE order_status_id = '" . (int)$order_status_id . "'"); 51 | 52 | foreach ($query->rows as $result) { 53 | $order_status_data[$result['language_id']] = array('name' => $result['name']); 54 | } 55 | 56 | return $order_status_data; 57 | } 58 | } 59 | ?> -------------------------------------------------------------------------------- /upload/catalog/view/javascript/account-withdrawal.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $('input[name="withdraw_all"]').change(function() { 3 | if ($(this).val() == 1) { 4 | $('input[name="withdraw_amount"]').attr('disabled','disabled'); 5 | } else { 6 | $('input[name="withdraw_amount"]').removeAttr('disabled'); 7 | } 8 | }); 9 | 10 | $("#ms-submit-request").click(function() { 11 | $.ajax({ 12 | type: "POST", 13 | dataType: "json", 14 | url: $('base').attr('href') + 'index.php?route=seller/account-withdrawal/jxrequestmoney', 15 | data: $(this).parents("form").serialize(), 16 | beforeSend: function() { 17 | $('#ms-withdrawal a.button').hide().before(' '); 18 | }, 19 | success: function(jsonData) { 20 | $('.error').text(''); 21 | if (!jQuery.isEmptyObject(jsonData.errors)) { 22 | $('#ms-withdrawal a.button').show().prev('span.wait').remove(); 23 | for (error in jsonData.errors) { 24 | if (!jsonData.errors.hasOwnProperty(error)) { 25 | continue; 26 | } 27 | $('#error_'+error).text(jsonData.errors[error]); 28 | window.scrollTo(0,0); 29 | 30 | } 31 | } else { 32 | location = jsonData['redirect']; 33 | } 34 | } 35 | }); 36 | }); 37 | }); 38 | -------------------------------------------------------------------------------- /upload/catalog/view/javascript/dialog-sellercontact.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $("#sendMessage").click(function() { 3 | $.ajax({ 4 | type: "POST", 5 | dataType: "json", 6 | url: $('base').attr('href') + 'index.php?route=seller/catalog-seller/jxSubmitContactDialog', 7 | data: $("#contactForm").serialize(), 8 | beforeSend: function() { 9 | }, 10 | complete: function() { 11 | }, 12 | success: function(data) { 13 | $('#contactDialog').find('.alert-danger, .alert-success').remove(); 14 | 15 | if (!jQuery.isEmptyObject(data.errors)) { 16 | console.log(data.errors); 17 | for (error in data.errors) { 18 | $('#contactDialog .modal-body').append('
' + data.errors[error] + '
'); 19 | } 20 | } 21 | 22 | if (data.success) { 23 | $('#contactDialog').find('textarea').val(''); 24 | $('#contactDialog .modal-body').append('
' + data.success + '
'); 25 | } 26 | } 27 | }); 28 | }); 29 | }); 30 | -------------------------------------------------------------------------------- /upload/catalog/view/javascript/ms-common.js: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/ms-common.js -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/account-product-form-options.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | // load options tab 3 | $('#tab-options').load($('base').attr('href') + 'index.php?route=seller/account-product/jxRenderOptions&product_id=' + msGlobals.product_id, function(data){ 4 | // load existing product options 5 | if (msGlobals.product_id.length > 0) { 6 | $.get($('base').attr('href') + 'index.php?route=seller/account-product/jxRenderProductOptions&product_id=' + msGlobals.product_id, function(data) { 7 | $('div.options').append(data).find('input[name$="[option_id]"]').each(function(index) { 8 | $(this).closest('.ms-options').find('.select_option option[value="'+ $(this).val() + '"]').attr('disabled', true ); 9 | }); 10 | }); 11 | } 12 | }); 13 | 14 | // option handlers 15 | // delete 16 | $('body').delegate(".option_delete", "click", function() { 17 | var option_id = $(this).closest('.option').find('input[name$="[option_id]"]').val(); 18 | $(this).closest('.ms-options').find('.select_option option[value="'+ option_id + '"]').attr('disabled', false); 19 | $(this).closest('.option').remove(); 20 | }); 21 | 22 | // add 23 | $('body').delegate(".select_option", "change", function() { 24 | $(this).children(':selected').attr('disabled', 'disabled'); 25 | var option_id = $(this).children(':selected').val(); 26 | var select = this; 27 | 28 | $.get($('base').attr('href') + 'index.php?route=seller/account-product/jxRenderOptionValues&option_id=' + option_id, function(data) { 29 | var lastRow = $(select).parents('.ms-options').find('.option:last input:last').attr('name'); 30 | 31 | if (typeof lastRow == "undefined") { 32 | var newRowNum = 1; 33 | } else { 34 | var newRowNum = parseInt(lastRow.match(/[0-9]+/g).shift()) + 1; 35 | } 36 | 37 | var data = $(data); 38 | data.find('input,select').attr('name', function(i,name) { 39 | if (name) return name.replace('product_option[0]','product_option[' + newRowNum + ']'); 40 | }); 41 | $('div.options').append(data); 42 | }); 43 | $(this).val(0); 44 | }); 45 | 46 | 47 | // value handlers 48 | // add 49 | $('body').delegate("select.select_option_value", "change", function() { 50 | $(this).children(':selected').attr('disabled', 'disabled'); 51 | var newVal = $(this).closest('.o-content').find('.option_value.ffSample').mmClone(); 52 | newVal.find('.option_name').text($(this).children(':selected').text()); 53 | newVal.find('input[name$="[option_value_id]"]').val($(this).children(':selected').val()); 54 | $(this).val(0); 55 | }); 56 | 57 | $.fn.mmClone = function() { 58 | var lastRow = $(this).closest('div.mmCtr').find('div:last input:last').attr('name'); 59 | 60 | if (typeof lastRow == "undefined") { 61 | var newRowNum = 1; 62 | } else { 63 | var newRowNum = parseInt(lastRow.match(/[0-9]+/g).pop()) + 1; 64 | } 65 | 66 | var newRow = $(this).clone(); 67 | newRow.find('input,select').attr('name', function(i,name) { 68 | return name.replace('[product_option_value][0]','[product_option_value][' + newRowNum + ']'); 69 | }); 70 | 71 | $(this).closest('div.mmCtr').append(newRow.removeClass('ffSample')); 72 | 73 | return newRow; 74 | } 75 | 76 | // change prefix 77 | $('body').delegate(".option_price_prefix", "click", function() { 78 | $(this).toggleClass('plus minus'); 79 | var prefix = $(this).closest('.option_value').find('input[name$="[price_prefix]"]'); 80 | prefix.val(prefix.val() === "-" ? "+" : "-"); 81 | }); 82 | 83 | // change required 84 | $('body').delegate(".option_required", "click", function() { 85 | $(this).toggleClass('bw'); 86 | var required = $(this).closest('.option').find('input[name$="[required]"]'); 87 | required.val(required.val() === "1" ? "0" : "1"); 88 | }); 89 | 90 | // delete 91 | $('body').delegate(".option_value_delete", "click", function() { 92 | var option_value_id = $(this).closest('.option_value').find('input[name$="[option_value_id]"]').val(); 93 | $(this).closest('.option').find('.select_option_value option[value="'+ option_value_id + '"]').attr('disabled', false); 94 | $(this).closest('.option_value').remove(); 95 | }); 96 | }); -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/account-register-seller.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $("#ms-submit-button").click(function() { 3 | var button = $(this); 4 | 5 | $.ajax({ 6 | type: "POST", 7 | dataType: "json", 8 | url: $('base').attr('href') + 'index.php?route=account/register-seller/jxsavesellerinfo', 9 | data: $("form#seller-form").serialize(), 10 | beforeSend: function() { 11 | button.hide(); 12 | $('p.error').remove(); 13 | $('.warning.main').hide(); 14 | $('.form-group').removeClass("has-error"); 15 | }, 16 | complete: function(jqXHR, textStatus) { 17 | if (textStatus != 'success') { 18 | button.show(); 19 | $(".warning.main").text(msGlobals.formError).show(); 20 | window.scrollTo(0,0); 21 | } 22 | }, 23 | success: function(jsonData) { 24 | if (!jQuery.isEmptyObject(jsonData.errors)) { 25 | $('#ms-submit-button').show().prev('span.wait').remove(); 26 | $('.error').text(''); 27 | 28 | for (error in jsonData.errors) { 29 | if ($('#error_' + error).length > 0) { 30 | $('#error_' + error).text(jsonData.errors[error]); 31 | $('#error_' + error).parents('.form-group').addClass('has-error'); 32 | } else if ($('[name="'+error+'"]').length > 0) { 33 | $('[name="' + error + '"]').parents('.form-group').addClass('has-error'); 34 | $('[name="' + error + '"]').parents('div:first').append('

' + jsonData.errors[error] + '

'); 35 | } else $(".warning.main").append("

" + jsonData.errors[error] + "

").show(); 36 | } 37 | window.scrollTo(0,0); 38 | } else { 39 | window.location = jsonData.redirect; 40 | } 41 | } 42 | }); 43 | }); 44 | }); -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/common.js: -------------------------------------------------------------------------------- 1 | $(function() { 2 | $.fn.dataTableExt.sErrMode = 'throw'; 3 | 4 | if (typeof config_language != 'undefined') { 5 | $.extend($.fn.dataTable.defaults, { 6 | "oLanguage": { 7 | "sUrl": config_language 8 | } 9 | }); 10 | } 11 | 12 | $.extend($.fn.dataTable.defaults, { 13 | "bProcessing": true, 14 | "bSortCellsTop": true, 15 | "bServerSide": true, 16 | "sPaginationType": "full_numbers", 17 | "aaSorting": [], 18 | "bAutoWidth": false, 19 | "bLengthChange": false, 20 | "sDom": 'rt<"pagination"pi><"clear">', 21 | "asStripeClasses": [], 22 | // todo insert proper value 23 | "iDisplayLength": 10 24 | }); 25 | 26 | $("body").delegate(".dataTable .filter input[type='text']", "keyup", function() { 27 | $(this).parents(".dataTable").dataTable().fnFilter(this.value, $(this).parents(".dataTable").find("thead tr.filter td").index($(this).parent("td"))); 28 | }); 29 | }); -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/css/jquery.dataTables.css: -------------------------------------------------------------------------------- 1 | 2 | /* 3 | * Table 4 | */ 5 | table.dataTable { 6 | margin: 0 auto; 7 | clear: both; 8 | width: 100%; 9 | } 10 | 11 | table.dataTable thead th { 12 | padding: 3px 18px 3px 10px; 13 | border-bottom: 1px solid black; 14 | font-weight: bold; 15 | cursor: pointer; 16 | *cursor: hand; 17 | } 18 | 19 | table.dataTable tfoot th { 20 | padding: 3px 18px 3px 10px; 21 | border-top: 1px solid black; 22 | font-weight: bold; 23 | } 24 | 25 | table.dataTable td { 26 | padding: 3px 10px; 27 | } 28 | 29 | table.dataTable td.center, 30 | table.dataTable td.dataTables_empty { 31 | text-align: center; 32 | } 33 | 34 | table.dataTable tr.odd { background-color: #E2E4FF; } 35 | table.dataTable tr.even { background-color: white; } 36 | 37 | table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; } 38 | table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; } 39 | table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; } 40 | table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; } 41 | table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; } 42 | table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; } 43 | 44 | 45 | /* 46 | * Table wrapper 47 | */ 48 | .dataTables_wrapper { 49 | position: relative; 50 | clear: both; 51 | *zoom: 1; 52 | } 53 | 54 | 55 | /* 56 | * Page length menu 57 | */ 58 | .dataTables_length { 59 | float: left; 60 | } 61 | 62 | 63 | /* 64 | * Filter 65 | */ 66 | .dataTables_filter { 67 | float: right; 68 | text-align: right; 69 | } 70 | 71 | 72 | /* 73 | * Table information 74 | */ 75 | .dataTables_info { 76 | clear: both; 77 | float: left; 78 | } 79 | 80 | 81 | /* 82 | * Pagination 83 | */ 84 | .dataTables_paginate { 85 | float: right; 86 | text-align: right; 87 | } 88 | 89 | /* Two button pagination - previous / next */ 90 | .paginate_disabled_previous, 91 | .paginate_enabled_previous, 92 | .paginate_disabled_next, 93 | .paginate_enabled_next { 94 | height: 19px; 95 | float: left; 96 | cursor: pointer; 97 | *cursor: hand; 98 | color: #111 !important; 99 | } 100 | .paginate_disabled_previous:hover, 101 | .paginate_enabled_previous:hover, 102 | .paginate_disabled_next:hover, 103 | .paginate_enabled_next:hover { 104 | text-decoration: none !important; 105 | } 106 | .paginate_disabled_previous:active, 107 | .paginate_enabled_previous:active, 108 | .paginate_disabled_next:active, 109 | .paginate_enabled_next:active { 110 | outline: none; 111 | } 112 | 113 | .paginate_disabled_previous, 114 | .paginate_disabled_next { 115 | color: #666 !important; 116 | } 117 | .paginate_disabled_previous, 118 | .paginate_enabled_previous { 119 | padding-left: 23px; 120 | } 121 | .paginate_disabled_next, 122 | .paginate_enabled_next { 123 | padding-right: 23px; 124 | margin-left: 10px; 125 | } 126 | 127 | .paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; } 128 | .paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; } 129 | .paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; } 130 | 131 | .paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; } 132 | .paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; } 133 | .paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; } 134 | 135 | /* Full number pagination */ 136 | .paging_full_numbers { 137 | height: 22px; 138 | line-height: 22px; 139 | } 140 | .paging_full_numbers a:active { 141 | outline: none 142 | } 143 | .paging_full_numbers a:hover { 144 | text-decoration: none; 145 | } 146 | 147 | .paging_full_numbers a.paginate_button, 148 | .paging_full_numbers a.paginate_active { 149 | border: 1px solid #aaa; 150 | -webkit-border-radius: 5px; 151 | -moz-border-radius: 5px; 152 | border-radius: 5px; 153 | padding: 2px 5px; 154 | margin: 0 3px; 155 | cursor: pointer; 156 | *cursor: hand; 157 | color: #333 !important; 158 | } 159 | 160 | .paging_full_numbers a.paginate_button { 161 | background-color: #ddd; 162 | } 163 | 164 | .paging_full_numbers a.paginate_button:hover { 165 | background-color: #ccc; 166 | text-decoration: none !important; 167 | } 168 | 169 | .paging_full_numbers a.paginate_active { 170 | background-color: #99B3FF; 171 | } 172 | 173 | 174 | /* 175 | * Processing indicator 176 | */ 177 | .dataTables_processing { 178 | position: absolute; 179 | top: 50%; 180 | left: 50%; 181 | width: 250px; 182 | height: 30px; 183 | margin-left: -125px; 184 | margin-top: -15px; 185 | padding: 14px 0 2px 0; 186 | border: 1px solid #ddd; 187 | text-align: center; 188 | color: #999; 189 | font-size: 14px; 190 | background-color: white; 191 | } 192 | 193 | 194 | /* 195 | * Sorting 196 | */ 197 | .sorting { background: url('../images/sort_both.png') no-repeat center right; } 198 | .sorting_asc { background: url('../images/sort_asc.png') no-repeat center right; } 199 | .sorting_desc { background: url('../images/sort_desc.png') no-repeat center right; } 200 | 201 | .sorting_asc_disabled { background: url('../images/sort_asc_disabled.png') no-repeat center right; } 202 | .sorting_desc_disabled { background: url('../images/sort_desc_disabled.png') no-repeat center right; } 203 | 204 | table.dataTable thead th:active, 205 | table.dataTable thead td:active { 206 | outline: none; 207 | } 208 | 209 | 210 | /* 211 | * Scrolling 212 | */ 213 | .dataTables_scroll { 214 | clear: both; 215 | } 216 | 217 | .dataTables_scrollBody { 218 | *margin-top: -1px; 219 | -webkit-overflow-scrolling: touch; 220 | } 221 | 222 | -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/css/jquery.dataTables_themeroller.css: -------------------------------------------------------------------------------- 1 | 2 | 3 | /* 4 | * Table 5 | */ 6 | table.dataTable { 7 | margin: 0 auto; 8 | clear: both; 9 | width: 100%; 10 | border-collapse: collapse; 11 | } 12 | 13 | table.dataTable thead th { 14 | padding: 3px 0px 3px 10px; 15 | cursor: pointer; 16 | *cursor: hand; 17 | } 18 | 19 | table.dataTable tfoot th { 20 | padding: 3px 10px; 21 | } 22 | 23 | table.dataTable td { 24 | padding: 3px 10px; 25 | } 26 | 27 | table.dataTable td.center, 28 | table.dataTable td.dataTables_empty { 29 | text-align: center; 30 | } 31 | 32 | table.dataTable tr.odd { background-color: #E2E4FF; } 33 | table.dataTable tr.even { background-color: white; } 34 | 35 | table.dataTable tr.odd td.sorting_1 { background-color: #D3D6FF; } 36 | table.dataTable tr.odd td.sorting_2 { background-color: #DADCFF; } 37 | table.dataTable tr.odd td.sorting_3 { background-color: #E0E2FF; } 38 | table.dataTable tr.even td.sorting_1 { background-color: #EAEBFF; } 39 | table.dataTable tr.even td.sorting_2 { background-color: #F2F3FF; } 40 | table.dataTable tr.even td.sorting_3 { background-color: #F9F9FF; } 41 | 42 | 43 | /* 44 | * Table wrapper 45 | */ 46 | .dataTables_wrapper { 47 | position: relative; 48 | clear: both; 49 | *zoom: 1; 50 | } 51 | .dataTables_wrapper .ui-widget-header { 52 | font-weight: normal; 53 | } 54 | .dataTables_wrapper .ui-toolbar { 55 | padding: 5px; 56 | } 57 | 58 | 59 | /* 60 | * Page length menu 61 | */ 62 | .dataTables_length { 63 | float: left; 64 | } 65 | 66 | 67 | /* 68 | * Filter 69 | */ 70 | .dataTables_filter { 71 | float: right; 72 | text-align: right; 73 | } 74 | 75 | 76 | /* 77 | * Table information 78 | */ 79 | .dataTables_info { 80 | padding-top: 3px; 81 | clear: both; 82 | float: left; 83 | } 84 | 85 | 86 | /* 87 | * Pagination 88 | */ 89 | .dataTables_paginate { 90 | float: right; 91 | text-align: right; 92 | } 93 | 94 | .dataTables_paginate .ui-button { 95 | margin-right: -0.1em !important; 96 | } 97 | 98 | .paging_two_button .ui-button { 99 | float: left; 100 | cursor: pointer; 101 | * cursor: hand; 102 | } 103 | 104 | .paging_full_numbers .ui-button { 105 | padding: 2px 6px; 106 | margin: 0; 107 | cursor: pointer; 108 | * cursor: hand; 109 | color: #333 !important; 110 | } 111 | 112 | /* Two button pagination - previous / next */ 113 | .paginate_disabled_previous, 114 | .paginate_enabled_previous, 115 | .paginate_disabled_next, 116 | .paginate_enabled_next { 117 | height: 19px; 118 | float: left; 119 | cursor: pointer; 120 | *cursor: hand; 121 | color: #111 !important; 122 | } 123 | .paginate_disabled_previous:hover, 124 | .paginate_enabled_previous:hover, 125 | .paginate_disabled_next:hover, 126 | .paginate_enabled_next:hover { 127 | text-decoration: none !important; 128 | } 129 | .paginate_disabled_previous:active, 130 | .paginate_enabled_previous:active, 131 | .paginate_disabled_next:active, 132 | .paginate_enabled_next:active { 133 | outline: none; 134 | } 135 | 136 | .paginate_disabled_previous, 137 | .paginate_disabled_next { 138 | color: #666 !important; 139 | } 140 | .paginate_disabled_previous, 141 | .paginate_enabled_previous { 142 | padding-left: 23px; 143 | } 144 | .paginate_disabled_next, 145 | .paginate_enabled_next { 146 | padding-right: 23px; 147 | margin-left: 10px; 148 | } 149 | 150 | .paginate_enabled_previous { background: url('../images/back_enabled.png') no-repeat top left; } 151 | .paginate_enabled_previous:hover { background: url('../images/back_enabled_hover.png') no-repeat top left; } 152 | .paginate_disabled_previous { background: url('../images/back_disabled.png') no-repeat top left; } 153 | 154 | .paginate_enabled_next { background: url('../images/forward_enabled.png') no-repeat top right; } 155 | .paginate_enabled_next:hover { background: url('../images/forward_enabled_hover.png') no-repeat top right; } 156 | .paginate_disabled_next { background: url('../images/forward_disabled.png') no-repeat top right; } 157 | 158 | /* Full number pagination */ 159 | .paging_full_numbers a:active { 160 | outline: none 161 | } 162 | .paging_full_numbers a:hover { 163 | text-decoration: none; 164 | } 165 | 166 | .paging_full_numbers a.paginate_button, 167 | .paging_full_numbers a.paginate_active { 168 | border: 1px solid #aaa; 169 | -webkit-border-radius: 5px; 170 | -moz-border-radius: 5px; 171 | border-radius: 5px; 172 | padding: 2px 5px; 173 | margin: 0 3px; 174 | cursor: pointer; 175 | *cursor: hand; 176 | color: #333 !important; 177 | } 178 | 179 | .paging_full_numbers a.paginate_button { 180 | background-color: #ddd; 181 | } 182 | 183 | .paging_full_numbers a.paginate_button:hover { 184 | background-color: #ccc; 185 | text-decoration: none !important; 186 | } 187 | 188 | .paging_full_numbers a.paginate_active { 189 | background-color: #99B3FF; 190 | } 191 | 192 | 193 | /* 194 | * Processing indicator 195 | */ 196 | .dataTables_processing { 197 | position: absolute; 198 | top: 50%; 199 | left: 50%; 200 | width: 250px; 201 | height: 30px; 202 | margin-left: -125px; 203 | margin-top: -15px; 204 | padding: 14px 0 2px 0; 205 | border: 1px solid #ddd; 206 | text-align: center; 207 | color: #999; 208 | font-size: 14px; 209 | background-color: white; 210 | } 211 | 212 | 213 | /* 214 | * Sorting 215 | */ 216 | table.dataTable thead th div.DataTables_sort_wrapper { 217 | position: relative; 218 | padding-right: 20px; 219 | } 220 | 221 | table.dataTable thead th div.DataTables_sort_wrapper span { 222 | position: absolute; 223 | top: 50%; 224 | margin-top: -8px; 225 | right: 0; 226 | } 227 | 228 | table.dataTable th:active { 229 | outline: none; 230 | } 231 | 232 | 233 | /* 234 | * Scrolling 235 | */ 236 | .dataTables_scroll { 237 | clear: both; 238 | } 239 | 240 | .dataTables_scrollBody { 241 | *margin-top: -1px; 242 | -webkit-overflow-scrolling: touch; 243 | } 244 | 245 | -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/back_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/back_disabled.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/back_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/back_enabled.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/back_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/back_enabled_hover.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/favicon.ico -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/forward_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/forward_disabled.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/forward_enabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/forward_enabled.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/forward_enabled_hover.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/forward_enabled_hover.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/sort_asc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/sort_asc.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/sort_asc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/sort_asc_disabled.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/sort_both.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/sort_both.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/sort_desc.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/sort_desc.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/images/sort_desc_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/multimerch/datatables/images/sort_desc_disabled.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/multimerch/datatables/lang/en.lng: -------------------------------------------------------------------------------- 1 | { 2 | "sEmptyTable": "No data available in table", 3 | "sInfo": "Showing _START_ to _END_ of _TOTAL_ entries", 4 | "sInfoEmpty": "Showing 0 to 0 of 0 entries", 5 | "sInfoFiltered": "(filtered from _MAX_ total entries)", 6 | "sInfoPostFix": "", 7 | "sInfoThousands": ",", 8 | "sLengthMenu": "Show _MENU_ entries", 9 | "sLoadingRecords": "Loading...", 10 | "sProcessing": "", 11 | "sSearch": "Search:", 12 | "sZeroRecords": "No matching records found", 13 | "oPaginate": { 14 | "sFirst": "|<", 15 | "sLast": ">|", 16 | "sNext": ">", 17 | "sPrevious": "<" 18 | }, 19 | "oAria": { 20 | "sSortAscending": ": activate to sort column ascending", 21 | "sSortDescending": ": activate to sort column descending" 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.plupload.queue/css/jquery.plupload.queue.css: -------------------------------------------------------------------------------- 1 | /* 2 | Plupload 3 | ------------------------------------------------------------------- */ 4 | 5 | .plupload_button { 6 | display: -moz-inline-box; /* FF < 3*/ 7 | display: inline-block; 8 | font: normal 12px sans-serif; 9 | text-decoration: none; 10 | color: #42454a; 11 | border: 1px solid #bababa; 12 | padding: 2px 8px 3px 20px; 13 | margin-right: 4px; 14 | background: #f3f3f3 url('../img/buttons.png') no-repeat 0 center; 15 | outline: 0; 16 | 17 | /* Optional rounded corners for browsers that support it */ 18 | -moz-border-radius: 3px; 19 | -khtml-border-radius: 3px; 20 | -webkit-border-radius: 3px; 21 | border-radius: 3px; 22 | } 23 | 24 | .plupload_button:hover { 25 | color: #000; 26 | text-decoration: none; 27 | } 28 | 29 | .plupload_disabled, a.plupload_disabled:hover { 30 | color: #737373; 31 | border-color: #c5c5c5; 32 | background: #ededed url('../img/buttons-disabled.png') no-repeat 0 center; 33 | cursor: default; 34 | } 35 | 36 | .plupload_add { 37 | background-position: -181px center; 38 | } 39 | 40 | .plupload_wrapper { 41 | font: normal 11px Verdana,sans-serif; 42 | width: 100%; 43 | } 44 | 45 | .plupload_container { 46 | padding: 8px; 47 | background: url('../img/transp50.png'); 48 | /*-moz-border-radius: 5px;*/ 49 | } 50 | 51 | .plupload_container input { 52 | border: 1px solid #DDD; 53 | font: normal 11px Verdana,sans-serif; 54 | width: 98%; 55 | } 56 | 57 | .plupload_header {background: #2A2C2E url('../img/backgrounds.gif') repeat-x;} 58 | .plupload_header_content { 59 | background: url('../img/backgrounds.gif') no-repeat 0 -317px; 60 | min-height: 56px; 61 | padding-left: 60px; 62 | color: #FFF; 63 | } 64 | .plupload_header_title { 65 | font: normal 18px sans-serif; 66 | padding: 6px 0 3px; 67 | } 68 | .plupload_header_text { 69 | font: normal 12px sans-serif; 70 | } 71 | 72 | .plupload_filelist { 73 | margin: 0; 74 | padding: 0; 75 | list-style: none; 76 | } 77 | 78 | .plupload_scroll .plupload_filelist { 79 | height: 185px; 80 | background: #F5F5F5; 81 | overflow-y: scroll; 82 | } 83 | 84 | .plupload_filelist li { 85 | padding: 10px 8px; 86 | background: #F5F5F5 url('../img/backgrounds.gif') repeat-x 0 -156px; 87 | border-bottom: 1px solid #DDD; 88 | } 89 | 90 | .plupload_filelist_header, .plupload_filelist_footer { 91 | background: #DFDFDF; 92 | padding: 8px 8px; 93 | color: #42454A; 94 | } 95 | .plupload_filelist_header { 96 | border-top: 1px solid #EEE; 97 | border-bottom: 1px solid #CDCDCD; 98 | } 99 | 100 | .plupload_filelist_footer {border-top: 1px solid #FFF; height: 22px; line-height: 20px; vertical-align: middle;} 101 | .plupload_file_name {float: left; overflow: hidden} 102 | .plupload_file_status {color: #777;} 103 | .plupload_file_status span {color: #42454A;} 104 | .plupload_file_size, .plupload_file_status, .plupload_progress { 105 | float: right; 106 | width: 80px; 107 | } 108 | .plupload_file_size, .plupload_file_status, .plupload_file_action {text-align: right;} 109 | 110 | .plupload_filelist .plupload_file_name {width: 205px} 111 | 112 | .plupload_file_action { 113 | float: right; 114 | width: 16px; 115 | height: 16px; 116 | margin-left: 15px; 117 | } 118 | 119 | .plupload_file_action * { 120 | display: none; 121 | width: 16px; 122 | height: 16px; 123 | } 124 | 125 | li.plupload_uploading {background: #ECF3DC url('../img/backgrounds.gif') repeat-x 0 -238px;} 126 | li.plupload_done {color:#AAA} 127 | 128 | li.plupload_delete a { 129 | background: url('../img/delete.gif'); 130 | } 131 | 132 | li.plupload_failed a { 133 | background: url('../img/error.gif'); 134 | cursor: default; 135 | } 136 | 137 | li.plupload_done a { 138 | background: url('../img/done.gif'); 139 | cursor: default; 140 | } 141 | 142 | .plupload_progress, .plupload_upload_status { 143 | display: none; 144 | } 145 | 146 | .plupload_progress_container { 147 | margin-top: 3px; 148 | border: 1px solid #CCC; 149 | background: #FFF; 150 | padding: 1px; 151 | } 152 | .plupload_progress_bar { 153 | width: 0px; 154 | height: 7px; 155 | background: #CDEB8B; 156 | } 157 | 158 | .plupload_scroll .plupload_filelist_header .plupload_file_action, .plupload_scroll .plupload_filelist_footer .plupload_file_action { 159 | margin-right: 17px; 160 | } 161 | 162 | /* Floats */ 163 | 164 | .plupload_clear,.plupload_clearer {clear: both;} 165 | .plupload_clearer, .plupload_progress_bar { 166 | display: block; 167 | font-size: 0; 168 | line-height: 0; 169 | } 170 | 171 | li.plupload_droptext { 172 | background: transparent; 173 | text-align: center; 174 | vertical-align: middle; 175 | border: 0; 176 | line-height: 165px; 177 | } 178 | -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/backgrounds.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/backgrounds.gif -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/buttons-disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/buttons-disabled.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/buttons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/buttons.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/delete.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/delete.gif -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/done.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/done.gif -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/error.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/error.gif -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/throbber.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/throbber.gif -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/transp50.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.plupload.queue/img/transp50.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.ui.plupload/css/jquery.ui.plupload.css: -------------------------------------------------------------------------------- 1 | /* 2 | Plupload 3 | ------------------------------------------------------------------- */ 4 | 5 | .plupload_button {cursor: pointer;} 6 | 7 | .plupload_wrapper { 8 | font: normal 11px Verdana,sans-serif; 9 | width: 100%; 10 | } 11 | 12 | .plupload .plupload_container input {width: 98%;} 13 | .plupload .plupload_filelist_footer {border-width: 1px 0 0 0} 14 | .plupload .plupload_filelist_header {border-width: 0 0 1px 0} 15 | div.plupload .plupload_file {border-width: 0 0 1px 0} 16 | div.plupload div.plupload_header {border-width: 0 0 1px 0; position: relative;} 17 | 18 | .plupload_file .ui-icon { 19 | cursor:pointer; 20 | } 21 | 22 | .plupload_header_content { 23 | background-image: url('../img/plupload.png'); 24 | background-repeat: no-repeat; 25 | background-position: 8px center; 26 | min-height: 56px; 27 | padding-left: 60px; 28 | position:relative; 29 | } 30 | .plupload_header_content_bw {background-image: url('../img/plupload-bw.png');} 31 | .plupload_header_title { 32 | font: normal 18px sans-serif; 33 | padding: 6px 0 3px; 34 | } 35 | .plupload_header_text {font: normal 12px sans-serif;} 36 | 37 | .plupload_filelist, 38 | .plupload_filelist_content { 39 | border-collapse: collapse; 40 | margin: 0; 41 | padding: 0; 42 | width: 100%; 43 | -moz-user-select:none; 44 | -webkit-user-select:none; 45 | user-select:none; 46 | } 47 | 48 | .plupload_cell {padding: 8px 6px;} 49 | 50 | .plupload_file { 51 | border-left: none; 52 | border-right: none; 53 | } 54 | 55 | .plupload .ui-sortable-helper, 56 | .plupload .ui-sortable .plupload_file { 57 | cursor:move; 58 | } 59 | 60 | .plupload_scroll { 61 | max-height: 180px; 62 | min-height: 168px; 63 | _height: 168px; 64 | overflow-y: auto; 65 | } 66 | 67 | .plupload_file_size, .plupload_file_status {text-align: right;} 68 | .plupload_file_size, .plupload_file_status {width: 52px;} 69 | .plupload_file_action {width: 16px;} 70 | .plupload_file_name { 71 | overflow: hidden; 72 | padding-left: 10px; 73 | } 74 | 75 | .plupload_file_rename { 76 | width:95%; 77 | } 78 | 79 | .plupload_progress {width: 60px;} 80 | .plupload_progress_container {padding: 1px;} 81 | 82 | 83 | /* Floats */ 84 | 85 | .plupload_right {float: right;} 86 | .plupload_left {float: left;} 87 | .plupload_clear,.plupload_clearer {clear: both;} 88 | .plupload_clearer, .plupload_progress_bar { 89 | display: block; 90 | font-size: 0; 91 | line-height: 0; 92 | } 93 | .plupload_clearer {height: 0;} 94 | 95 | /* Misc */ 96 | .plupload_hidden {display: none;} 97 | .plupload_droptext { 98 | background: transparent; 99 | text-align: center; 100 | vertical-align: middle; 101 | border: 0; 102 | line-height: 165px; 103 | } 104 | 105 | .plupload_buttons, .plupload_upload_status {float: left} 106 | 107 | .plupload_message { 108 | position: absolute; 109 | top: 0px; 110 | left: 0px; 111 | height: 100%; 112 | width: 100%; 113 | } 114 | 115 | .plupload_message p { 116 | padding:0.7em; 117 | margin:0; 118 | } 119 | 120 | .plupload_message strong { 121 | font-weight: bold; 122 | } 123 | 124 | plupload_message i { 125 | font-style: italic; 126 | } 127 | 128 | .plupload_message p span.ui-icon { 129 | float: left; 130 | margin-right: 0.3em; 131 | } 132 | 133 | .plupload_header_content .ui-state-error, 134 | .plupload_header_content .ui-state-highlight { 135 | border:none; 136 | } 137 | 138 | .plupload_message_close { 139 | position:absolute; 140 | top:5px; 141 | right:5px; 142 | cursor:pointer; 143 | } 144 | 145 | .plupload .ui-sortable-placeholder { 146 | height:35px; 147 | } 148 | -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.ui.plupload/img/plupload-bw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.ui.plupload/img/plupload-bw.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/jquery.ui.plupload/img/plupload.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/smgom/multimerch/9ec253e1a137a2d5729ee59ef0a45f2e7c95e808/upload/catalog/view/javascript/plupload/jquery.ui.plupload/img/plupload.png -------------------------------------------------------------------------------- /upload/catalog/view/javascript/plupload/plupload.browserplus.js: -------------------------------------------------------------------------------- 1 | (function(a){a.runtimes.BrowserPlus=a.addRuntime("browserplus",{getFeatures:function(){return{dragdrop:true,jpgresize:true,pngresize:true,chunks:true,progress:true,multipart:true,multi_selection:true}},init:function(g,i){var e=window.BrowserPlus,h={},d=g.settings,c=d.resize;function f(n){var m,l,j=[],k,o;for(l=0;l0){r(++t,v)}else{k.status=a.DONE;n.trigger("FileUploaded",k,{response:x.value.body,status:w});if(w>=400){n.trigger("Error",{code:a.HTTP_ERROR,message:a.translate("HTTP Error."),file:k,status:w})}}}else{n.trigger("Error",{code:a.GENERIC_ERROR,message:a.translate("Generic Error."),file:k,details:x.error})}})}function q(t){k.size=t.size;if(l){e.FileAccess.chunk({file:t,chunkSize:l},function(w){if(w.success){var x=w.value,u=x.length;o=Array(u);for(var v=0;v';if(d.ua.ie){q=b.createElement("div");l.appendChild(q);q.outerHTML=p;q=null}else{l.innerHTML=p}}());function n(){return b.getElementById(m.id+"_flash")}function j(){if(h++>5000){o({success:false});return}if(g[m.id]===false){setTimeout(j,1)}}j();k=l=null;m.bind("Destroy",function(p){var q;d.removeAllEvents(b.body,p.id);delete g[p.id];delete a[p.id];q=b.getElementById(p.id+"_flash_container");if(q){i.removeChild(q)}});m.bind("Flash:Init",function(){var r={},q;try{n().setFileFilters(m.settings.filters,m.settings.multi_selection)}catch(p){o({success:false});return}if(g[m.id]){return}g[m.id]=true;m.bind("UploadFile",function(s,u){var v=s.settings,t=m.settings.resize||{};n().uploadFile(r[u.id],v.url,{name:u.target_name||u.name,mime:d.mimeTypes[u.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream",chunk_size:v.chunk_size,width:t.width,height:t.height,quality:t.quality,multipart:v.multipart,multipart_params:v.multipart_params||{},file_data_name:v.file_data_name,format:/\.(jpg|jpeg)$/i.test(u.name)?"jpg":"png",headers:v.headers,urlstream_upload:v.urlstream_upload})});m.bind("CancelUpload",function(){n().cancelUpload()});m.bind("Flash:UploadProcess",function(t,s){var u=t.getFile(r[s.id]);if(u.status!=d.FAILED){u.loaded=s.loaded;u.size=s.size;t.trigger("UploadProgress",u)}});m.bind("Flash:UploadChunkComplete",function(s,u){var v,t=s.getFile(r[u.id]);v={chunk:u.chunk,chunks:u.chunks,response:u.text};s.trigger("ChunkUploaded",t,v);if(t.status!==d.FAILED&&s.state!==d.STOPPED){n().uploadNextChunk()}if(u.chunk==u.chunks-1){t.status=d.DONE;s.trigger("FileUploaded",t,{response:u.text})}});m.bind("Flash:SelectFiles",function(s,v){var u,t,w=[],x;for(t=0;t0;u=Math.ceil(q.size/r);if(!n){r=q.size;u=1}function o(){var B,x=t.settings.multipart,w=0,A={name:q.target_name||q.name},y=t.settings.url;function z(D){var C,I="----pluploadboundary"+c.guid(),F="--",H="\r\n",E,G;if(x){h.setRequestHeader("Content-Type","multipart/form-data; boundary="+I);C=google.gears.factory.create("beta.blobbuilder");c.each(c.extend(A,t.settings.multipart_params),function(K,J){C.append(F+I+H+'Content-Disposition: form-data; name="'+J+'"'+H+H);C.append(K+H)});G=c.mimeTypes[q.name.replace(/^.+\.([^.]+)/,"$1").toLowerCase()]||"application/octet-stream";C.append(F+I+H+'Content-Disposition: form-data; name="'+t.settings.file_data_name+'"; filename="'+q.name+'"'+H+"Content-Type: "+G+H+H);C.append(D);C.append(H+F+I+F+H);E=C.getAsBlob();w=E.length-D.length;D=E}h.send(D)}if(q.status==c.DONE||q.status==c.FAILED||t.state==c.STOPPED){return}if(n){A.chunk=v;A.chunks=u}B=Math.min(r,q.size-(v*r));if(!x){y=c.buildUrl(t.settings.url,A)}h=google.gears.factory.create("beta.httprequest");h.open("POST",y);if(!x){h.setRequestHeader("Content-Disposition",'attachment; filename="'+q.name+'"');h.setRequestHeader("Content-Type","application/octet-stream")}c.each(t.settings.headers,function(D,C){h.setRequestHeader(C,D)});h.upload.onprogress=function(C){q.loaded=s+C.loaded-w;t.trigger("UploadProgress",q)};h.onreadystatechange=function(){var C;if(h.readyState==4&&t.state!==c.STOPPED){if(h.status==200){C={chunk:v,chunks:u,response:h.responseText,status:h.status};t.trigger("ChunkUploaded",q,C);if(C.cancelled){q.status=c.FAILED;return}s+=B;if(++v>=u){q.status=c.DONE;t.trigger("FileUploaded",q,{response:h.responseText,status:h.status})}else{o()}}else{t.trigger("Error",{code:c.HTTP_ERROR,message:c.translate("HTTP Error."),file:q,chunk:v,chunks:u,status:h.status})}}};if(v