Files
shopPRO/admin/templates/integrations/shoppro-settings.php
Jacek Pyziak 702e3a94be ver. 0.318: shopPRO export produktów + nowe API endpoints
- 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>
2026-02-24 11:43:17 +01:00

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>