ebay_new.twig (125874B)
1 {{ header }}{{ column_left }} 2 <div id="content"> 3 <div class="page-header"> 4 <div class="container-fluid"> 5 <div class="pull-right"> <a onclick="confirmAction('{{ cancel }}');" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a> </div> 6 <h1>{{ heading_title }}</h1> 7 <ul class="breadcrumb"> 8 {% for breadcrumb in breadcrumbs %} 9 <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li> 10 {% endfor %} 11 </ul> 12 </div> 13 </div> 14 <div class="container-fluid"> 15 {% if error_warning %} 16 <div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}</div> 17 {% endif %} 18 <div class="panel panel-default"> 19 <div class="panel-heading"> 20 <h3 class="panel-title"><i class="fa fa-list"></i> {{ text_insert }}</h3> 21 </div> 22 <div class="panel-body" id="page-listing"> 23 <form action="{{ action }}" method="post" enctype="multipart/form-data" id="form" class="form-horizontal"> 24 <input type="hidden" name="product_id" value="{{ product.product_id }}" /> 25 <input type="hidden" name="auction_type" value="FixedPriceItem" /> 26 <input type="hidden" name="attributes" value="{{ product.attributes }}" /> 27 <ul class="nav nav-tabs"> 28 <li class="active"><a href="#tab-listing-general" data-toggle="tab">{{ tab_general }}</a></li> 29 <li><a href="#tab-listing-feature" data-toggle="tab">{{ tab_feature }}</a></li> 30 <li style="display: none;" id="listing-compatibility"><a href="#tab-listing-compatibility" data-toggle="tab">{{ entry_compatibility }}</a></li> 31 <li><a href="#tab-listing-catalog" data-toggle="tab">{{ tab_ebay_catalog }}</a></li> 32 <li><a href="#tab-listing-description" data-toggle="tab">{{ tab_description }}</a></li> 33 <li><a href="#tab-listing-images" data-toggle="tab">{{ tab_image }}</a></li> 34 <li><a href="#tab-listing-price" data-toggle="tab">{{ tab_price }}</a></li> 35 <li><a href="#tab-listing-payment" data-toggle="tab">{{ tab_payment }}</a></li> 36 <li><a href="#tab-listing-shipping" data-toggle="tab">{{ tab_shipping }}</a></li> 37 <li><a href="#tab-listing-returns" data-toggle="tab">{{ tab_returns }}</a></li> 38 </ul> 39 <div class="tab-content"> 40 <div id="tab-listing-general" class="tab-pane active"> 41 {% if product.store_cats is not empty %} 42 <div class="form-group"> 43 <label class="col-sm-2 control-label"> <span title="" data-toggle="tooltip" data-original-title="{{ help_shop_category }}">{{ entry_shop_category }}</span> </label> 44 <div class="col-sm-10"> 45 <div class="row form-group"> 46 <div class="col-sm-12"> 47 <div class="input-group category-select-group"> <span class="input-group-addon"><i class="fa fa-angle-right fa-lg"></i></span> 48 <select name="eBayStoreCatId" class="form-control"> 49 <option disabled selected>{{ text_select }}</option> 50 {% for key, cat in product['store_cats'] %} 51 <option value="{{ key }}">{{ cat }}</option> 52 {% endfor %} 53 </select> 54 </div> 55 </div> 56 </div> 57 </div> 58 </div> 59 {% endif %} 60 {% if product.popular_cats is not empty %} 61 <div class="form-group" id="category-popular-row"> 62 <label class="col-sm-2 control-label"> <span title="" data-toggle="tooltip" data-original-title="{{ help_category_popular }}">{{ entry_category_popular }}</span> </label> 63 <div class="col-sm-10"> 64 <p><input type="radio" name="popular" value="" id="popular_default" checked /><strong>{{ text_none }}</strong></p> 65 {% for cat in product.popular_cats %} 66 <p><input type="radio" name="popular" value="{{ cat.CategoryID }}" class="popular-category" />{{ cat.breadcrumb }}</p> 67 {% endfor %} 68 </div> 69 </div> 70 {% else %} 71 <input type="hidden" name="popular" value="" /> 72 {% endif %} 73 <div class="form-group" id="category-selections-row"> 74 <label class="col-sm-2 control-label">{{ entry_category }}</label> 75 <div class="col-sm-10"> 76 <div class="row form-group"> 77 <div class="col-sm-12"> 78 <div class="input-group category-select-group"> <span id="category-select-1-loading" class="input-group-addon"><i class="fa fa-angle-right fa-lg"></i></span> 79 <select id="category-select-1" class="form-control" onchange="loadCategories(2);"> 80 </select> 81 </div> 82 </div> 83 </div> 84 <div class="row form-group" id="category-select-2-container" style="display:none;"> 85 <div class="col-sm-12"> 86 <div class="input-group category-select-group"> <span id="category-select-2-loading" class="input-group-addon"><i class="fa fa-angle-right fa-lg"></i></span> 87 <select id="category-select-2" class="form-control" onchange="loadCategories(3);"> 88 </select> 89 </div> 90 </div> 91 </div> 92 <div class="row form-group" id="category-select-3-container" style="display:none;"> 93 <div class="col-sm-12"> 94 <div class="input-group category-select-group"> <span id="category-select-3-loading" class="input-group-addon"><i class="fa fa-angle-right fa-lg"></i></span> 95 <select id="category-select-3" class="form-control" onchange="loadCategories(4);"> 96 </select> 97 </div> 98 </div> 99 </div> 100 <div class="row form-group" id="category-select-4-container" style="display:none;"> 101 <div class="col-sm-12"> 102 <div class="input-group category-select-group"> <span id="category-select-4-loading" class="input-group-addon"><i class="fa fa-angle-right fa-lg"></i></span> 103 <select id="category-select-4" class="form-control" onchange="loadCategories(5);"> 104 </select> 105 </div> 106 </div> 107 </div> 108 <div class="row form-group" id="category-select-5-container" style="display:none;"> 109 <div class="col-sm-12"> 110 <div class="input-group category-select-group"> <span id="category-select-5-loading" class="input-group-addon"><i class="fa fa-angle-right fa-lg"></i></span> 111 <select id="category-select-5" class="form-control" onchange="loadCategories(6);"> 112 </select> 113 </div> 114 </div> 115 </div> 116 <div class="row form-group" id="category-select-6-container" style="display:none;"> 117 <div class="col-sm-12"> 118 <div class="input-group category-select-group"> <span id="category-select-6-loading" class="input-group-addon"><i class="fa fa-angle-right fa-lg"></i></span> 119 <select id="category-select-6" class="form-control" onchange="loadCategories(7);"> 120 </select> 121 </div> 122 </div> 123 </div> 124 <input type="hidden" name="finalCat" id="final-category" /> 125 </div> 126 </div> 127 <div class="form-group" id="category-suggested-row" style="display: none;"> 128 <label class="col-sm-2 control-label"> <span title="" data-toggle="tooltip" data-original-title="{{ help_category_suggested }}">{{ entry_category_suggested }}</span> </label> 129 <div class="col-sm-10"> 130 <div id="suggested-cats"></div> 131 </div> 132 </div> 133 <div class="form-group" id="condition-container" style="display: none;"> 134 <label class="col-sm-2 control-label">{{ entry_listing_condition }}</label> 135 <div class="col-sm-10"> 136 <div class="row form-group"> 137 <div class="col-sm-12"> 138 <div class="input-group condition-select-group"> <span id="condition-loading" class="input-group-addon"><i class="fa fa-angle-right fa-lg"></i></span> 139 <select name="condition" id="condition-input" class="form-control"> 140 </select> 141 </div> 142 </div> 143 </div> 144 </div> 145 </div> 146 <div class="form-group" id="duration-container" style="display: none;"> 147 <label class="col-sm-2 control-label">{{ entry_listing_duration }}</label> 148 <div class="col-sm-10"> 149 <div class="row form-group"> 150 <div class="col-sm-12"> 151 <div class="input-group condition-select-group"> <span id="duration-loading" class="input-group-addon"><i class="fa fa-angle-right fa-lg"></i></span> 152 <select name="auction_duration" id="duration-input" class="form-control"> 153 </select> 154 </div> 155 </div> 156 </div> 157 </div> 158 </div> 159 </div> 160 <div id="tab-listing-feature" class="tab-pane"> 161 <div class="well" style="display: none;" id="product_identifier_container"> 162 <h3>{{ text_product_identifiers }}</h3> 163 <div class="form-group" id="product_identifier_ean_container" style="display:none;"> 164 <label class="col-sm-2 control-label">{{ text_ean }}</label> 165 <div class="col-sm-10"> 166 <input type="hidden" id="identifier_ean_required" class="product_identifier_required" value="0" /> 167 <input type="hidden" id="identifier_ean_original" value="{{ product.ean }}" /> 168 <input type="text" name="identifier_ean" value="{{ product.ean }}" id="identifier_ean" class="form-control" /> 169 </div> 170 </div> 171 <div class="form-group" id="product_identifier_isbn_container" style="display:none;"> 172 <label class="col-sm-2 control-label">{{ text_isbn }}</label> 173 <div class="col-sm-10"> 174 <input type="hidden" id="identifier_isbn_required" class="product_identifier_required" value="0" /> 175 <input type="hidden" id="identifier_isbn_original" value="{{ product.isbn }}" /> 176 <input type="text" name="identifier_isbn" value="{{ product.isbn }}" id="identifier_isbn" class="form-control" /> 177 </div> 178 </div> 179 <div class="form-group" id="product_identifier_upc_container" style="display:none;"> 180 <label class="col-sm-2 control-label">{{ text_upc }}</label> 181 <div class="col-sm-10"> 182 <input type="hidden" id="identifier_upc_required" class="product_identifier_required" value="0" /> 183 <input type="hidden" id="identifier_upc_original" value="{{ product.upc }}" /> 184 <input type="text" name="identifier_upc" value="{{ product.upc }}" id="identifier_upc" class="form-control" /> 185 </div> 186 </div> 187 <div class="form-group"> 188 <label class="col-sm-2 control-label">{{ text_identifier_not_required }}</label> 189 <div class="col-sm-10"> 190 <input type="checkbox" name="identifier_not_required" value="1" id="identifier_not_required" class="form-control" /> 191 </div> 192 </div> 193 </div> 194 <div class="alert alert-info">{{ text_features_help }}</div> 195 <div class="form-group"> 196 <div class="col-sm-12"> <span id="feature-loading" style="display: none;"><i class="fa fa-cog fa-lg fa-spin"></i></span> 197 <div id="feature-content"></div> 198 </div> 199 </div> 200 </div> 201 <div id="tab-listing-compatibility" class="tab-pane"> 202 <div class="form-group"> 203 <div class="col-sm-12"> 204 <div class="alert alert-info" id="compatibility-loading" style="display:none;"><i class="fa fa-cog fa-lg fa-spin"></i> {{ text_loading_compatibility }}</div> 205 <div id="compatibility-content"></div> 206 <div id="compatibility-content-add" style="display: none;"> 207 <div class="form-group"> 208 <div class="col-sm-10 text-right"> 209 <button class="btn btn-primary" id="compatibility-button-add" data-toggle="tooltip" type="button" data-original-title="{{ text_add }}"><i class="fa fa-plus-circle"></i></button> 210 </div> 211 </div> 212 </div> 213 <div id="compatibility-options" class="form-group" style="display:none;"> 214 <label class="col-sm-2 control-label">{{ text_compatible }}</label> 215 <div class="col-sm-8"> 216 <div class="table-responsive"> 217 <table id="compatibility-table" class="table table-striped table-bordered table-hover"> 218 </table> 219 </div> 220 </div> 221 </div> 222 </div> 223 </div> 224 </div> 225 <div id="tab-listing-catalog" class="tab-pane"> 226 <div class="form-group"> 227 <label class="col-sm-2 control-label">{{ entry_search_catalog }}</label> 228 <div class="col-sm-10"> 229 <div class="row"> 230 <div class="col-sm-3"> 231 <input type="text" name="catalog_search" id="catalog-search" class="form-control" value="" /> 232 </div> 233 <div class="col-sm-1"> <a class="btn btn-primary" id="button-catalog-search"><i class="fa fa-search"></i> {{ button_search }}</a> </div> 234 </div> 235 </div> 236 </div> 237 <div class="form-group"> 238 <label class="col-sm-2 control-label">{{ entry_catalog }}</label> 239 <div class="col-sm-10"> 240 <span class="help-block"> 241 <input type="hidden" value="0" name="catalog_image"> 242 <input id="catalog-image" type="checkbox" value="1" name="catalog_image"> - {{ text_catalog_help }} 243 </span> 244 </div> 245 </div> 246 <div class="row" id="product-catalog-container"></div> 247 </div> 248 <div id="tab-listing-description" class="tab-pane"> 249 <div class="form-group"> 250 <label class="col-sm-2 control-label">{{ entry_title }}</label> 251 <div class="col-sm-10"> 252 <input type="text" name="name" value="{{ product.name }}" size="85" id="name" class="form-control" /> 253 </div> 254 </div> 255 <div class="form-group"> 256 <label class="col-sm-2 control-label">{{ entry_subtitle }}</label> 257 <div class="col-sm-10"> 258 <input type="text" name="sub_name" value="" size="85" id="sub_name" class="form-control" /> 259 </div> 260 </div> 261 <div class="form-group"> 262 <label class="col-sm-2 control-label">{{ entry_description }}</label> 263 <div class="col-sm-10"> 264 <textarea name="description" id="description-field" data-toggle="summernote" class="form-control">{{ product.description }}</textarea> 265 </div> 266 </div> 267 </div> 268 <div id="tab-listing-images" class="tab-pane"> 269 <div class="well well-lg"> 270 <div class="row"> 271 <label class="col-sm-2 control-label">{{ entry_profile_load }}</label> 272 <div class="col-sm-10"> 273 <div class="input-group"> <span class="input-group-addon" id="profile-theme-icon"><i class="fa fa-lg fa-file-text"></i></span> 274 <select name="profile_theme" id="profile-theme-input" class="form-control"> 275 <option value="def">{{ text_select }}</option> 276 {% for profiles_theme in product.profiles_theme %} 277 <option value="{{ profile.ebay_profile_id }}">{{ profile.name }}</option> 278 {% endfor %} 279 </select> 280 </div> 281 </div> 282 </div> 283 </div> 284 <div class="form-group"> 285 <label class="col-sm-2 control-label">{{ entry_template }}</label> 286 <div class="col-sm-10"> 287 <select name="template" id="template_id" class="form-control"> 288 <option value="None">None</option> 289 {% if product.templates is not empty %} 290 {% for templates in product.templates %} 291 <option value="{{ template.template_id }}">{{ template.name }}</option> 292 {% endfor %} 293 {% endif %} 294 </select> 295 </div> 296 </div> 297 <div class="form-group"> 298 <label class="col-sm-2 control-label">{{ entry_image_gallery }}</label> 299 <div class="col-sm-10"> 300 <div class="row"> 301 <div class="col-sm-3"> 302 <div class="input-group"> <span class="input-group-addon">{{ text_height }}</span> 303 <input type="text" name="gallery_height" value="{{ product.defaults.gallery_height }}" maxlength="4" class="form-control" id="gallery_height" /> 304 <span class="input-group-addon">{{ text_px }}</span> </div> 305 </div> 306 <div class="col-sm-3"> 307 <div class="input-group"> <span class="input-group-addon">{{ text_width }}</span> 308 <input type="text" name="gallery_width" value="{{ product.defaults.gallery_width }}" maxlength="4" class="form-control" id="gallery_width" /> 309 <span class="input-group-addon">{{ text_px }}</span> </div> 310 </div> 311 </div> 312 </div> 313 </div> 314 <div class="form-group"> 315 <label class="col-sm-2 control-label">{{ entry_image_thumb }}</label> 316 <div class="col-sm-10"> 317 <div class="row"> 318 <div class="col-sm-3"> 319 <div class="input-group"> <span class="input-group-addon">{{ text_height }}</span> 320 <input type="text" name="thumb_height" value="{{ product.defaults.thumb_height }}" maxlength="4" class="form-control" id="thumb_height" /> 321 <span class="input-group-addon">{{ text_px }}</span> </div> 322 </div> 323 <div class="col-sm-3"> 324 <div class="input-group"> <span class="input-group-addon">{{ text_width }}</span> 325 <input type="text" name="thumb_width" value="{{ product.defaults.thumb_width }}" maxlength="4" class="form-control" id="thumb_width" /> 326 <span class="input-group-addon">{{ text_px }}</span> </div> 327 </div> 328 </div> 329 </div> 330 </div> 331 <div class="form-group"> 332 <label class="col-sm-2 control-label">{{ entry_images_supersize }}</label> 333 <div class="col-sm-10"> 334 <input type="hidden" name="gallery_super" value="0" /> 335 <input type="checkbox" name="gallery_super" value="1" id="gallery_super" /> 336 </div> 337 </div> 338 <div class="form-group"> 339 <label class="col-sm-2 control-label">{{ entry_images_gallery_plus }}</label> 340 <div class="col-sm-10"> 341 <input type="hidden" name="gallery_plus" value="0" /> 342 <input type="checkbox" name="gallery_plus" value="1" id="gallery_plus" /> 343 </div> 344 </div> 345 <div class="alert alert-info"> 346 <p>* {{ text_images_text_1 }}</p> 347 <p>* {{ text_images_text_2 }}</p> 348 </div> 349 <div class="row"> 350 {% if product.product_images is not empty %} 351 <div class="table-responsive"> 352 <table id="images" class="table table-striped table-bordered table-hover"> 353 <thead> 354 <tr> 355 <td class="text-center">{{ column_thumb }}</td> 356 <td class="text-center">{{ column_img_size }}</td> 357 <td class="text-center">{{ column_template_image }} 358 <input type="checkbox" name="all_template_images" value="1" id="check-all-template-images" style="margin-top:2px;" /></td> 359 <td class="text-center">{{ column_ebay_image }} 360 <input type="checkbox" name="all_ebay_images" value="1" id="check-all-ebay-images" style="margin-top:2px;" /></td> 361 <td class="text-center">{{ column_main_ebay_image }}</td> 362 </tr> 363 </thead> 364 <tbody> 365 {% set i = 0 %} 366 {% set i_valid = null %} 367 {% for product_images in product.product_images %} 368 <tr> 369 <td class="text-center"><img src="{{ img.preview }}" class="img-thumbnail" /></td> 370 <td class="text-center"> 371 {% if img.width < 500 and img.height < 500 %} 372 <span class="label label-danger" data-toggle="tooltip" data-original-title="{{ error_ebay_imagesize }}">{{ img.width }} x {{ img.height }}</span> 373 {% else %} 374 {% if i_valid == null %}{% set i_valid = i %}{% endif %} 375 <span class="label label-success" data-toggle="tooltip" data-original-title="{{ text_ebay_imagesize_ok }}">{{ img.width }} x {{ img.height }}</span> 376 {% endif %} 377 </td> 378 <td class="text-center"><input type="checkbox" id="imgUrl{{ i }}" name="img_tpl[{{ i }}]" value="{{ img.image }}" class="check-template-image" /></td> 379 <td class="text-center"><input type="hidden" name="img[{{ i }}]" value="null" /> 380 {% if img.width >= 500 and img.height >= 500 %} 381 <input type="checkbox" class="checkbox-ebay-image" onchange="toggleRad({{ i }});" id="image-checkbox-{{ i }}" name="img[{{ i }}]" value="{{ img.image }}" {% if i == 0 %}checked="checked"{% endif %} /> 382 {% else %} 383 - 384 {% endif %} 385 </td> 386 <td class="text-center"> 387 {% if img.width >= 500 or img.height >= 500 %} 388 <input type="radio" name="main_image"{% if i_valid !== null and i == i_valid %} checked{% endif %} value="{{ i }}" id="image-radio-{{ i }}" {% if i != 0 %}disabled="disabled"{% endif %} /> 389 {% else %} 390 - 391 {% endif %} 392 </td> 393 </tr> 394 {% set i = i + 1 %} 395 {% endfor %} 396 </tbody> 397 </table> 398 </div> 399 {% else %} 400 <div class="alert alert-danger alert-dismissible">{{ text_images_none }}</div> 401 {% endif %} 402 </div> 403 {% if addon.openstock is not empty and addon.openstock == true and product.options is not empty %} 404 <h2>{{ text_option_images }}</h2> 405 <p>{{ text_option_description }}</p> 406 <div class="form-group"> 407 <label class="col-sm-2 control-label">{{ text_option_images_grp }}</label> 408 <div class="col-sm-10"> 409 <select name="option_image_group" id="option_image_group" class="form-control"> 410 <option value="def">{{ text_select }}</option> 411 {% for option_group in product.option_groups %} 412 <option value="{{ option_group.option_id }}">{{ option_group.name }}</option> 413 {% endfor %} 414 </select> 415 <input type="hidden" id="option-image-group-name" name="option_image_group_name" value=""/> 416 </div> 417 </div> 418 <div class="form-group option-group-img-tr" style="display:none;"> 419 <label class="col-sm-2 control-label">{{ text_option_images_choice }}</label> 420 <div class="col-sm-10"> 421 {% for option_groups in product.option_groups %} 422 <div id="option-group-img-{{ option_group.option_id }}" class="option-group-img"> 423 <div class="table-responsive"> 424 <table class="table table-striped table-bordered table-hover"> 425 {% for option_group_choice in option_group.product_option_value %} 426 <tr> 427 <td>{{ option_group_choice.name }}</td> 428 <td><input type="hidden" name="option_image[{{ option_group.option_id }}][{{ option_group_choice.product_option_value_id }}][name]" value="{{ option_group_choice.name }}"/> 429 <a onclick="addVariationImage({{ option_group.option_id }}, {{ option_group_choice.product_option_value_id }});" class="btn btn-primary"><span>{{ text_add }}</span></a></td> 430 <td> 431 <table class="table table-striped table-bordered table-hover" id="option_images_{{ option_group_choice.product_option_value_id }}"> 432 {% set x = 0 %} 433 {% if option_group_choice.image_thumb is not empty and option_group_choice.image != "no_image.jpg" %} 434 {% set x = x + 1 %} 435 <tr> 436 <td id="option_image_{{ option_group.option_id }}_{{ option_group_choice.product_option_value_id }}_{{ x }}"><img src="{{ option_group_choice.image_thumb }}"/> 437 <input type="hidden" name="option_image[{{ option_group.option_id }}][{{ option_group_choice.product_option_value_id }}][images][]" value="{{ option_group_choice.image }}"/></td> 438 <td><button type="button" onclick="removeVariationImage({{ option_group.option_id }}, {{ option_group_choice.product_option_value_id }}, {{ x }});" data-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td> 439 </tr> 440 {% endif %} 441 <input type="hidden" name="option_image_count_{{ option_group.option_id }}" id="option_image_count_{{ option_group.option_id }}" value="{{ x }}"/> 442 </table></td> 443 </tr> 444 {% endfor %} 445 </table> 446 </div> 447 </div> 448 {% endfor %} 449 </div> 450 </div> 451 {% endif %} 452 </div> 453 <div id="tab-listing-price" class="tab-pane"> 454 <div class="well well-lg"> 455 <div class="row"> 456 <label class="col-sm-2 control-label">{{ entry_profile_load }}<br /> 457 <span id="profile-generic-loading" style="display: none;"><a class="btn btn-info" disabled="disabled"><i class="fa fa-cog fa-lg fa-spin"></i></a></span></label> 458 <div class="col-sm-10"> 459 <div class="input-group"> <span class="input-group-addon" id="profile-generic-icon"><i class="fa fa-lg fa-file-text"></i></span> 460 <select name="profile_generic" id="profile-generic-input" class="form-control"> 461 <option value="def">{{ text_select }}</option> 462 {% for profile in product.profiles_generic %} 463 <option value="{{ profile.ebay_profile_id }}">{{ profile.name }}</option> 464 {% endfor %} 465 </select> 466 </div> 467 </div> 468 </div> 469 </div> 470 {% if addon.openstock is not empty and addon.openstock == true and product.options is not empty %} 471 <div class="form-group"> 472 <label class="col-sm-2 control-label">{{ text_stock_matrix }}</label> 473 <div class="col-sm-10"> 474 <table class="table table-striped table-bordered table-hover"> 475 <thead> 476 <tr> 477 <td>{{ column_sku }}</td> 478 <td>{{ column_stock_total }}</td> 479 <td>{{ column_stock_col_qty }}</td> 480 <td>{{ column_stock_col_qty_reserve }}</td> 481 <td>{{ column_stock_col_comb }}</td> 482 <td>{{ column_price_ex_tax }}</td> 483 <td>{{ column_price_inc_tax }}</td> 484 </tr> 485 </thead> 486 <tbody> 487 <input type="hidden" name="optGroupArray" value="{{ product.option_group_array }}" /> 488 <input type="hidden" name="optGroupRelArray" value="{{ product.option_group_relation_array }}" /> 489 <input type="hidden" name="optArray" value="{{ product.options_array }}" /> 490 {% set option_count = 0 %} 491 492 {% for option in product.options %} 493 {% set keys = [] %} 494 495 {% for variant_value in option.variant_values %} 496 {% set keys = keys|merge([variant_value.product_option_value_id]) %} 497 {% endfor %} 498 499 <input type="hidden" name="opt[{{ option_count }}][key]" value="{{ keys|join(':') }}" /> 500 <input type="hidden" name="opt[{{ option_count }}][sku]" value="{{ option.sku }}" /> 501 <input type="hidden" name="opt[{{ option_count }}][active]" value="{{ option.active }}" /> 502 <input type="hidden" name="varPriceExCount" class="varPriceExCount" value="{{ option_count }}" /> 503 504 {% if option.sku is empty or option.stock < 1 %}<tr class="warning">{% else %}<tr class="success">{% endif %} 505 <td>{% if option.sku is empty %}<span class="label label-danger">{{ error_no_sku }}</span>{% else %}{{ option.sku }}{% endif %}</td> 506 <td>{% if option.stock < 1 %}<span class="label label-danger">{{ option.stock }}</span>{% else %}<span class="label label-success">{{ option.stock }}</span>{% endif %}</td> 507 <td><input class="form-control" id="qty_{{ option_count }}" type="text" name="opt[{{ option_count }}][qty]" value="{{ option.stock }}" onkeyup="updateReserveMessage({{ option_count }}, {{ option.stock }});" /></td> 508 <td id="qty_reserve_{{ option_count }}">0</td> 509 <td>{{ option.combination }}</td> 510 {% if option.price == 0 %}{% set option_row_price = product.price %}{% else %}{% set option_row_price = option.price %}{% endif %} 511 <td><input class="form-control" id="varPriceEx_{{ option_count }}" onkeyup="updateVarPriceFromEx({{ option_count }});" type="text" name="opt[{{ option_count }}][priceex]" value="{{ option_row_price|number_format(2, '.', '') }}" /></td>'; 512 <td><input class="form-control varPriceInc" id="varPriceInc_{{ option_count }}" onkeyup="updateVarPriceFromInc({{ option_count }});" type="text" name="opt[{{ option_count }}][price]" value="0" /></td> 513 </tr> 514 515 {% set option_count = option_count + 1 %} 516 {% endfor %} 517 </tbody> 518 </table> 519 </div> 520 </div> 521 <div class="form-group"> 522 <label class="col-sm-2 control-label">{{ entry_tax_inc }}</label> 523 <div class="col-sm-10"> 524 <div class="input-group col-xs-2"> 525 <input type="text" name="tax" value="{{ product.defaults.tax }}" id="taxRate" class="form-control text-right" onkeyup="updateVarPrice();" /> 526 <span class="input-group-addon">%</span> </div> 527 </div> 528 </div> 529 {% else %} 530 <div class="form-group"> 531 <label class="col-sm-2 control-label">{{ entry_qty }}</label> 532 <div class="col-sm-10"> 533 <input type="text" name="qty[0]" id="qty_0" value="{{ product.quantity }}" class="form-control" onkeyup="updateReserveMessage('0', '{{ product.quantity }}');" /> 534 <span class="help-block">{{ help_quantity_reserve }}</span> <span class="help-block">{{ column_stock_total }}: {{ product.quantity }}<br/> 535 <span id="qty_reserve_0">0</span> {{ text_stock_reserved }}</span> </div> 536 </div> 537 <div class="form-group"> 538 <label class="col-sm-2 control-label">{{ entry_price }}</label> 539 <div class="col-sm-10"> 540 <div class="input-group col-xs-4"> 541 <input type="text" name="price_no_tax[0]" id="taxEx" value="{{ product.price|number_format(2, '.', '') }}" class="form-control" onkeyup="updatePriceFromEx();" /> 542 <span class="input-group-addon">{{ text_price_ex_tax }}</span> </div> 543 <span class="help-block">{{ help_price_ex_tax }}</span> 544 <div class="input-group col-xs-4"> 545 <input type="text" name="price[0]" id="taxInc" value="{{ product.price|number_format(2, '.', '') }}" class="form-control" onkeyup="updatePriceFromInc();" /> 546 <span class="input-group-addon">{{ text_price_inc_tax }}</span> </div> 547 <span class="help-block">{{ help_price_inc_tax }}</span> </div> 548 </div> 549 <div class="form-group"> 550 <label class="col-sm-2 control-label">{{ entry_tax_inc }}</label> 551 <div class="col-sm-10"> 552 <div class="input-group col-xs-2"> 553 <input type="text" name="tax" value="{{ product.defaults.tax }}" id="taxRate" class="form-control text-right" onkeyup="updatePriceFromEx();" /> 554 <span class="input-group-addon">%</span> </div> 555 </div> 556 </div> 557 {% endif %} 558 {% if product.options is empty %} 559 <div class="form-group"> 560 <label class="col-sm-2 control-label">{{ entry_offers }}</label> 561 <div class="col-sm-10"> 562 <input type="hidden" name="bestoffer" value="0" /> 563 <input type="checkbox" name="bestoffer" value="1" id="bestoffer" /> 564 </div> 565 </div> 566 {% endif %} 567 <div class="form-group"> 568 <label class="col-sm-2 control-label"> <span title="" data-toggle="tooltip" data-original-title="{{ help_private }}">{{ entry_private }}</span> </label> 569 <div class="col-sm-10"> <span class="help-block"> 570 <input type="hidden" name="private_listing" value="0" /> 571 <input type="checkbox" name="private_listing" value="1" id="private_listing" /> 572 </span> </div> 573 </div> 574 </div> 575 <div id="tab-listing-payment" class="tab-pane"> 576 <div class="form-group"> 577 <label class="col-sm-2 control-label">{{ entry_imediate_payment }}</label> 578 <div class="col-sm-10"> 579 <input type="hidden" name="ebay_payment_immediate" value="0" /> 580 <input type="checkbox" name="ebay_payment_immediate" value="1" id="ebay_payment_immediate"{% if product.defaults.ebay_payment_immediate == 1 %} checked{% endif %} /> 581 </div> 582 </div> 583 <div class="form-group"> 584 <label class="col-sm-2 control-label">{{ entry_payment }}</label> 585 <div class="col-sm-10"> 586 {% set paypal = false %} 587 {% for payments in product.payments %} 588 {% if payment.ebay_name == 'PayPal' %} 589 {% set paypal = true %} 590 {% else %} 591 <p><input type="checkbox" name="payments[{{ payment.ebay_name }}]" value="1"{% if product.defaults.ebay_payment_types[payment.ebay_name] == 1 %} checked="checked"{% endif %} /> - {{ payment.local_name }}</p> 592 {% endif %} 593 {% endfor %} 594 </div> 595 </div> 596 {% if paypal == true %} 597 <div class="form-group"> 598 <label class="col-sm-2 control-label">PayPal</label> 599 <div class="col-sm-10"> 600 <div class="input-group"> 601 <span class="input-group-addon"><input type="checkbox" name="payments[PayPal]" value="1" {% if product.defaults.ebay_payment_types["PayPal"] == 1 %} checked="checked"{% endif %} /></span> 602 <input type="text" class="form-control" name="paypal_email" value="{{ product.defaults.paypal_address }}" placeholder="{{ text_paypal }}"/> 603 </div> 604 </div> 605 </div> 606 {% endif %} 607 <div class="form-group"> 608 <label class="col-sm-2 control-label">{{ entry_payment_instruction }}</label> 609 <div class="col-sm-10"> 610 <textarea name="payment_instruction" class="form-control" rows="3" id="payment_instruction">{{ product.defaults.payment_instruction }}</textarea> 611 </div> 612 </div> 613 </div> 614 <div id="tab-listing-shipping" class="tab-pane"> 615 <div class="well well-lg"> 616 <div class="row"> 617 <label class="col-sm-2 control-label">{{ entry_profile_load }}<br /> 618 <span id="profile-shipping-loading" style="display: none;"><a class="btn btn-info" disabled="disabled"><i class="fa fa-cog fa-lg fa-spin"></i></a></span></label> 619 <div class="col-sm-10"> 620 <div class="input-group"> <span class="input-group-addon" id="profile-shipping-icon"><i class="fa fa-lg fa-file-text"></i></span> 621 <select name="profile_shipping" id="profile-shipping-input" class="form-control"> 622 <option value="def">{{ text_select }}</option> 623 {% for profile in product.profiles_shipping %} 624 <option value="{{ profile.ebay_profile_id }}">{{ profile.name }}</option> 625 {% endfor %} 626 </select> 627 </div> 628 </div> 629 </div> 630 </div> 631 <div class="form-group"> 632 <label class="col-sm-2 control-label">{{ entry_item_postcode }}</label> 633 <div class="col-sm-10"> 634 <input type="text" name="postcode" id="postcode" class="form-control" /> 635 <span class="help-block">{{ text_item_postcode_help }}</span> </div> 636 </div> 637 <div class="form-group"> 638 <label class="col-sm-2 control-label">{{ entry_item_location }}</label> 639 <div class="col-sm-10"> 640 <input type="text" name="location" id="location" class="form-control" /> 641 <span class="help-block">{{ text_item_location_help }}</span> </div> 642 </div> 643 <div class="form-group"> 644 <label class="col-sm-2 control-label">{{ entry_despatch_country }}</label> 645 <div class="col-sm-10"> 646 <select name="country" id="country" class="form-control"> 647 {% for countries in setting.countries %} 648 <option value="{{ country.code }}">{{ country.name }}</option> 649 {% endfor %} 650 </select> 651 <span class="help-block">{{ text_despatch_country_help }}</span> </div> 652 </div> 653 <div class="form-group"> 654 <label class="col-sm-2 control-label">{{ entry_despatch_time }}</label> 655 <div class="col-sm-10"> 656 <select name="dispatch_time" id="dispatch_time" class="form-control"> 657 {% for dispatch_time in setting.dispatch_times %} 658 <option value="{{ dispatch_time.DispatchTimeMax }}">{{ dispatch_time.Description }}</option> 659 {% endfor %} 660 </select> 661 </div> 662 </div> 663 <div class="form-group"> 664 <label class="col-sm-2 control-label">{{ entry_shipping_getitfast }}</label> 665 <div class="col-sm-10"> 666 <input type="hidden" name="get_it_fast" value="0" /> 667 <input type="checkbox" name="get_it_fast" value="1" id="get_it_fast" /> 668 </div> 669 </div> 670 {% if setting.listing_restrictions.eligible_for_pickup_dropoff == 1 %} 671 <div class="form-group" id="eligible_for_pickup_dropoff_container"> 672 <label class="col-sm-2 control-label">{{ entry_shipping_pickupdropoff }}</label> 673 <div class="col-sm-10"> 674 <input type="hidden" name="eligible_for_pickup_dropoff" value="0" /> 675 <input type="checkbox" name="eligible_for_pickup_dropoff" value="1" id="eligible_for_pickup_dropoff" /> 676 </div> 677 </div> 678 {% endif %} 679 {% if setting.listing_restrictions.eligible_for_pickup_instore == 1 %} 680 <div class="form-group"> 681 <label class="col-sm-2 control-label">{{ entry_shipping_pickupinstore }}</label> 682 <div class="col-sm-10"> 683 <input type="hidden" name="eligible_for_pickup_instore" value="0" /> 684 <input type="checkbox" name="eligible_for_pickup_instore" value="1" id="eligible_for_pickup_instore" /> 685 </div> 686 </div> 687 {% endif %} 688 {% if setting.listing_restrictions.global_shipping == 1 %} 689 <div class="form-group" id="global_shipping_container"> 690 <label class="col-sm-2 control-label">{{ entry_shipping_global_shipping }}</label> 691 <div class="col-sm-10"> 692 <input type="hidden" name="global_shipping" value="0" /> 693 <input type="checkbox" name="global_shipping" value="1" id="global_shipping" /> 694 </div> 695 </div> 696 {% endif %} 697 {% if product.defaults.cod_surcharge == 1 %} 698 <div class="form-group"> 699 <label class="col-sm-2 control-label">{{ entry_shipping_cod }}</label> 700 <div class="col-sm-10"> 701 <input type="text" name="cod_fee" id="cod_fee" class="form-control" /> 702 </div> 703 </div> 704 {% endif %} 705 <div class="form-group"> 706 <label class="col-sm-2 control-label">{{ entry_shipping_type_nat }}</label> 707 <div class="col-sm-10"> 708 <select name="data[national][shipping_type]" class="form-control" id="shipping-type-national"> 709 {% if setting.shipping_types.flat == 1 %}<option value="flat"{% if data.national.shipping_type == "flat" %} selected{% endif %}>{{ text_shipping_flat }}</option>{% endif %} 710 {% if setting.shipping_types.calculated == 1 %}<option value="calculated"{% if data.national.shipping_type == "calculated" %} selected{% endif %}>{{ text_shipping_calculated }}</option>{% endif %} 711 {% if setting.shipping_types.freight == 1 %}<option value="freight"{% if data.national.shipping_type == "freight" %} selected{% endif %}>{{ text_shipping_freight }}</option>{% endif %} 712 </select> 713 </div> 714 </div> 715 <div class="form-group"> 716 <label class="col-sm-2 control-label"><span data-toggle="tooltip" title="{{ help_shipping_promotion_discount }}">{{ entry_shipping_promotion_discount }}</span></label> 717 <div class="col-sm-10"> 718 <input type="hidden" name="promotional_shipping_discount" value="0" /> 719 <input type="checkbox" name="promotional_shipping_discount" value="1" id="promotional_shipping_discount" /> 720 </div> 721 </div> 722 <div id="national-container-flat" style="display:none;" class="shipping-national-container"> 723 <div class="form-group"> 724 <div class="col-sm-2"> 725 <div class="row"> 726 <div class="col-sm-12 text-right"> 727 <p> 728 <label class="control-label text-right">{{ entry_shipping_nat }}</label> 729 </p> 730 </div> 731 </div> 732 <div class="row"> 733 <div class="col-sm-12 text-right"> 734 <p><a class="btn btn-primary" onclick="addShipping('national', 'flat');" id="add-national-flat"><i class="fa fa-plus-circle"></i> {{ button_add }}</a></p> 735 </div> 736 </div> 737 </div> 738 <div class="col-sm-10"> 739 <div class="row"> 740 <div class="col-sm-12" id="options-national-flat"></div> 741 </div> 742 </div> 743 </div> 744 </div> 745 <div id="national-container-calculated" style="display:none;" class="shipping-national-container"> 746 <div class="form-group"> 747 <label class="col-sm-2 control-label">{{ entry_shipping_handling_nat }}</label> 748 <div class="col-sm-10"> 749 <input type="text" name="data[national][calculated][handling_fee]" id="national-handling-fee" class="form-control" /> 750 </div> 751 </div> 752 <div class="form-group"> 753 <div class="col-sm-2"> 754 <div class="row"> 755 <div class="col-sm-12 text-right"> 756 <p> 757 <label class="control-label text-right">{{ entry_shipping_nat }}</label> 758 </p> 759 </div> 760 </div> 761 <div class="row"> 762 <div class="col-sm-12 text-right"> 763 <p><a class="btn btn-primary" onclick="addShipping('national', 'calculated');" id="add-national-calculated"><i class="fa fa-plus-circle"></i> {{ button_add }}</a></p> 764 </div> 765 </div> 766 </div> 767 <div class="col-sm-10"> 768 <div class="row"> 769 <div class="col-sm-12" id="options-national-calculated"></div> 770 </div> 771 </div> 772 </div> 773 </div> 774 <div id="national-container-freight" style="display:none;" class="shipping-national-container"> 775 <div class="form-group"> 776 <label class="col-sm-2 control-label">{{ entry_shipping_in_desc }}</label> 777 <div class="col-sm-10"> 778 <input type="hidden" name="data[national][freight][in_description]" value="0" /> 779 <input type="checkbox" name="data[national][freight][in_description]" value="1" /> 780 </div> 781 </div> 782 </div> 783 <div class="form-group"> 784 <label class="col-sm-2 control-label">{{ entry_shipping_type_int }}</label> 785 <div class="col-sm-10"> 786 <select name="data[international][shipping_type]" class="form-control" id="shipping-type-international"> 787 {% if setting.shipping_types.flat == 1 %}<option value="flat"{% if data.international.shipping_type == "flat" %} selected{% endif %}>{{ text_shipping_flat }}</option>{% endif %} 788 {% if setting.shipping_types.calculated == 1 %}<option value="calculated"{% if data.international.shipping_type == "calculated" %} selected{% endif %}>{{ text_shipping_calculated }}</option>{% endif %} 789 </select> 790 </div> 791 </div> 792 <div class="form-group"> 793 <label class="col-sm-2 control-label"><span data-toggle="tooltip" title="{{ help_shipping_promotion_discount_international }}">{{ entry_shipping_promotion_discount_international }}</span></label> 794 <div class="col-sm-10"> 795 <input type="hidden" name="promotional_shipping_discount_international" value="0" /> 796 <input type="checkbox" name="promotional_shipping_discount_international" value="1" id="promotional_shipping_discount_international" /> 797 </div> 798 </div> 799 <div id="international-container-flat" style="display:none;" class="shipping-international-container"> 800 <div class="form-group"> 801 <div class="col-sm-2"> 802 <div class="row"> 803 <div class="col-sm-12 text-right"> 804 <p> 805 <label class="control-label text-right">{{ entry_shipping_intnat }}</label> 806 </p> 807 </div> 808 </div> 809 <div class="row"> 810 <div class="col-sm-12 text-right"> 811 <p><a class="btn btn-primary" onclick="addShipping('international', 'flat');" id="add-international-flat"><i class="fa fa-plus-circle"></i> {{ button_add }}</a></p> 812 </div> 813 </div> 814 </div> 815 <div class="col-sm-10"> 816 <div class="row"> 817 <div class="col-sm-12" id="options-international-flat"></div> 818 </div> 819 </div> 820 </div> 821 </div> 822 <div id="international-container-calculated" style="display:none;" class="shipping-international-container"> 823 <div class="form-group"> 824 <label class="col-sm-2 control-label">{{ entry_shipping_handling_int }}</label> 825 <div class="col-sm-10"> 826 <input type="text" name="data[international][calculated][handling_fee]" id="international-handling-fee" class="form-control" /> 827 </div> 828 </div> 829 <div class="form-group"> 830 <div class="col-sm-2"> 831 <div class="row"> 832 <div class="col-sm-12 text-right"> 833 <p> 834 <label class="control-label text-right">{{ entry_shipping_intnat }}</label> 835 </p> 836 </div> 837 </div> 838 <div class="row"> 839 <div class="col-sm-12 text-right"> 840 <p><a class="btn btn-primary" onclick="addShipping('international', 'calculated');" id="add-international-calculated"><i class="fa fa-plus-circle"></i> {{ button_add }}</a></p> 841 </div> 842 </div> 843 </div> 844 <div class="col-sm-10"> 845 <div class="row"> 846 <div class="col-sm-12" id="options-international-calculated"></div> 847 </div> 848 </div> 849 </div> 850 </div> 851 <div class="well"> 852 <div class="row form-group"> 853 <div class="col-sm-3"> 854 <label class="control-label">{{ text_unit }}</label> 855 <select name="package[unit]" class="form-control" id="measure-unit"> 856 {% for measurement_types in setting.measurement_types %} 857 <option value="{{ measurement_key }}"{% if product.defaults.ebay_measurement == measurement_key %} selected{% endif %}>{{ measurement_value }}</option> 858 {% endfor %} 859 </select> 860 </div> 861 <div class="col-sm-6"> 862 <div class="row"> 863 <div class="col-sm-6"> 864 <label class="control-label">{{ text_weight_major }}</label> 865 <div class="input-group col-xs-12"> 866 <input type="text" name="package[weight_major]" class="form-control" value="{{ product.weight_major }}"> 867 <span class="input-group-addon" id="weight-major-text"></span> </div> 868 </div> 869 <div class="col-sm-6"> 870 <label class="control-label">{{ text_weight_minor }}</label> 871 <div class="input-group col-xs-12"> 872 <input type="text" name="package[weight_minor]" class="form-control" value="{{ product.weight_minor }}"> 873 <span class="input-group-addon" id="weight-minor-text"></span> </div> 874 </div> 875 </div> 876 </div> 877 {% if setting.package_type is not empty %} 878 <div class="col-sm-3"> 879 <label class="control-label">{{ text_package }}</label> 880 <select name="package[package]" class="form-control"> 881 {% for package_type in setting.package_type %} 882 <option value="{{ package_type.code }}"{% if package_type.default == 1 %} selected{% endif %}>{{ package_type.description }}</option> 883 {% endfor %} 884 </select> 885 </div> 886 {% endif %} 887 </div> 888 <div class="row form-group"> 889 <div class="col-sm-3"> 890 <label class="control-label">{{ text_depth }}</label> 891 <div class="input-group col-xs-12"> 892 <input type="text" name="package[depth]" class="form-control" value="{{ product.height }}"> 893 <span class="input-group-addon size-unit-text"></span> 894 </div> 895 </div> 896 <div class="col-sm-3"> 897 <label class="control-label">{{ text_length }}</label> 898 <div class="input-group col-xs-12"> 899 <input type="text" name="package[length]" class="form-control" value="{{ product.length }}"> 900 <span class="input-group-addon size-unit-text"></span> 901 </div> 902 </div> 903 <div class="col-sm-3"> 904 <label class="control-label">{{ text_width }}</label> 905 <div class="input-group col-xs-12"> 906 <input type="text" name="package[width]" class="form-control" value="{{ product.width }}"> 907 <span class="input-group-addon size-unit-text"></span> 908 </div> 909 </div> 910 <div class="col-sm-3"> 911 <label class="control-label">{{ text_shape }}</label> 912 <select name="package[irregular]" class="form-control"> 913 <option value="0">{{ text_no }}</option> 914 <option value="1">{{ text_yes }}</option> 915 </select> 916 </div> 917 </div> 918 </div> 919 </div> 920 <div id="tab-listing-returns" class="tab-pane"> 921 <div class="well well-lg"> 922 <div class="row"> 923 <label class="col-sm-2 control-label">{{ entry_profile_load }}<br /> 924 <span id="profile-returns-loading" style="display: none;"><a class="btn btn-info" disabled="disabled"><i class="fa fa-cog fa-lg fa-spin"></i></a></span> 925 </label> 926 <div class="col-sm-10"> 927 <div class="input-group"> <span class="input-group-addon" id="profile-return-icon"><i class="fa fa-lg fa-file-text"></i></span> 928 <select name="profile_return" id="profile-return-input" class="form-control"> 929 <option value="def">{{ text_select }}</option> 930 {% for profile in product.profiles_returns %} 931 <option value="{{ profile.ebay_profile_id }}">{{ profile.name }}</option> 932 {% endfor %} 933 </select> 934 </div> 935 </div> 936 </div> 937 </div> 938 {% if setting.returns.accepted is not empty %} 939 <div class="form-group"> 940 <label class="col-sm-2 control-label">{{ text_return_accepted }}</label> 941 <div class="col-sm-10"> 942 <select name="returns_accepted" id="returns_accepted" class="form-control"> 943 {% for returns_option in setting.returns.accepted %} 944 <option value="{{ returns_option.ReturnsAcceptedOption }}">{{ returns_option.Description }}</option> 945 {% endfor %} 946 </select> 947 </div> 948 </div> 949 {% endif %} 950 {% if setting.returns.within is not empty %} 951 <div class="form-group"> 952 <label class="col-sm-2 control-label">{{ text_return_days }}</label> 953 <div class="col-sm-10"> 954 <select name="returns_within" id="returns_within" class="form-control"> 955 {% for returns_option in setting.returns.within %} 956 <option value="{{ returns_option.ReturnsWithinOption }}">{{ returns_option.Description }}</option> 957 {% endfor %} 958 </select> 959 </div> 960 </div> 961 {% endif %} 962 {% if setting.returns.paidby is not empty %} 963 <div class="form-group"> 964 <label class="col-sm-2 control-label">{{ text_return_scosts }}</label> 965 <div class="col-sm-10"> 966 <select name="returns_shipping" id="returns_shipping" class="form-control"> 967 {% for returns_option in setting.returns.paidby %} 968 <option value="{{ returns_option.ShippingCostPaidByOption }}">{{ returns_option.Description }}</option> 969 {% endfor %} 970 </select> 971 </div> 972 </div> 973 {% endif %} 974 {% if setting.returns.refund is not empty %} 975 <div class="form-group"> 976 <label class="col-sm-2 control-label">{{ text_return_type }}</label> 977 <div class="col-sm-10"> 978 <select name="returns_option" id="returns_option" class="form-control"> 979 {% for returns_option in setting.returns.refund %} 980 <option value="{{ returns_option.RefundOption }}">{{ returns_option.Description }}</option> 981 {% endfor %} 982 </select> 983 </div> 984 </div> 985 {% endif %} 986 {% if setting.returns.description == true %} 987 <div class="form-group"> 988 <label class="col-sm-2 control-label">{{ text_return_policy }}</label> 989 <div class="col-sm-10"> 990 <textarea name="return_policy" class="form-control" rows="3" id="return_policy"></textarea> 991 </div> 992 </div> 993 {% endif %} 994 {% if setting.returns.restocking_fee is not empty %} 995 <div class="form-group"> 996 <label class="col-sm-2 control-label">{{ text_return_restock }}</label> 997 <div class="col-sm-10"> 998 <select name="returns_restocking_fee" id="returns_restocking_fee" class="form-control"> 999 {% for returns_option in setting.returns.restocking_fee %} 1000 <option value="{{ returns_option.RestockingFeeValueOption }}">{{ returns_option.Description }}</option> 1001 {% endfor %} 1002 </select> 1003 </div> 1004 </div> 1005 {% endif %} 1006 </div> 1007 <div class="well"> 1008 <div class="row"> 1009 <div class="col-sm-12 text-right"> <a class="btn btn-primary" id="button-verify"><span>{{ text_verify }}</span></a> </div> 1010 </div> 1011 </div> 1012 </div> 1013 </form> 1014 </div> 1015 <div class="panel-body" style="display: none;" id="page-review"> 1016 <div class="alert alert-info" id="listing-fee-container"></div> 1017 <div class="well"> 1018 <div class="row"> 1019 <div class="col-sm-6 text-left"> <a class="btn btn-primary" target="_BLANK" id="button-preview" style="display:none;"><i class="fa fa-external-link fa-lg"></i> {{ text_preview }}</a> <a class="btn btn-primary" id="button-edit"><i class="fa fa-pencil fa-lg"></i> {{ text_review_edit }}</a> </div> 1020 <div class="col-sm-6 text-right"> <a class="btn btn-primary" id="button-save"><i class="fa fa-save fa-lg"></i> {{ button_save }}</a> </div> 1021 </div> 1022 </div> 1023 </div> 1024 <div class="panel-body" style="display: none;" id="page-complete"> 1025 <div class="alert alert-success alert-dismissible">{{ text_created_msg }}: <span id="item-number"></span></div> 1026 <div class="well"> 1027 <div class="row"> 1028 <div class="col-sm-6 text-left"> <a class="btn btn-primary" id="button-view" target="_BLANK"><i class="fa fa-external-link fa-lg"></i> {{ button_view }}</a> <a class="btn btn-primary" href="{{ product.edit_link }}"><i class="fa fa-pencil fa-lg"></i> {{ button_edit }}</a> </div> 1029 <div class="col-sm-6 text-right"> <a class="btn btn-primary" href="{{ cancel }}"><i class="fa fa-reply fa-lg"></i> {{ text_return }}</a> </div> 1030 </div> 1031 </div> 1032 </div> 1033 <div class="panel-body" style="display: none;" id="page-failed"> 1034 <div class="alert alert-danger alert-dismissible"> 1035 <h5>{{ text_failed_title }}</h5> 1036 <p>{{ text_failed_msg1 }}</p> 1037 <ul> 1038 <li>{{ text_failed_li1 }}</li> 1039 <li>{{ text_failed_li2 }}</li> 1040 <li>{{ text_failed_li3 }}</li> 1041 </ul> 1042 <p>{{ text_failed_contact }}</p> 1043 </div> 1044 </div> 1045 </div> 1046 </div> 1047 </div> 1048 <link href="view/javascript/codemirror/lib/codemirror.css" rel="stylesheet" /> 1049 <link href="view/javascript/codemirror/theme/monokai.css" rel="stylesheet" /> 1050 <script type="text/javascript" src="view/javascript/codemirror/lib/codemirror.js"></script> 1051 <script type="text/javascript" src="view/javascript/codemirror/lib/xml.js"></script> 1052 <script type="text/javascript" src="view/javascript/codemirror/lib/formatting.js"></script> 1053 1054 <script type="text/javascript" src="view/javascript/summernote/summernote.js"></script> 1055 <link href="view/javascript/summernote/summernote.css" rel="stylesheet" /> 1056 <script type="text/javascript" src="view/javascript/summernote/summernote-image-attributes.js"></script> 1057 <script type="text/javascript" src="view/javascript/summernote/opencart.js"></script> 1058 <script type="text/javascript"><!-- 1059 function updateReserveMessage(elementId, total) { 1060 var reserve = total - $('#qty_'+elementId).val(); 1061 $('#qty_reserve_'+elementId).text(reserve); 1062 } 1063 1064 function getSuggestedCategories() { 1065 var qry = $('#name').val(); 1066 $.ajax({ 1067 url: 'index.php?route=extension/openbay/ebay/getSuggestedCategories&user_token={{ user_token }}&qry='+qry, 1068 type: 'GET', 1069 dataType: 'json', 1070 success: function(data) { 1071 if (data.error == false) { 1072 var html_inj = ''; 1073 if (data.data) { 1074 html_inj += '<p><input type="radio" name="suggested" value="" id="suggested_default" checked="checked"/> <strong>{{ text_none }}</strong></p>'; 1075 1076 data.data = $.makeArray(data.data); 1077 1078 $.each(data.data, function(key,val) { 1079 if (val.percent != 0) { 1080 html_inj += '<p><input type="radio" class="suggested_category" name="suggested" value="'+val.id+'" /> ('+val.percent+'% match) '+val.name+'</p>'; 1081 } 1082 }); 1083 1084 $('#category-suggested-row').fadeIn(); 1085 } 1086 1087 $('#suggested-cats').html(html_inj); 1088 $('input[name=suggested]').bind('change', function() { 1089 1090 if ($(this).val() != '') { 1091 categorySuggestedChange($(this).val()); 1092 } 1093 }); 1094 1095 $('.suggested_category').bind('click', function() { 1096 $('#category-selections-row').hide(); 1097 1098 $('input[name=popular]').removeAttr('checked'); 1099 1100 if($('#category-popular-row').length != 0) { 1101 $('#category-popular-row').hide(); 1102 } 1103 1104 $('#popular_default').prop('checked', true); 1105 }); 1106 1107 $('.popular-category').bind('click', function() { 1108 $('#category-selections-row').hide(); 1109 1110 $('input[name=suggested]').removeAttr('checked'); 1111 1112 if($('#category-suggested-row').length != 0) { 1113 $('#category-suggested-row').hide(); 1114 } 1115 1116 $('#suggested_default').prop('checked', true); 1117 }); 1118 1119 $('#suggested_default').bind('click', function() { 1120 $('#category-selections-row').show(); 1121 1122 if($('#category-suggested-row').length != 0) { 1123 $('#category-suggested-row').show(); 1124 } 1125 1126 if($('#category-popular-row').length != 0) { 1127 $('#category-popular-row').show(); 1128 } 1129 1130 $('#show-feature-element').hide(); 1131 $('#product-catalog-container').hide(); 1132 $('#feature-content').empty(); 1133 $('#specifics').empty(); 1134 $('input[name=popular]').removeAttr('checked'); 1135 $('#popular_default').prop('checked', true); 1136 }); 1137 } else { 1138 alert(data.msg); 1139 } 1140 }, 1141 error: function (xhr, ajaxOptions, thrownError) { 1142 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 1143 } 1144 }); 1145 } 1146 1147 function categoryFavChange(id) { 1148 loadCategories(1, true); 1149 $('#final-category').val(id); 1150 getCategoryFeatures(id); 1151 } 1152 1153 function categorySuggestedChange(id) { 1154 loadCategories(1, true); 1155 $('#final-category').val(id); 1156 getCategoryFeatures(id); 1157 } 1158 1159 function loadCategories(level, skip) { 1160 level = parseInt(level); 1161 1162 $('#show-feature-element').hide(); 1163 $('#product-catalog-container').hide(); 1164 $('#feature-content').empty(); 1165 $('#specifics').empty(); 1166 $('.category-select-group').removeClass('has-success'); 1167 1168 if (level == 1) { 1169 var parent = ''; 1170 } else { 1171 var previous_level = level - 1; 1172 var parent = $('#category-select-' + previous_level).val(); 1173 $('#popular_default').attr('checked', true); 1174 } 1175 1176 var count_i = level; 1177 1178 while(count_i <= 6) { 1179 $('#category-select-' + count_i + '-container').hide(); 1180 $('#category-select-' + count_i).empty(); 1181 count_i++; 1182 } 1183 1184 $('#category-select-' + previous_level + '-loading').html('<i class="fa fa-check fa-lg"></i>'); 1185 $('#category-select-' + level).prop('disabled', true); 1186 $('#category-select-' + level + '-loading').html('<i class="fa fa-cog fa-lg fa-spin"></i>'); 1187 $('#category-select-' + level + '-container').show(); 1188 1189 $.ajax({ 1190 url: 'index.php?route=extension/openbay/ebay/getCategories&user_token={{ user_token }}&parent='+parent, 1191 type: 'POST', 1192 dataType: 'json', 1193 success: function(data) { 1194 if (data.items != null) { 1195 $('#category-select-' + level).empty().append('<option disabled selected>{{ text_select }}</option>'); 1196 1197 data.cats = $.makeArray(data.cats); 1198 1199 $.each(data.cats, function(key, val) { 1200 if (val.CategoryID != parent) { 1201 $('#category-select-' + level).append('<option value="'+val.CategoryID+'">'+val.CategoryName+'</option>'); 1202 } 1203 }); 1204 1205 if (skip != true) { 1206 $('#final-category').val(''); 1207 } 1208 1209 $('#category-select-' + level + '-loading').html('<i class="fa fa-angle-right fa-lg" ></i>'); 1210 $('#category-select-' + level).prop('disabled', false); 1211 } else { 1212 $('#category-select-' + level + '-container').hide(); 1213 if (data.error) { 1214 alert(data.error); 1215 $('#button-verify').hide(); 1216 $('#content').prepend('<div class="alert alert-warning">{{ error_category_sync }}</div>'); 1217 $('#page-listing, .heading').hide(); 1218 } else { 1219 $('#final-category').val($('#category-select-' + previous_level).val()); 1220 //$('#category-select-' + level + '-loading').html('<i class="fa fa-check fa-lg"></i>'); 1221 $('.category-select-group').addClass('has-success'); 1222 getCategoryFeatures($('#category-select-'+previous_level).val()); 1223 } 1224 } 1225 }, 1226 error: function (xhr, ajaxOptions, thrownError) { 1227 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 1228 } 1229 }); 1230 } 1231 1232 function getCategoryFeatures(cat) { 1233 itemFeatures(cat); 1234 1235 $('#duration-container').show(); 1236 $('#duration-input').empty().prop('disabled', true); 1237 $('.duration-select-group').removeClass('has-success'); 1238 $('#duration-loading').html('<i class="fa fa-cog fa-lg fa-spin"></i>'); 1239 1240 $('#compatibility-content').empty(); 1241 $('#listing-compatibility').hide(); 1242 1243 $('#condition-container').show(); 1244 $('#condition-input').empty().prop('disabled', true); 1245 $('.condition-select-group').removeClass('has-success'); 1246 $('#condition-loading').html('<i class="fa fa-cog fa-lg fa-spin"></i>'); 1247 1248 $('#vrm-input-container').remove(); 1249 $('#vin-input-container').remove(); 1250 1251 $('#product_identifier_container').hide(); 1252 $('.product_identifier_required').val('0'); 1253 1254 $.ajax({ 1255 url: 'index.php?route=extension/openbay/ebay/getCategoryFeatures&user_token={{ user_token }}&category='+cat, 1256 type: 'GET', 1257 dataType: 'json', 1258 success: function(data) { 1259 if (data.error == false) { 1260 var html_inj = ''; 1261 listingDuration(data.data.durations); 1262 1263 if (typeof data.data.global_shipping_enabled !== undefined && data.data.global_shipping_enabled === true) { 1264 $('#global_shipping_container').show(); 1265 } else { 1266 $('#global_shipping_container').hide(); 1267 $('#global_shipping').prop('checked', false); 1268 } 1269 1270 if (typeof data.data.pickup_dropoff_enabled !== undefined && data.data.pickup_dropoff_enabled === true) { 1271 $('#eligible_for_pickup_dropoff_container').show(); 1272 } else { 1273 $('#eligible_for_pickup_dropoff_container').hide(); 1274 $('#eligible_for_pickup_dropoff').prop('checked', false); 1275 } 1276 1277 if (data.data.maxshipping != false) { 1278 $('#maxShippingAlert').append(data.data.maxshipping).show(); 1279 } 1280 1281 if (data.data.conditions && data.data.conditions != '') { 1282 data.data.conditions = $.makeArray(data.data.conditions); 1283 1284 html_inj += '<option disabled selected></option>'; 1285 1286 $.each(data.data.conditions, function(key, val) { 1287 html_inj += '<option value='+val.id+'>'+val.name+'</option>'; 1288 }); 1289 1290 $('#condition-input').empty().html(html_inj).show().prop('disabled', false); 1291 $('#condition-loading').html('<i class="fa fa-angle-right fa-lg"></i>'); 1292 } else { 1293 $('#condition-container').hide(); 1294 } 1295 1296 if (data.data.item_compatibility.enabled == 1) { 1297 $('#listing-compatibility').show(); 1298 $('#compatibility-loading').show(); 1299 getCompatibilityNames(cat); 1300 } 1301 1302 if (data.data.vrm_identifier === true) { 1303 html_inj = '<div class="form-group" id="vrm-input-container">'; 1304 html_inj += '<label class="col-sm-2 control-label">{{ entry_vrm }}</label>'; 1305 html_inj += '<div class="col-sm-10">'; 1306 html_inj += '<input class="form-control" type="text" size="85" placeholder="{{ entry_vrm }}" name="vrm">'; 1307 html_inj += '</div>'; 1308 html_inj += '</div>'; 1309 $('#tab-listing-description').prepend(html_inj); 1310 } 1311 1312 if (data.data.vin_identifier === true) { 1313 html_inj = '<div class="form-group" id="vin-input-container">'; 1314 html_inj += '<label class="col-sm-2 control-label">{{ entry_vin }}</label>'; 1315 html_inj += '<div class="col-sm-10">'; 1316 html_inj += '<input class="form-control" type="text" size="85" placeholder="{{ entry_vin }}" name="vrm">'; 1317 html_inj += '</div>'; 1318 html_inj += '</div>'; 1319 $('#tab-listing-description').prepend(html_inj); 1320 } 1321 1322 if (data.data.ean_identifier_requirement != '') { 1323 $('#product_identifier_container').show(); 1324 $('#product_identifier_ean_container').show(); 1325 1326 if (data.data.ean_identifier_requirement == 'Required') { 1327 $('#identifier_ean_required').val(1); 1328 } 1329 } 1330 1331 if (data.data.isbn_identifier_requirement != '') { 1332 $('#product_identifier_container').show(); 1333 $('#product_identifier_isbn_container').show(); 1334 1335 if (data.data.isbn_identifier_requirement == 'Required') { 1336 $('#identifier_isbn_required').val(1); 1337 } 1338 } 1339 1340 if (data.data.upc_identifier_requirement != '') { 1341 $('#product_identifier_container').show(); 1342 $('#product_identifier_upc_container').show(); 1343 1344 if (data.data.upc_identifier_requirement == 'Required') { 1345 $('#identifier_upc_required').val(1); 1346 } 1347 } 1348 } else { 1349 if (data.msg == null) { 1350 alert('{{ error_features }}'); 1351 } else { 1352 alert(data.msg); 1353 } 1354 } 1355 }, 1356 error: function (xhr, ajaxOptions, thrownError) { 1357 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 1358 } 1359 }); 1360 } 1361 1362 function getCompatibilityNames(category_id) { 1363 $.ajax({ 1364 url: 'index.php?route=extension/openbay/ebay/getPartsCompatibilityOptions&user_token={{ user_token }}&category_id='+category_id, 1365 type: 'GET', 1366 dataType: 'json', 1367 success: function(data) { 1368 var compatibility_html = '<input type="hidden" id="compatibility-data-count" value="'+data.options_count+'" />'; 1369 var compatibility_option_1 = ''; 1370 1371 $.each(data.options, function(option_key, option_value) { 1372 compatibility_html += '<div class="form-group" id="compatibility-data-'+option_value.sequence+'-container">'; 1373 compatibility_html += '<label class="col-sm-2 control-label pull-left">'+option_value.display_name+'</label>'; 1374 compatibility_html += '<input type="hidden" id="compatibility-data-'+option_value.sequence+'-sequence" value="'+option_value.sequence+'" />'; 1375 compatibility_html += '<input type="hidden" id="compatibility-data-'+option_value.sequence+'-name" value="'+option_value.name+'" />'; 1376 compatibility_html += '<div class="col-sm-8">'; 1377 compatibility_html += '<div class="input-group">'; 1378 compatibility_html += '<span class="input-group-addon" id="compatibility-data-' + option_value.sequence + '-loading-icon"><i class="fa fa-angle-right fa-lg" ></i></span>'; 1379 compatibility_html += '<select id="compatibility-data-'+option_value.sequence+'" class="form-control compatibility-data" disabled></select>'; 1380 compatibility_html += '</div>'; 1381 compatibility_html += '</div>'; 1382 compatibility_html += '</div>'; 1383 1384 if (option_value.sequence == 1) { 1385 compatibility_option_1 = option_value.name; 1386 } 1387 }); 1388 1389 $('#compatibility-loading').hide(); 1390 $('#compatibility-content').html(compatibility_html).show(); 1391 getCompatibilityValues(category_id, compatibility_option_1, 1); 1392 }, 1393 error: function (xhr, ajaxOptions, thrownError) { 1394 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 1395 } 1396 }); 1397 } 1398 1399 function getCompatibilityValues(category_id, option_name, sequence_id) { 1400 var property_filter = []; 1401 var property_filter_obj = []; 1402 1403 if (parseInt(sequence_id) > 1) { 1404 var sequence_id_count_loop = parseInt(sequence_id) - parseInt(1); 1405 1406 $('#compatibility-data-' + sequence_id_count_loop + '-loading-icon').html('<i class="fa fa-check fa-lg"></i>'); 1407 1408 // get all of the parent filter choices 1409 while (sequence_id_count_loop >= 1) { 1410 property_filter_obj = { 1411 'property_filter_name' : $('#compatibility-data-'+sequence_id_count_loop+'-name').val(), 1412 'property_filter_value' : $('#compatibility-data-'+sequence_id_count_loop).val() 1413 }; 1414 1415 property_filter.push(property_filter_obj); 1416 1417 sequence_id_count_loop--; 1418 } 1419 } 1420 1421 $('#compatibility-data-' + sequence_id + '-loading-icon').html('<i class="fa fa-cog fa-lg fa-spin"></i>'); 1422 1423 $.ajax({ 1424 url: 'index.php?route=extension/openbay/ebay/getPartsCompatibilityValues&user_token={{ user_token }}&category_id='+category_id+'&option_name='+option_name, 1425 type: 'POST', 1426 data: { "filters" : property_filter }, 1427 dataType: "json", 1428 before: function() { 1429 $('#compatibility-data-' + sequence_id).empty().prop('disabled', true).show(); 1430 $('#compatibility-data-' + sequence_id + '-container').show(); 1431 }, 1432 success: function(data) { 1433 $('#compatibility-data-' + sequence_id).append('<option disabled selected>{{ text_select }}</option>'); 1434 1435 $.each(data.options.values, function(option_key, option_value) { 1436 $('#compatibility-data-' + sequence_id).append('<option>'+option_value+'</option>'); 1437 }); 1438 1439 $('#compatibility-data-' + sequence_id).prop('disabled', false); 1440 $('#compatibility-data-' + sequence_id + '-loading-icon').html('<i class="fa fa-angle-right fa-lg" ></i>'); 1441 }, 1442 error: function (xhr, ajaxOptions, thrownError) { 1443 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 1444 } 1445 }); 1446 } 1447 1448 $('#identifier_not_required').on("click", function() { 1449 var not_required_text = "{{ setting.product_details.product_identifier_unavailable_text }}"; 1450 1451 if ($('#identifier_not_required:checked').length == 1) { 1452 if ($('#identifier_ean_required').val() == 1) { 1453 $('#identifier_ean').val(not_required_text); 1454 } 1455 if ($('#identifier_isbn_required').val() == 1) { 1456 $('#identifier_isbn').val(not_required_text); 1457 } 1458 if ($('#identifier_upc_required').val() == 1) { 1459 $('#identifier_upc').val(not_required_text); 1460 } 1461 } else { 1462 if ($('#identifier_ean_required').val() == 1) { 1463 $('#identifier_ean').val($('#identifier_ean_original').val()); 1464 } 1465 if ($('#identifier_isbn_required').val() == 1) { 1466 $('#identifier_isbn').val($('#identifier_isbn_original').val()); 1467 } 1468 if ($('#identifier_upc_required').val() == 1) { 1469 $('#identifier_upc').val($('#identifier_upc_original').val()); 1470 } 1471 } 1472 }); 1473 1474 $(document).on("change", '.compatibility-data', function() { 1475 $('#compatibility-content-add').hide(); 1476 1477 var category_id = $('#final-category').val(); 1478 var element_base_id = $(this).attr('id'); 1479 var sequence_id = $('#'+element_base_id+'-sequence').val(); 1480 var sequence_id_count = parseInt(sequence_id) + parseInt(1); 1481 var option_name = $('#compatibility-data-' + sequence_id_count + '-name').val(); 1482 1483 // get the total number of value options 1484 var total_name_count = $('#compatibility-data-count').val(); 1485 total_name_count = parseInt(total_name_count); 1486 var sequence_id_count_loop = parseInt(sequence_id_count); 1487 1488 // hide the ones after the one that has just been changed and empty the data 1489 while (sequence_id_count_loop <= total_name_count) { 1490 $('#compatibility-data-'+sequence_id_count_loop).empty().prop('disabled', true); 1491 sequence_id_count_loop++; 1492 } 1493 1494 if (total_name_count >= sequence_id_count) { 1495 getCompatibilityValues(category_id, option_name, sequence_id_count); 1496 } else { 1497 $('#compatibility-data-' + sequence_id_count + '-loading-icon').html('<i class="fa fa-check fa-lg"></i>'); 1498 // this is the final step and all options are chosen - show the add button 1499 $('#compatibility-content-add').show(); 1500 } 1501 }); 1502 1503 var compatibility_row = 0; 1504 1505 $(document).on("click", '#compatibility-button-add', function() { 1506 var total_name_count = $('#compatibility-data-count').val(); 1507 total_name_count = parseInt(total_name_count); 1508 1509 var sequence_id_count_loop = 1; 1510 var sequence_options = []; 1511 var inj_html = ''; 1512 1513 inj_html += '<tr id="compatibility-row' + compatibility_row + '">'; 1514 while (sequence_id_count_loop <= total_name_count) { 1515 inj_html += '<input type="hidden" name="compatibility_data[' + compatibility_row + '][' + sequence_id_count_loop + '][name]" value="' + $('#compatibility-data-' + sequence_id_count_loop + '-name').val() + '" />'; 1516 inj_html += '<input type="hidden" name="compatibility_data[' + compatibility_row + '][' + sequence_id_count_loop + '][value]" value="' + $('#compatibility-data-' + sequence_id_count_loop).val() + '" />'; 1517 inj_html += '<td>' + $('#compatibility-data-' + sequence_id_count_loop).val() + '</td>'; 1518 sequence_id_count_loop++; 1519 } 1520 inj_html += '<td class="text-right"><button class="btn btn-danger" title="" type="button" onclick="$(\'#compatibility-row' + compatibility_row + '\').remove();"><i class="fa fa-trash-o"></i></button></td>'; 1521 inj_html += '</tr>'; 1522 1523 $('#compatibility-table').append(inj_html); 1524 $('#compatibility-options').show(); 1525 1526 compatibility_row++; 1527 }); 1528 1529 $('#button-catalog-search').bind('click', function() { 1530 var qry = $('#catalog-search').val(); 1531 var cat = $('#final-category').val(); 1532 1533 if (cat <= 0) { 1534 alert('{{ error_choose_category }}'); 1535 return; 1536 } 1537 1538 if (qry == '') { 1539 alert('{{ error_search_text }}'); 1540 return; 1541 } 1542 1543 var html = ''; 1544 1545 $.ajax({ 1546 url: 'index.php?route=extension/openbay/ebay/searchEbayCatalog&user_token={{ user_token }}', 1547 type: 'POST', 1548 dataType: 'json', 1549 data: { category_id: cat, page: 1, search: qry }, 1550 beforeSend: function() { 1551 $('#product-catalog-container').empty().show(); 1552 $('#button-catalog-search').empty().html('<i class="fa fa-cog fa-lg fa-spin"></i>').attr('disabled','disabled'); 1553 $('#catalog-search-alert').remove(); 1554 }, 1555 success: function(data) { 1556 if (data.error == false) { 1557 if (data.results == 0) { 1558 $('#product-catalog-container').before('<div class="alert alert-warning" id="catalog-search-alert">{{ error_catalog_data }}</div>'); 1559 } else { 1560 data.products = $.makeArray(data.products); 1561 1562 $.each(data.products, function(key, val) { 1563 html = '<div class="col-sm-3">'; 1564 html += '<div class="well">'; 1565 html += '<div class="row">'; 1566 html += '<div class="col-sm-12 text-left"><input type="radio" name="catalog_epid" value="'+val.productIdentifier.ePID+'" /></div>'; 1567 html += '</div>'; 1568 html += '<div class="row">'; 1569 html += '<div class="col-sm-12 text-center" style="height:125px;">'; 1570 if (typeof(val.stockPhotoURL) != "undefined" && val.stockPhotoURL !== null) { 1571 html += '<img class="img-thumbnail" src="'+val.stockPhotoURL.thumbnail.value+'" style="height:96px;"/>'; 1572 } else { 1573 html += '<span class="img-thumbnail"><i class="fa fa-camera fa-5x"></i></span>'; 1574 } 1575 html += '</div>'; 1576 html += '</div>'; 1577 html += '<div class="row">'; 1578 html += '<div class="col-sm-12 text-center" style="min-height:70px;">'+val.productDetails.value.text.value+'</div>'; 1579 html += '</div>'; 1580 html += '</div>'; 1581 html += '</div>'; 1582 1583 $('#product-catalog-container').append(html); 1584 }); 1585 } 1586 } else { 1587 if (data.msg == null) { 1588 alert('{{ error_catalog_load }}'); 1589 } else { 1590 alert(data.msg); 1591 } 1592 } 1593 1594 $('#button-catalog-search').show(); 1595 }, 1596 complete: function() { 1597 $('#button-catalog-search').empty().removeAttr('disabled').html('<i class="fa fa-search"></i> {{ button_search }}'); 1598 }, 1599 error: function (xhr, ajaxOptions, thrownError) { 1600 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 1601 } 1602 }); 1603 }); 1604 1605 function listingDuration(data) { 1606 var lang = new Array(); 1607 var default_duration = "{{ product.defaults.listing_duration }}"; 1608 var html_inj = ''; 1609 1610 lang["Days_1"] = '{{ text_listing_1day }}'; 1611 lang["Days_3"] = '{{ text_listing_3day }}'; 1612 lang["Days_5"] = '{{ text_listing_5day }}'; 1613 lang["Days_7"] = '{{ text_listing_7day }}'; 1614 lang["Days_10"] = '{{ text_listing_10day }}'; 1615 lang["Days_30"] = '{{ text_listing_30day }}'; 1616 lang["GTC"] = '{{ text_listing_gtc }}'; 1617 1618 data = $.makeArray(data); 1619 1620 html_inj += '<option disabled selected>{{ text_select }}</option>'; 1621 1622 $.each(data, function(duration_key, duration_value) { 1623 html_inj += '<option value="' + duration_value + '" ' + (duration_value == default_duration ? ' selected="selected"' : '') + '>'+lang[duration_value]+'</option>'; 1624 }); 1625 1626 $('#duration-input').empty().html(html_inj).show().prop('disabled', false); 1627 $('#duration-loading').html('<i class="fa fa-angle-right fa-lg"></i>'); 1628 } 1629 1630 function itemFeatures(category_id) { 1631 $.ajax({ 1632 url: 'index.php?route=extension/openbay/ebay/getEbayCategorySpecifics&user_token={{ user_token }}&category_id=' + category_id + '&product_id={{ product.product_id }}', 1633 type: 'GET', 1634 dataType: 'json', 1635 beforeSend: function() { 1636 $('#feature-content').show(); 1637 $('#feature-loading').show(); 1638 $('#show-feature-element').show(); 1639 $('#show-feature-element-preload').hide(); 1640 }, 1641 success: function(data) { 1642 if (data.error == false) { 1643 $('#feature-content').empty(); 1644 $('.option-specifics-').empty().hide(); 1645 1646 var html_inj = ''; 1647 var html_inj2 = ''; 1648 var specific_count = 0; 1649 var show_other = 0; 1650 var show_other_value = ''; 1651 1652 if (data.data) { 1653 $.each(data.data, function(option_specific_key, option_specific_value) { 1654 html_inj2 = ''; 1655 html_inj += '<div class="form-group">'; 1656 html_inj += '<label class="col-sm-2 control-label">'+option_specific_value.name+'</label>'; 1657 html_inj += '<div class="col-sm-10">'; 1658 if (("options" in option_specific_value) && (option_specific_value.validation.max_values == 1)) { 1659 // matched_value_key in option_specific_value 1660 if ("matched_value_key" in option_specific_value) { 1661 $.each(option_specific_value.options, function(option_key, option) { 1662 if (option_specific_value.matched_value_key == option_key) { 1663 html_inj2 += '<option value="' + option + '" selected>' + option + '</option>'; 1664 } else { 1665 html_inj2 += '<option value="' + option + '">' + option + '</option>'; 1666 } 1667 }); 1668 } else { 1669 html_inj2 += '<option disabled selected></option>'; 1670 1671 $.each(option_specific_value.options, function(option_key, option) { 1672 html_inj2 += '<option value="' + option + '">' + option + '</option>'; 1673 }); 1674 } 1675 1676 show_other = false; 1677 show_other_value = ''; 1678 1679 if (option_specific_value.validation.selection_mode == 'FreeText') { 1680 if (option_specific_value.unmatched_value != '') { 1681 html_inj2 += '<option value="Other" selected>{{ text_other }}</option>'; 1682 show_other = true; 1683 show_other_value = option_specific_value.unmatched_value; 1684 } else { 1685 html_inj2 += '<option value="Other">{{ text_other }}</option>'; 1686 } 1687 } 1688 1689 html_inj += '<div class="row">'; 1690 html_inj += '<div class="col-sm-7">'; 1691 html_inj += '<select name="feat[' + option_specific_value.name + ']" class="form-control" id="spec_sel_' + specific_count + '" onchange="toggleSpecOther(' + specific_count + ');">' + html_inj2 + '</select>'; 1692 html_inj += '</div>'; 1693 1694 if (show_other == true) { 1695 html_inj += '<div class="col-sm-5" id="spec_' + specific_count + '_other">'; 1696 } else { 1697 html_inj += '<div class="col-sm-5" id="spec_' + specific_count + '_other" style="display:none;">'; 1698 } 1699 html_inj += '<input placeholder="{{ text_other }}" type="text" name="featother[' + option_specific_value.name + ']" class="form-control" value="' + show_other_value + '"/>'; 1700 html_inj += '</div>'; 1701 html_inj += '</div>'; 1702 } else if (("options" in option_specific_value) && (option_specific_value.validation.max_values > 1)) { 1703 html_inj += '<div class="row">'; 1704 $.each(option_specific_value.options, function(option_key, option) { 1705 html_inj += '<div class="col-sm-2">'; 1706 html_inj += '<label class="checkbox-inline">'; 1707 html_inj += '<input type="checkbox" name="feat[' + option_specific_value.name + '][]" value="' + option + '" /> ' + option; 1708 html_inj += '</label>'; 1709 html_inj += '</div>'; 1710 }); 1711 html_inj += '</div>'; 1712 } else { 1713 html_inj += '<div class="row">'; 1714 html_inj += '<div class="col-sm-7">'; 1715 html_inj += '<input type="text" name="feat[' + option_specific_value.name + ']" class="form-control" value="' + option_specific_value.unmatched_value + '" />'; 1716 html_inj += '</div>'; 1717 html_inj += '</div>'; 1718 } 1719 html_inj += '</div>'; 1720 html_inj += '</div>'; 1721 1722 specific_count++; 1723 }); 1724 1725 $('#feature-content').append(html_inj); 1726 } else { 1727 $('#feature-content').text('None'); 1728 } 1729 } else { 1730 if (data.error == null) { 1731 alert('{{ error_features }}'); 1732 } else { 1733 alert(data.error); 1734 } 1735 } 1736 1737 $('#feature-loading').hide(); 1738 }, 1739 error: function (xhr, ajaxOptions, thrownError) { 1740 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 1741 } 1742 }); 1743 } 1744 1745 function toggleSpecOther(id) { 1746 if ($('#spec_sel_'+id).val() == 'Other') { 1747 $('#spec_'+id+'_other').show(); 1748 } else { 1749 $('#spec_'+id+'_other').hide(); 1750 } 1751 } 1752 1753 $('#shipping-type-national').bind('change', function() { 1754 changeNationalType(); 1755 }); 1756 1757 $('#shipping-type-international').bind('change', function() { 1758 changeInternationalType(); 1759 }); 1760 1761 function changeNationalType() { 1762 var shipping_type = $('#shipping-type-national').val(); 1763 1764 $('.shipping-national-container').hide(); 1765 $('#national-container-'+shipping_type).fadeIn(); 1766 } 1767 1768 function changeInternationalType() { 1769 var shipping_type = $('#shipping-type-international').val(); 1770 1771 $('.shipping-international-container').hide(); 1772 $('#international-container-'+shipping_type).fadeIn(); 1773 } 1774 1775 $('#profile-shipping-input').change(function() { 1776 profileShippingUpdate(); 1777 }); 1778 1779 function profileShippingUpdate() { 1780 if ($('#profile-shipping-input').val() != 'def') { 1781 $('#profile-shipping-icon').html('<i class="fa fa-cog fa-lg fa-spin"></i>'); 1782 $('#profile-shipping-input').attr('disabled', 'disabled'); 1783 1784 $.ajax({ 1785 type:'GET', 1786 dataType: 'json', 1787 url: 'index.php?route=extension/openbay/ebay_profile/profileGet&user_token={{ user_token }}&ebay_profile_id='+$('#profile-shipping-input').val(), 1788 success: function(data) { 1789 setTimeout(function() { 1790 $('#location').val(data.data.location); 1791 $('#postcode').val(data.data.postcode); 1792 $('#dispatch_time').val(data.data.dispatch_time); 1793 if (typeof(data.data.national.calculated) != "undefined") { 1794 $('#national-handling-fee').val(data.data.national.calculated.handling_fee); 1795 } 1796 if (typeof(data.data.international.calculated) != "undefined") { 1797 $('#international-handling-fee').val(data.data.international.calculated.handling_fee); 1798 } 1799 if (typeof data.data.country !== undefined && data.data.country) { 1800 $('#country').val(data.data.country); 1801 } 1802 if (typeof data.data.eligible_for_pickup_dropoff !== undefined && data.data.eligible_for_pickup_dropoff == 1) { 1803 $('#eligible_for_pickup_dropoff').prop('checked', true); 1804 } 1805 if (typeof data.data.eligible_for_pickup_instore !== undefined && data.data.eligible_for_pickup_instore == 1) { 1806 $('#eligible_for_pickup_instore').prop('checked', true); 1807 } 1808 if (typeof data.data.global_shipping !== undefined && data.data.global_shipping == 1) { 1809 $('#global_shipping').prop('checked', true); 1810 } 1811 if (typeof data.data.promotional_shipping_discount !== undefined && data.data.promotional_shipping_discount == 1) { 1812 $('#promotional_shipping_discount').prop('checked', true); 1813 } 1814 if (typeof data.data.promotional_shipping_discount_international !== undefined && data.data.promotional_shipping_discount_international == 1) { 1815 $('#promotional_shipping_discount_international').prop('checked', true); 1816 } 1817 if (data.data.get_it_fast == 1) { 1818 $('#get_it_fast').prop('checked', true); 1819 } else { 1820 $('#get_it_fast').prop('checked', false); 1821 } 1822 $('#options-national-flat').html(data.html.national_flat); 1823 $('#options-international-flat').html(data.html.international_flat); 1824 $('#options-national-calculated').html(data.html.national_calculated); 1825 $('#options-international-calculated').html(data.html.international_calculated); 1826 $('#profile-shipping-icon').html('<i class="fa fa-lg fa-file-text"></i>'); 1827 $('#profile-shipping-input').removeAttr('disabled'); 1828 $('#shipping-type-national').val(data.html.national.type); 1829 $('#shipping-type-international').val(data.html.international.type); 1830 changeNationalType(); 1831 changeInternationalType(); 1832 }, 1000); 1833 }, 1834 error: function (xhr, ajaxOptions, thrownError) { 1835 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 1836 } 1837 }); 1838 } 1839 } 1840 1841 function addShipping(id, type) { 1842 if (id == 'national') { 1843 var loc = '0'; 1844 } else { 1845 var loc = '1'; 1846 } 1847 1848 var count = $('#' + type + '_count_' + id).val(); 1849 count = parseInt(count); 1850 1851 $.ajax({ 1852 url: 'index.php?route=extension/openbay/ebay/getShippingService&user_token={{ user_token }}&loc=' + loc + '&type=' + type, 1853 beforeSend: function(){ 1854 $('#add-' + id + '-' + type).empty().html('<i class="fa fa-cog fa-lg fa-spin"></i>').attr('disabled','disabled'); 1855 }, 1856 type: 'GET', 1857 dataType: 'json', 1858 success: function(data) { 1859 html = ''; 1860 html += '<div class="well" id="' + id + '_' + type + '_' + count + '">'; 1861 html += '<div class="row form-group">'; 1862 html += '<div class="col-sm-1 text-right">'; 1863 html += '<label class="control-label">{{ text_shipping_service }}<label>'; 1864 html += '</div>'; 1865 html += '<div class="col-sm-11">'; 1866 html += '<select name="data[' + id + '][' + type + '][service_id][' + count + ']" class="form-control">'; 1867 $.each(data.service, function(key, val) { 1868 html += '<option value="' + key + '">' + val.description + '</option>'; 1869 }); 1870 html += '</select>'; 1871 html += '</div>'; 1872 html += '</div>'; 1873 if (id == 'international') { 1874 html += '<div class="row form-group">'; 1875 html += '<div class="col-sm-1 text-right">'; 1876 html += '<label class="control-label">{{ text_shipping_zones }}</label>'; 1877 html += '</div>'; 1878 html += '<div class="col-sm-10">'; 1879 html += '<label class="checkbox-inline">'; 1880 html += '<input type="checkbox" name="data[' + id + '][' + type + '][shipto][' + count + '][]" value="Worldwide" />'; 1881 html += ' {{ text_shipping_worldwide }}'; 1882 html += '</label>'; 1883 {% for shipping_international_zones in data.shipping_international_zones %} 1884 html += '<label class="checkbox-inline">'; 1885 html += '<input type="checkbox" name="data[' + id + '][' + type + '][shipto][' + count + '][]" value="{{ zone.shipping_location }}" />'; 1886 html += ' {{ zone.description }}'; 1887 html += '</label>'; 1888 {% endfor %} 1889 html += '</div>'; 1890 html += '</div>'; 1891 } 1892 html += '<div class="row form-group">'; 1893 if (type != 'calculated') { 1894 html += '<div class="col-sm-1 text-right">'; 1895 html += '<label class="control-label">{{ text_shipping_first }}</label>'; 1896 html += '</div>'; 1897 html += '<div class="col-sm-3">'; 1898 html += '<input type="text" name="data[' + id + '][' + type + '][price][' + count + ']" class="form-control" value="0.00" class="form-control" />'; 1899 html += '</div>'; 1900 html += '<div class="col-sm-2 text-right">'; 1901 html += '<label class="control-label">{{ text_shipping_add }}</label>'; 1902 html += '</div>'; 1903 html += '<div class="col-sm-3">'; 1904 html += '<input type="text" name="data[' + id + '][' + type + '][price_additional][' + count + ']" class="form-control" value="0.00" />'; 1905 html += '</div>'; 1906 } 1907 html += '<div class="col-sm-3 pull-right text-right">'; 1908 html += '<a onclick="removeShipping(\'' + id + '\',\'' + count + '\',\''+type+'\');" class="btn btn-danger"><i class="fa fa-minus-circle"></i> {{ button_delete }}</a>'; 1909 html += '</div>'; 1910 html += '</div>'; 1911 html += '</div>'; 1912 1913 $('#options-' + id + '-' + type).append(html); 1914 $('#add-' + id + '-' + type).empty().html('<i class="fa fa-plus-circle"></i> {{ button_add }}').removeAttr('disabled'); 1915 }, 1916 error: function (xhr, ajaxOptions, thrownError) { 1917 $('#add-shipping-'+id).empty().html('<i class="fa fa-plus-circle"></i> {{ button_add }}').removeAttr('disabled'); 1918 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 1919 } 1920 }); 1921 1922 $('#' + type + '_count_' + id).val(count + 1); 1923 } 1924 1925 function removeShipping(id, count, type) { 1926 $('#' + id + '_' + type + '_' + count).remove(); 1927 } 1928 1929 $('#button-verify').bind('click', function() { 1930 var err = 0; 1931 1932 $('.listing-error').remove(); 1933 1934 if ($('.checkbox-ebay-image:checked').length > 0) { 1935 var main_image = $('[name=main_image]:checked').val(); 1936 var check_main_selected = '#image-checkbox-' + main_image.toString(); 1937 1938 if (!$(check_main_selected).is(':checked')) { 1939 $('#page-listing').prepend('<div class="alert alert-warning listing-error">{{ error_main_image }}</div>'); 1940 err = 1; 1941 } 1942 } else { 1943 $('#page-listing').prepend('<div class="alert alert-warning listing-error">{{ error_no_images }}</div>'); 1944 err = 1; 1945 } 1946 1947 if ($('#final-category').val() == '') { 1948 $('#page-listing').prepend('<div class="alert alert-warning listing-error">{{ error_choose_category }}</div>'); 1949 err = 1; 1950 } 1951 1952 if ($('#auction_duration').val() == '') { 1953 err = 1; 1954 alert('{{ error_duration }}'); 1955 } 1956 1957 if ($('#gallery_height').val() == '' || $('#gallery_width').val() == '' || $('#thumb_height').val() == '' || $('#thumb_width').val() == '') { 1958 err = 1; 1959 alert('{{ error_image_size }}'); 1960 } 1961 1962 if ($('#sku').val() == '') { 1963 err = 1; 1964 alert('{{ error_sku }}'); 1965 } 1966 1967 if ($('#name').val() == '') { 1968 err = 1; 1969 alert('{{ error_name }}'); 1970 } 1971 1972 if ($('#name').val().length > 75) { 1973 err = 1; 1974 alert('{{ error_name_length }}'); 1975 } 1976 1977 if ($('#location').val() == '' && $('#postcode').val() == '') { 1978 err = 1; 1979 alert('{{ error_item_location }}'); 1980 } 1981 1982 if ($('#dispatch_time').val() == '') { 1983 err = 1; 1984 alert('{{ error_dispatch_time }}'); 1985 } 1986 1987 if ($('#count_national').val() == 0) { 1988 err = 1; 1989 alert('{{ error_shipping_national }}'); 1990 } 1991 1992 if ($('#duration-input').val() == '') { 1993 err = 1; 1994 alert('{{ error_listing_duration }}'); 1995 } 1996 1997 {% if addon.openstock is not empty and addon.openstock == true and product.options is not empty %} 1998 var hasOptions = "yes"; 1999 {% else %} 2000 var hasOptions = "no"; 2001 2002 if ($('#qty').val() < 1) { 2003 err = 1; 2004 alert('{{ error_stock }}'); 2005 } 2006 {% endif %} 2007 2008 if (err == 0) { 2009 $.ajax({ 2010 type:'POST', 2011 dataType: 'json', 2012 url: 'index.php?route=extension/openbay/ebay/verify&user_token={{ user_token }}&options='+hasOptions, 2013 data: $("#form").serialize(), 2014 beforeSend: function() { 2015 $('#button-save').hide(); 2016 $('#button-preview').hide(); 2017 $('#listing-fee-container').hide(); 2018 $('#button-verify').empty().html('<i class="fa fa-cog fa-lg fa-spin"></i>').attr('disabled','disabled'); 2019 }, 2020 success: function(data) { 2021 if (data.error != true) { 2022 $('#page-listing').hide(); 2023 2024 if (data.data.Errors) { 2025 data.Errors = $.makeArray(data.Errors); 2026 $.each(data.data.Errors, function(key, val) { 2027 $('#page-review').prepend('<div class="alert alert-danger alert-dismissible">'+val+'</div>'); 2028 }); 2029 } 2030 2031 if (data.data.Ack != 'Failure') { 2032 var fee_total = parseFloat(0.00); 2033 var currency = ''; 2034 var html = ''; 2035 2036 data.data.Fees = $.makeArray(data.data.Fees); 2037 2038 $.each(data.data.Fees, function(key, val) { 2039 if (val.Fee != 0.0 && val.Name != 'ListingFee') { 2040 fee_total = fee_total + parseFloat(val.Fee); 2041 } 2042 currency = val.Cur; 2043 }); 2044 html += '<h5>{{ text_review_costs }}: '+currency+' '+fee_total.toFixed(2)+'</h5>'; 2045 2046 $('#listing-fee-container').html(html).show(); 2047 $('#button-preview').attr('href', data.data.link).show(); 2048 $('#button-save').show(); 2049 } 2050 2051 $('#page-review').show(); 2052 } else { 2053 alert(data.msg); 2054 } 2055 }, 2056 complete: function () { 2057 $('#button-verify').empty().html('{{ text_verify }}').removeAttr('disabled'); 2058 }, 2059 error: function (xhr, ajaxOptions, thrownError) { 2060 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 2061 } 2062 }); 2063 } else { 2064 return; 2065 } 2066 }); 2067 2068 $('#button-save').bind('click', function() { 2069 var hasOptions = "{% if addon.openstock == true and product.options is not empty %}yes{% else %}no{% endif %}"; 2070 2071 $.ajax({ 2072 type:'POST', 2073 dataType: 'json', 2074 url: 'index.php?route=extension/openbay/ebay/listItem&user_token={{ user_token }}&options='+hasOptions, 2075 data: $("#form").serialize(), 2076 beforeSend: function() { 2077 $('#button-save').empty().html('<i class="fa fa-cog fa-lg fa-spin"></i>').attr('disabled','disabled'); 2078 $('#button-view').hide(); 2079 }, 2080 success: function(data) { 2081 if (data.error == true) { 2082 alert(data.msg); 2083 } else { 2084 if (data.data.Errors) { 2085 data.data.Errors = $.makeArray(data.data.Errors); 2086 2087 $.each(data.data.Errors, function(key, val) { 2088 $('#page-failed').prepend('<div class="alert alert-danger alert-dismissible">'+val+'</div>'); 2089 $('#page-complete').prepend('<div class="alert alert-danger alert-dismissible">'+val+'</div>'); 2090 }); 2091 } 2092 2093 if (data.data.Failed == true) { 2094 $('#page-failed').show(); 2095 } else { 2096 $('#item-number').text(data.data.ItemID); 2097 2098 if (data.data.view_link != '') { 2099 $('#button-view').attr('href', data.data.view_link).show(); 2100 $('#button-view').show(); 2101 } 2102 2103 $('#page-complete').show(); 2104 $('#cancel_button').hide(); 2105 } 2106 } 2107 }, 2108 complete: function () { 2109 $('#button-save').show(); 2110 $('#button-save-loading').hide(); 2111 $('#page-review').hide(); 2112 $('#button-save').empty().html('{{ button_save }}').removeAttr('disabled'); 2113 }, 2114 error: function (xhr, ajaxOptions, thrownError) { 2115 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 2116 } 2117 }); 2118 }); 2119 2120 $('#button-edit').bind('click', function() { 2121 $('.alert-danger').remove(); 2122 $('#page-review').hide(); 2123 $('#page-listing').show(); 2124 }); 2125 2126 function toggleRad(id) { 2127 if ($("#image-checkbox-"+id).is(':checked')) { 2128 $("#image-radio-"+id).removeAttr('disabled'); 2129 } else { 2130 $("#image-radio-"+id).attr('disabled', 'disabled'); 2131 } 2132 } 2133 2134 function updatePrice() { 2135 var taxEx = $('#taxEx').val(); 2136 var rate = $('#taxRate').val(); 2137 var taxInc = taxEx * ((rate /100)+1); 2138 $('#taxInc').val(parseFloat(taxInc).toFixed(2)); 2139 } 2140 2141 function updateVarPrice() { 2142 var rate = $('#taxRate').val(); 2143 var taxEx = ''; 2144 var id = ''; 2145 var taxInc = ''; 2146 2147 $.each($('.varPriceExCount'), function() { 2148 id = $(this).val(); 2149 taxEx = $('#varPriceEx_'+id).val(); 2150 taxInc = taxEx * ((rate /100)+1); 2151 $('#varPriceInc_'+id).val(parseFloat(taxInc).toFixed(2)); 2152 }); 2153 } 2154 2155 function updateVarPriceFromEx(id) { 2156 var taxEx = $('#varPriceEx_'+id).val(); 2157 var rate = $('#taxRate').val(); 2158 var taxInc = taxEx * ((rate /100)+1); 2159 $('#varPriceInc_'+id).val(parseFloat(taxInc).toFixed(2)); 2160 } 2161 2162 function updatePriceFromEx() { 2163 var taxEx = $('#taxEx').val(); 2164 var rate = $('#taxRate').val(); 2165 var taxInc = taxEx * ((rate /100)+1); 2166 $('#taxInc').val(parseFloat(taxInc).toFixed(2)); 2167 } 2168 2169 function updateVarPriceFromInc(id) { 2170 var taxInc = $('#varPriceInc_'+id).val(); 2171 var rate = $('#taxRate').val(); 2172 var taxEx = taxInc / ((rate /100)+1); 2173 $('#varPriceEx_'+id).val(parseFloat(taxEx).toFixed(2)); 2174 } 2175 2176 function updatePriceFromInc() { 2177 var taxInc = $('#taxInc').val(); 2178 var rate = $('#taxRate').val(); 2179 var taxEx = taxInc / ((rate /100)+1); 2180 $('#taxEx').val(parseFloat(taxEx).toFixed(2)); 2181 } 2182 2183 $('#popular_default').click(function() { 2184 $('#category-selections-row').show(); 2185 2186 if($('#category-suggested-row').length != 0) { 2187 $('#category-suggested-row').show(); 2188 } 2189 2190 if($('#category-popular-row').length != 0) { 2191 $('#category-popular-row').show(); 2192 } 2193 2194 $('#show-feature-element').hide(); 2195 $('#product-catalog-container').hide(); 2196 $('#feature-content').empty(); 2197 $('#specifics').empty(); 2198 $('input[name=suggested]').removeAttr('checked'); 2199 $('#suggested_default').prop('checked', true); 2200 }); 2201 2202 $('input[name=popular]').bind('change', function() { 2203 if ($(this).val() != '') { 2204 categoryFavChange($(this).val()); 2205 } 2206 }); 2207 2208 $('#check-all-template-images').bind('change', function() { 2209 if ($('#check-all-template-images').is(':checked')) { 2210 $('.check-template-image').prop('checked', true); 2211 } else { 2212 $('.check-template-image').removeAttr('checked'); 2213 } 2214 }); 2215 2216 $('#check-all-ebay-images').bind('change', function() { 2217 if ($('#check-all-ebay-images').is(':checked')) { 2218 $('.checkbox-ebay-image').prop('checked', true); 2219 } else { 2220 $('.checkbox-ebay-image').removeAttr('checked'); 2221 } 2222 }); 2223 2224 $('#profile-generic-input').change(function() { 2225 profileGenericUpdate(); 2226 }); 2227 2228 $('#profile-return-input').change(function() { 2229 profileReturnUpdate(); 2230 }); 2231 2232 $('#profile-theme-input').change(function() { 2233 profileThemeUpdate(); 2234 }); 2235 2236 function profileReturnUpdate() { 2237 if ($('#profile-return-input').val() != 'def') { 2238 $('#profile-return-icon').html('<i class="fa fa-cog fa-lg fa-spin"></i>'); 2239 $('#profile-return-input').attr('disabled', 'disabled'); 2240 2241 $.ajax({ 2242 type:'GET', 2243 dataType: 'json', 2244 url: 'index.php?route=extension/openbay/ebay_profile/profileGet&user_token={{ user_token }}&ebay_profile_id='+$('#profile-return-input').val(), 2245 success: function(data) { 2246 setTimeout(function() { 2247 if ($('#returns_accepted').length) { 2248 $('#returns_accepted').val(data.data.returns_accepted); 2249 } 2250 if ($('#returns_option').length) { 2251 $('#returns_option').val(data.data.returns_option); 2252 } 2253 if ($('#returns_within').length) { 2254 $('#returns_within').val(data.data.returns_within); 2255 } 2256 if ($('#returns_policy').length) { 2257 $('#returns_policy').val(data.data.returns_policy); 2258 } 2259 if ($('#returns_shipping').length) { 2260 $('#returns_shipping').val(data.data.returns_shipping); 2261 } 2262 if ($('#returns_restocking_fee').length) { 2263 $('#returns_restocking_fee').val(data.data.returns_restocking_fee); 2264 } 2265 2266 $('#profile-return-icon').html('<i class="fa fa-lg fa-file-text"></i>'); 2267 $('#profile-return-input').removeAttr('disabled'); 2268 }, 1000); 2269 }, 2270 error: function (xhr, ajaxOptions, thrownError) { 2271 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 2272 } 2273 }); 2274 } 2275 } 2276 2277 function profileThemeUpdate() { 2278 if ($('#profile-theme-input').val() != 'def') { 2279 $('#profile-theme-icon').html('<i class="fa fa-cog fa-lg fa-spin"></i>'); 2280 $('#profile-theme-input').attr('disabled', 'disabled'); 2281 2282 $.ajax({ 2283 type:'GET', 2284 dataType: 'json', 2285 url: 'index.php?route=extension/openbay/ebay_profile/profileGet&user_token={{ user_token }}&ebay_profile_id='+$('#profile-theme-input').val(), 2286 success: function(data) { 2287 setTimeout(function() { 2288 $('#gallery_height').val(data.data.ebay_gallery_height); 2289 $('#gallery_width').val(data.data.ebay_gallery_width); 2290 $('#thumb_height').val(data.data.ebay_thumb_height); 2291 $('#thumb_width').val(data.data.ebay_thumb_width); 2292 2293 if (data.data.ebay_gallery_plus == 1) { 2294 $('#gallery_plus').prop('checked', true); 2295 } else { 2296 $('#gallery_plus').removeAttr('checked'); 2297 } 2298 2299 if (data.data.ebay_supersize == 1) { 2300 $('#gallery_super').prop('checked', true); 2301 } else { 2302 $('#gallery_super').removeAttr('checked'); 2303 } 2304 2305 if (data.data.ebay_img_ebay == 1) { 2306 $('.checkbox-ebay-image').prop('checked', true); 2307 $('#check-all-ebay-images').prop('checked', true); 2308 } 2309 2310 if (data.data.ebay_img_template == 1) { 2311 $('.check-template-image').prop('checked', true); 2312 $('#check-all-template-images').prop('checked', true); 2313 } 2314 2315 if ($.inArray('ebay_template_id', data.data)) { 2316 $('#template_id').val(data.data.ebay_template_id); 2317 } 2318 2319 $('#profile-theme-icon').html('<i class="fa fa-lg fa-file-text"></i>'); 2320 $('#profile-theme-input').removeAttr('disabled'); 2321 }, 1000); 2322 }, 2323 error: function (xhr, ajaxOptions, thrownError) { 2324 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 2325 } 2326 }); 2327 } 2328 } 2329 2330 function profileGenericUpdate() { 2331 if ($('#profile-generic-input').val() != 'def') { 2332 $('#profile-generic-icon').html('<i class="fa fa-cog fa-lg fa-spin"></i>'); 2333 $('#profile-generic-input').attr('disabled', 'disabled'); 2334 2335 $.ajax({ 2336 type:'GET', 2337 dataType: 'json', 2338 url: 'index.php?route=extension/openbay/ebay_profile/profileGet&user_token={{ user_token }}&ebay_profile_id='+$('#profile-generic-input').val(), 2339 success: function(data) { 2340 setTimeout(function() { 2341 if (data.data.private_listing == 1) { 2342 $('#private_listing').prop('checked', true); 2343 } else { 2344 $('#private_listing').removeAttr('checked'); 2345 } 2346 2347 $('#profile-generic-icon').html('<i class="fa fa-lg fa-file-text"></i>'); 2348 $('#profile-generic-input').removeAttr('disabled'); 2349 }, 1000); 2350 }, 2351 error: function (xhr, ajaxOptions, thrownError) { 2352 if (xhr.status != 0) { alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText); } 2353 } 2354 }); 2355 } 2356 } 2357 2358 function removeVariationImage(grp_id, id, number) { 2359 $('#option_image_'+grp_id+'_'+id+'_'+number).remove(); 2360 2361 var count = $('#option_image_count_'+grp_id).val() - 1; 2362 2363 $('#option_image_count_'+grp_id).val(count); 2364 } 2365 2366 function addVariationImage(grp_id, id) { 2367 var count = parseInt($('#option_image_count_'+grp_id).val()) + 1; 2368 $('#option_image_count_'+grp_id).val(count); 2369 2370 var html = ''; 2371 2372 html += '<tr id="option_image_'+grp_id+'_'+id+'_'+count+'">'; 2373 html += '<td>'; 2374 html += '<a href="" id="thumb-image' + count + '" data-toggle="image" class="img-thumbnail">'; 2375 html += '<img src="{{ no_image }}"/>'; 2376 html += '</a>'; 2377 html += '<input type="hidden" name="option_image['+grp_id+']['+id+'][images][]" id="input-image' + count + '" value="" />'; 2378 html += '</td>'; 2379 html += '<td>'; 2380 html += '<button type="button" onclick="removeVariationImage('+grp_id+', '+id+', '+count+');" data-toggle="tooltip" title="{{ button_remove }}" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button>'; 2381 html += '</td>'; 2382 html += '</tr>'; 2383 2384 $('#option_images_'+id).append(html); 2385 } 2386 2387 function confirmAction(url) { 2388 if (confirm("{{ text_confirm_action }}")) { 2389 window.location = url; 2390 } 2391 } 2392 2393 $('#option_image_group').change(function() { 2394 $('.option-group-img').hide(); 2395 2396 if ($(this).val() != 'def') { 2397 $('.option-group-img-tr').show(); 2398 $('#option-group-img-'+$(this).val()).show(); 2399 $('#option-image-group-name').val($(this).find("option:selected").text()); 2400 } else { 2401 $('#option-image-group-name').val(''); 2402 $('.option-group-img-tr').hide(); 2403 } 2404 }); 2405 2406 $(document).ready(function() { 2407 loadCategories(1); 2408 getSuggestedCategories(); 2409 updatePrice(); 2410 updateVarPrice(); 2411 changeNationalType(); 2412 changeInternationalType(); 2413 updateUnit(); 2414 2415 {% if product.profiles_returns_def > 0 %} 2416 $('#profile-return-input').val({{ product.profiles_returns_def }}); 2417 profileReturnUpdate(); 2418 {% endif %} 2419 2420 {% if product.profiles_generic_def > 0 %} 2421 $('#profile-generic-input').val({{ product.profiles_generic_def }}); 2422 profileGenericUpdate(); 2423 {% endif %} 2424 2425 {% if product.profiles_shipping_def > 0 %} 2426 $('#profile-shipping-input').val({{ product.profiles_shipping_def }}); 2427 profileShippingUpdate(); 2428 {% endif %} 2429 2430 {% if product.profiles_theme_def > 0 %} 2431 $('#profile-theme-input').val({{ product.profiles_theme_def }}); 2432 profileThemeUpdate(); 2433 {% endif %} 2434 2435 // $('#description-field').summernote({height: 300}); 2436 }); 2437 2438 $('#measure-unit').bind('change', function() { 2439 updateUnit(); 2440 }); 2441 2442 function updateUnit() { 2443 var unit_type = $('#measure-unit').val(); 2444 2445 if (unit_type == 'English') { 2446 $('.size-unit-text').text('inches'); 2447 $('#weight-major-text').text('Lbs'); 2448 $('#weight-minor-text').text('Oz'); 2449 } else { 2450 $('.size-unit-text').text('cm'); 2451 $('#weight-major-text').text('Kgs'); 2452 $('#weight-minor-text').text('Grams'); 2453 } 2454 } 2455 //--></script> 2456 {{ footer }}