- NEW: IntegrationsRepository::shopproExportProduct() — eksport produktu do zdalnej instancji shopPRO (pola główne, tłumaczenia, custom fields, zdjęcia) - NEW: sendImageToShopproApi() — wysyłka zdjęć przez API shopPRO (base64 POST) - REFACTOR: shopproImportProduct() — wydzielono shopproDb() i missingShopproSetting(); dodano security_information, producer_id, custom fields, alt zdjęcia - NEW: AttributeRepository::ensureAttributeForApi() i ensureAttributeValueForApi() — idempotent find-or-create dla słowników - NEW: API POST dictionaries/ensure_attribute — utwórz lub znajdź atrybut - NEW: API POST dictionaries/ensure_attribute_value — utwórz lub znajdź wartość - NEW: API POST products/upload_image — przyjmuje base64, zapisuje plik i DB - NEW: IntegrationsController::shoppro_product_export() — akcja admina - NEW: przycisk "Eksportuj do shopPRO" w liście produktów - NEW: pole API key w ustawieniach integracji shopPRO Tests: 765 tests, 2153 assertions — all green Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
141 lines
5.5 KiB
PHP
141 lines
5.5 KiB
PHP
<div class="panel panel-danger">
|
|
<div class="panel-heading">
|
|
<span class="panel-title">Ustawienia shopPRO</span>
|
|
</div>
|
|
<div class="panel-body">
|
|
<div class="row">
|
|
<div class="col-lg-6">
|
|
<div class="form-group mb10">
|
|
<label class="col-lg-3 control-label" for="inputDefault">Włącz integrację z innym sklepem ShopPRO</label>
|
|
<div class="col-lg-9">
|
|
<div class="bs-component">
|
|
<div class="input-group">
|
|
<select class="form-control" id="enabled" name="enabled">
|
|
<option value="">--- wybierz ---</option>
|
|
<option value="0" <? if ( !$this -> settings['enabled'] ):?>selected<? endif;?>>nie</option>
|
|
<option value="1" <? if ( $this -> settings['enabled'] ):?>selected<? endif;?>>tak</option>
|
|
</select>
|
|
<span class="input-group-addon cursor" field-id="enabled">
|
|
<i class="fa fa-save"></i>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
<label class="col-lg-3 control-label" for="inputDefault">DB host</label>
|
|
<div class="col-lg-9">
|
|
<div class="bs-component">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="db_host" name="db_host" placeholder="" value="<?= $this -> settings['db_host'];?>">
|
|
<span class="input-group-addon cursor" field-id="db_host">
|
|
<i class="fa fa-save"></i>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- DB użytkownik -->
|
|
<div class="form-group">
|
|
<label class="col-lg-3 control-label" for="inputDefault">DB użytkownik</label>
|
|
<div class="col-lg-9">
|
|
<div class="bs-component">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="db_user" name="db_user" placeholder="" value="<?= $this -> settings['db_user'];?>">
|
|
<span class="input-group-addon cursor" field-id="db_user">
|
|
<i class="fa fa-save"></i>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- DB hasło -->
|
|
<div class="form-group">
|
|
<label class="col-lg-3 control-label" for="inputDefault">DB hasło</label>
|
|
<div class="col-lg-9">
|
|
<div class="bs-component">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="db_password" name="db_password" placeholder="" value="<?= $this -> settings['db_password'];?>">
|
|
<span class="input-group-addon cursor" field-id="db_password">
|
|
<i class="fa fa-save"></i>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- DB nazwa bazy -->
|
|
<div class="form-group">
|
|
<label class="col-lg-3 control-label" for="inputDefault">DB nazwa</label>
|
|
<div class="col-lg-9">
|
|
<div class="bs-component">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="db_name" name="db_name" placeholder="" value="<?= $this -> settings['db_name'];?>">
|
|
<span class="input-group-addon cursor" field-id="db_name">
|
|
<i class="fa fa-save"></i>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- domena -->
|
|
<div class="form-group">
|
|
<label class="col-lg-3 control-label" for="inputDefault">domena</label>
|
|
<div class="col-lg-9">
|
|
<div class="bs-component">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="domain" name="domain" placeholder="" value="<?= $this -> settings['domain'];?>">
|
|
<span class="input-group-addon cursor" field-id="domain">
|
|
<i class="fa fa-save"></i>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<!-- API key -->
|
|
<div class="form-group">
|
|
<label class="col-lg-3 control-label" for="inputDefault">API key</label>
|
|
<div class="col-lg-9">
|
|
<div class="bs-component">
|
|
<div class="input-group">
|
|
<input class="form-control" type="text" id="api_key" name="api_key" placeholder="" value="<?= $this -> settings['api_key'];?>">
|
|
<span class="input-group-addon cursor" field-id="api_key">
|
|
<i class="fa fa-save"></i>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-lg-6">
|
|
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<script type="text/javascript">
|
|
$(function() {
|
|
$('body').on('click', '.input-group-addon', function() {
|
|
var field_id = $(this).attr('field-id');
|
|
var value = $('#' + field_id).val();
|
|
$.ajax({
|
|
url: '/admin/integrations/shoppro_settings_save/',
|
|
type: 'POST',
|
|
data: {
|
|
field_id: field_id,
|
|
value: value
|
|
},
|
|
success: function(response) {
|
|
response = JSON.parse(response);
|
|
if (response.status == 'ok') {
|
|
$('#' + field_id).val(response.value);
|
|
$('#' + field_id).closest('.form-group').addClass('has-success');
|
|
setTimeout(function() {
|
|
$('#' + field_id).closest('.form-group').removeClass('has-success');
|
|
}, 5000);
|
|
}
|
|
}
|
|
});
|
|
})
|
|
});
|
|
</script>
|