HEX
Server: LiteSpeed
System: Linux php-prod-3.spaceapp.ru 5.15.0-151-generic #161-Ubuntu SMP Tue Jul 22 14:25:40 UTC 2025 x86_64
User: sarli3128 (1010)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /home/retile.ru/public_html/storage/modification/admin/view/template/catalog/information_form.twig
{{ header }}{{ column_left }}
<div id="content">
  <div class="page-header">
    <div class="container-fluid">
      <div class="pull-right">
        <button type="submit" form="form-information" data-toggle="tooltip" title="{{ button_save }}" class="btn btn-primary"><i class="fa fa-save"></i></button>
        <a href="{{ cancel }}" data-toggle="tooltip" title="{{ button_cancel }}" class="btn btn-default"><i class="fa fa-reply"></i></a></div>
      <h1>{{ heading_title }}</h1>
      <ul class="breadcrumb">
        {% for breadcrumb in breadcrumbs %}
        <li><a href="{{ breadcrumb.href }}">{{ breadcrumb.text }}</a></li>
        {% endfor %}
      </ul>
    </div>
  </div>
  <div class="container-fluid">{% if error_warning %}
    <div class="alert alert-danger alert-dismissible"><i class="fa fa-exclamation-circle"></i> {{ error_warning }}
      <button type="button" class="close" data-dismiss="alert">&times;</button>
    </div>
    {% endif %}
    <div class="panel panel-default">
      <div class="panel-heading">
        <h3 class="panel-title"><i class="fa fa-pencil"></i> {{ text_form }}</h3>
      </div>
      <div class="panel-body">
        <form action="{{ action }}" method="post" enctype="multipart/form-data" id="form-information" class="form-horizontal">
          <ul class="nav nav-tabs">
            <li class="active"><a href="#tab-general" data-toggle="tab">{{ tab_general }}</a></li>
            <li><a href="#tab-data" data-toggle="tab">{{ tab_data }}</a></li>
            <li><a href="#tab-seo" data-toggle="tab">{{ tab_seo }}</a></li>
            <li><a href="#tab-design" data-toggle="tab">{{ tab_design }}</a></li>
          </ul>
          <div class="tab-content">
            <div class="tab-pane active" id="tab-general">
              <ul class="nav nav-tabs" id="language">
                {% for language in languages %}
                <li><a href="#language{{ language.language_id }}" data-toggle="tab"><img src="language/{{ language.code }}/{{ language.code }}.png" title="{{ language.name }}" /> {{ language.name }}</a></li>
                {% endfor %}
              </ul>
              <div class="tab-content">{% for language in languages %}
                <div class="tab-pane" id="language{{ language.language_id }}">
                  <div class="form-group required">
                    <label class="col-sm-2 control-label" for="input-title{{ language.language_id }}">{{ entry_title }}</label>
                    <div class="col-sm-10">
                      <input type="text" name="information_description[{{ language.language_id }}][title]" value="{{ information_description[language.language_id] ? information_description[language.language_id].title }}" placeholder="{{ entry_title }}" id="input-title{{ language.language_id }}" class="form-control" />
                      {% if error_title[language.language_id] %}
                      <div class="text-danger">{{ error_title[language.language_id] }}</div>
                      {% endif %} </div>
                  </div>
                  <div class="form-group required">
                    <label class="col-sm-2 control-label" for="input-description{{ language.language_id }}">{{ entry_description }}</label>
                    <div class="col-sm-10">
                      <textarea name="information_description[{{ language.language_id }}][description]" placeholder="{{ entry_description }}" id="input-description{{ language.language_id }}" data-toggle="summernote" data-lang="{{ summernote }}" class="form-control">{{ information_description[language.language_id] ? information_description[language.language_id].description }}</textarea>
                      {% if error_description[language.language_id] %}
                      <div class="text-danger">{{ error_description[language.language_id] }}</div>
                      {% endif %} </div>
                  </div>
                  <div class="form-group required">
                    <label class="col-sm-2 control-label" for="input-meta-title{{ language.language_id }}">{{ entry_meta_title }}</label>
                    <div class="col-sm-10">
                      <input type="text" name="information_description[{{ language.language_id }}][meta_title]" value="{{ information_description[language.language_id] ? information_description[language.language_id].meta_title }}" placeholder="{{ entry_meta_title }}" id="input-meta-title{{ language.language_id }}" class="form-control" />
                      {% if error_meta_title[language.language_id] %}
                      <div class="text-danger">{{ error_meta_title[language.language_id] }}</div>
                      {% endif %} </div>
                  </div>
                  <div class="form-group">
                    <label class="col-sm-2 control-label" for="input-meta-description{{ language.language_id }}">{{ entry_meta_description }}</label>
                    <div class="col-sm-10">
                      <textarea name="information_description[{{ language.language_id }}][meta_description]" rows="5" placeholder="{{ entry_meta_description }}" id="input-meta-description{{ language.language_id }}" class="form-control">{{ information_description[language.language_id] ? information_description[language.language_id].meta_description }}</textarea>
                    </div>
                  </div>
                  <div class="form-group">
                    <label class="col-sm-2 control-label" for="input-meta-keyword{{ language.language_id }}">{{ entry_meta_keyword }}</label>
                    <div class="col-sm-10">
                      <textarea name="information_description[{{ language.language_id }}][meta_keyword]" rows="5" placeholder="{{ entry_meta_keyword }}" id="input-meta-keyword{{ language.language_id }}" class="form-control">{{ information_description[language.language_id] ? information_description[language.language_id].meta_keyword }}</textarea>
                    </div>
                  </div>
                </div>
                {% endfor %}</div>
            </div>
            <div class="tab-pane" id="tab-data">
              <div class="form-group">
                <label class="col-sm-2 control-label">{{ entry_store }}</label>
                <div class="col-sm-10">
                  <div class="well well-sm" style="height: 150px; overflow: auto;"> {% for store in stores %}
                    <div class="checkbox">
                      <label> {% if store.store_id in information_store %}
                        <input type="checkbox" name="information_store[]" value="{{ store.store_id }}" checked="checked" />
                        {{ store.name }}
                        {% else %}
                        <input type="checkbox" name="information_store[]" value="{{ store.store_id }}" />
                        {{ store.name }}
                        {% endif %}</label>
                    </div>
                    {% endfor %}</div>
                </div>
              </div>
              <div class="form-group">
                <label class="col-sm-2 control-label" for="input-bottom"><span data-toggle="tooltip" title="{{ help_bottom }}">{{ entry_bottom }}</span></label>
                <div class="col-sm-10">
                  <div class="checkbox">
                    <label>{% if bottom %}
                      <input type="checkbox" name="bottom" value="1" checked="checked" id="input-bottom" />
                      {% else %}
                      <input type="checkbox" name="bottom" value="1" id="input-bottom" />
                      {% endif %}
                      &nbsp;</label>
                  </div>
                </div>
              </div>
              <div class="form-group">
                <label class="col-sm-2 control-label" for="input-status">{{ entry_status }}</label>
                <div class="col-sm-10">
                  <select name="status" id="input-status" class="form-control">
                    {% if status %}
                    <option value="1" selected="selected">{{ text_enabled }}</option>
                    <option value="0">{{ text_disabled }}</option>
                    {% else %}
                    <option value="1">{{ text_enabled }}</option>
                    <option value="0" selected="selected">{{ text_disabled }}</option>
                    {% endif %}
                  </select>
                </div>
              </div>
              <div class="form-group">
                <label class="col-sm-2 control-label" for="input-sort-order">{{ entry_sort_order }}</label>
                <div class="col-sm-10">
                  <input type="text" name="sort_order" value="{{ sort_order }}" placeholder="{{ entry_sort_order }}" id="input-sort-order" class="form-control" />
                </div>
              </div>
            </div>
            <div class="tab-pane" id="tab-seo">
              <div class="alert alert-info"><i class="fa fa-info-circle"></i> {{ text_keyword }}</div>
              <div class="table-responsive">
                <table class="table table-bordered table-hover">
                  <thead>
                    <tr>
                      <td class="text-left">{{ entry_store }}</td>
                      <td class="text-left">{{ entry_keyword }}</td>
                    </tr>
                  </thead>
                  <tbody>
                  {% for store in stores %}
                  <tr>
                    <td class="text-left">{{ store.name }}</td>
                    <td class="text-left">{% for language in languages %}
                      <div class="input-group"><span class="input-group-addon"><img src="language/{{ language.code }}/{{ language.code }}.png" title="{{ language.name }}" /></span>
                        <input type="text" name="information_seo_url[{{ store.store_id }}][{{ language.language_id }}]" value="{% if information_seo_url[store.store_id][language.language_id] %}{{ information_seo_url[store.store_id][language.language_id] }}{% endif %}" placeholder="{{ entry_keyword }}" class="form-control" id="input-seo-url-{{ store.store_id }}-{{ language.language_id }}" data-seo-url-was="{% if information_seo_url[store.store_id][language.language_id] %}{{ information_seo_url[store.store_id][language.language_id] }}{% endif %}"/>{% if information_id %}<span class="input-group-btn"><button id="generateUrlOnEdit-{{ store.store_id }}-{{ language.language_id }}" class="generateUrlOnEdit btn btn-success" data-store-id="{{ store.store_id }}" data-language-id="{{ language.language_id }}"><i class="fa fa-refresh"></i> {{ sug_button_generate }}</button></span>{% endif %}
                      </div>
                      {% if error_keyword[store.store_id][language.language_id] %}
                      <div class="text-danger">{{ error_keyword[store.store_id][language.language_id] }}</div>
                      {% endif %} 
                      {% endfor %}</td>
                  </tr>
                  {% endfor %}
                  </tbody>
                </table>
              </div>
            </div>
            <div class="tab-pane" id="tab-design">
              <div class="table-responsive">
                <table class="table table-bordered table-hover">
                  <thead>
                    <tr>
                      <td class="text-left">{{ entry_store }}</td>
                      <td class="text-left">{{ entry_layout }}</td>
                    </tr>
                  </thead>
                  <tbody>
                  
                  {% for store in stores %}
                  <tr>
                    <td class="text-left">{{ store.name }}</td>
                    <td class="text-left"><select name="information_layout[{{ store.store_id }}]" class="form-control">
                        <option value=""></option>
                        {% for layout in layouts %}
                        {% if information_layout[store.store_id] and information_layout[store.store_id] == layout.layout_id %}
                        <option value="{{ layout.layout_id }}" selected="selected">{{ layout.name }}</option>
                        {% else %}
                        <option value="{{ layout.layout_id }}">{{ layout.name }}</option>
                        {% endif %}
                        {% endfor %}
                      </select></td>
                  </tr>
                  {% endfor %}
                    </tbody>
                  
                </table>
              </div>
            </div>
          </div>
        </form>
      </div>
    </div>
  </div>
  <link href="view/javascript/codemirror/lib/codemirror.css" rel="stylesheet" />
  <link href="view/javascript/codemirror/theme/monokai.css" rel="stylesheet" />
  <script type="text/javascript" src="view/javascript/codemirror/lib/codemirror.js"></script> 
  <script type="text/javascript" src="view/javascript/codemirror/lib/xml.js"></script> 
  <script type="text/javascript" src="view/javascript/codemirror/lib/formatting.js"></script> 
  <script type="text/javascript" src="view/javascript/summernote/summernote.js"></script>
  <link href="view/javascript/summernote/summernote.css" rel="stylesheet" />
  <script type="text/javascript" src="view/javascript/summernote/summernote-image-attributes.js"></script> 
  <script type="text/javascript" src="view/javascript/summernote/opencart.js"></script> 
  <script type="text/javascript"><!--
$('#language a:first').tab('show');
//--></script></div>

<!-- SEO URL Generator . Begin
============================================================================ -->
{% if (module_seo_url_generator_status) %}
<script type="text/javascript">
  $('#tab-seo .text-left .input-group').css('margin-bottom', '10px');

  $.each($('#tab-seo .text-left'), function () {      
    $(this).children('.input-group:last').css('margin-bottom', 'initial');
  });

  {% if (not information_id) %}
    
    {% for language in languages %}
    $('#input-title' + {{ language.language_id }}).change(function(){ generateUrlOnAdd(); });
    {% endfor %}

    function generateUrlOnAdd() {
      let a_lang_data = {
        name: {}
      };
      
      {% for language in languages %}
      a_lang_data['name'][{{ language.language_id }}] = $('#input-title' + {{ language.language_id }}).val();
      {% endfor %}
            
      data = {
        a_lang_data     : a_lang_data,
        primary_key     : 'information_id',
        essence         : 'information',
        essence_id      : ''
      };

      // is different from edit
      $.ajax({
        url: 'index.php?route=extension/module/seo_url_generator/generateSeoUrlByAjax4All&user_token={{ user_token }}',
        dataType: 'json',
        data: data,
        method : 'POST',
        beforeSend: function() {},
        success: function(response, textStatus, jqXHR) {
          // success ajax query
          if(response.result != 'error') {
            setTimeout(function() {      
              $.each(response.result, function (store_id, store) {
                $.each(store, function (language_id, value) {
                  if ('' !== value) {
                    $('input[name="information_seo_url[' + store_id +'][' + language_id + ']"]').val(value);
                  }
                });
              });
            }, 100);
          }
        },
        error: function(jqXHR, textStatus, errorThrown) {
          // Error ajax query
          console.log('AJAX query Error: ' + textStatus);
        },
        complete: function() {},
      });
    }

  {% else %}   

    var storeId = false;      
    var languageId = false;
    
    // enque redirects .generateUrlOnEdit firstly
    var url_redirects_rows = {};
    
    {% for store in stores %}
    url_redirects_rows[{{ store.store_id }}] = {};
    
    {% for language in languages %}
    url_redirects_rows[{{ store.store_id }}][{{ language.language_id }}] = 0;
    
    {% endfor %}
    {% endfor %}
    
    {% for store in stores %}
    {% for language in languages %}
   
      var html = '';
      html += '<div class="form-group">';
      html += '<label class="col-sm-2 control-label">{{ sug_text_redirects }}</label>';
      html += '<!-- information-redirects . begin -->';
      html += '<div class="col-sm-10">';
      html += '<div class="alert alert-info alert-sm">{{ sug_help_redirects }}</div>';
      html += '<div id="seo_url_generator_redirects-{{ store.store_id }}-{{ language.language_id }}">';
      
      {% for key, redirect in redirects[store['store_id']][language['language_id']] %}
      {% if redirects[store['store_id']][language['language_id']][key] %}
      html += '<div id="redirect-row-{{ store.store_id }}-{{ language.language_id }}-' + url_redirects_rows[{{ store.store_id }}][{{ language.language_id }}] + '" class="row redirect-row" style="margin: 10px 0;"><input type="text" name="seo_url_generator_redirects[{{ store.store_id }}][{{ language.language_id }}][{{ key }}]" value="{{ redirects[store['store_id']][language['language_id']][key] }}" class="form-control input-sm col-xs-10" style="width: 100%; width: calc(100% - 120px); {% if error_seo_url_generator_redirects[store['store_id']][language['language_id']][key] is defined %}border-color: red;{% endif %}"/><div class="col-xs-1"><i class="pull-left fa fa-close text-danger deleteRedirect" style="cursor: pointer;" data-toggle="tooltip" title="{{ sug_button_delete_redirect }}"></i></div></div>';
      url_redirects_rows[{{ store.store_id }}][{{ language.language_id }}]++;
      {% endif %}
      {% endfor %}	
      html += '</div>';
      html += '<!-- /information-redirects . end -->';
      html += '<button id="addNewRedirect-{{ store.store_id }}-{{ language.language_id }}" class="addNewRedirect btn btn-warning btn-sm" data-store-id="{{ store.store_id }}" data-language-id="{{ language.language_id }}"><i class="fa fa-plus"></i> {{ sug_button_add_redirect }}</button>';
      html += '</div>';
      html += '</div>';
      
      <!-- Front works properly mark -->
      html += '<input type="hidden" name="seo_url_generator_front_works" />';
      
      //console.log('#generateUrlOnEdit-' + {{ store.store_id }} + '-' + {{ language.language_id }});
      //console.debug(html);
      
      $('#generateUrlOnEdit-' + {{ store.store_id }} + '-' + {{ language.language_id }}).parent().parent().after(html);
            
    {% endfor %}
    {% endfor %}
    
    $('.addNewRedirect').click(function(e) {
      e.preventDefault();
      
      var store_id = $(this).data('store-id');
      var language_id =  $(this).data('language-id');
      
      console.log('$(this).data("store-id") : ' + $(this).data('store-id'));
      console.log('$(this).data("language-id") : ' + $(this).data('language-id'));
      console.log('#seo_url_generator_redirects-" + store_id + "-" + language_id : #seo_url_generator_redirects-' + store_id + '-' + language_id);

      $('#seo_url_generator_redirects-' + store_id + '-' + language_id).append('<div id="redirect-row-' + '-' + store_id + '-' + language_id + '-' + url_redirects_rows[store_id][language_id] + '" class="row redirect-row recent" style="margin: 10px 0;"><input type="text" name="seo_url_generator_redirects[' + store_id + '][' + language_id + '][]" value="" class="form-control input-sm col-xs-10" style="width: 100%; width: calc(100% - 120px);" /><div class="col-xs-1"><i class="pull-left fa fa-close text-danger deleteRedirect" style="cursor: pointer;" data-toggle="tooltip" title="{{ sug_button_delete_redirect }}"></i></div></div>');

      url_redirects_rows[store_id][language_id]++;
    });

    $('body').on('click', '.deleteRedirect', function(e) {
      e.preventDefault();
      $('#sug-btn-confirm').attr('data-target', '#' + $(this).parent().parent('.redirect-row').attr('id'));		
      $('#sug-confirm').modal('toggle');    
    });

    $('body').on('click', '#sug-btn-confirm', function(e) {
      e.preventDefault();		
      $($(this).attr('data-target')).remove();		
      $('#sug-confirm').modal('toggle');
    });
    
    
    // SEO URL Generation by button click
  
    thisButton = false;
    
    $('.generateUrlOnEdit').click(function(e) {
      e.preventDefault();
      
      storeId = $(this).data('store-id');      
      languageId = $(this).data('language-id');
      thisButton = $(this);
            
      data = {
        store_id        : storeId,
        language_id     : languageId,
        name            : $('#input-title' + languageId).val(),
        primary_key     : 'information_id',
        essence         : 'information',
        essence_id      : {{ information_id }}
      };     

      getSeoUrl(data);
    });
    
    // is different from add
    function getSeoUrl(data) {
      $.ajax({
        url: 'index.php?route=extension/module/seo_url_generator/generateSeoUrlByAjax4One&user_token={{ user_token }}',
        dataType: 'json',
        data: data,
        method : 'POST',
        beforeSend: function() {
          thisButton.css('opacity', '0.5');
        },
        success: function(response, textStatus, jqXHR) {
          // success ajax query
          if('' != response.result && 'error' != response.result) {            
            console.log('$("#input-seo-url-" + storeId + "-" + languageId).val() : ' + $('#input-seo-url-' + storeId + '-' + languageId).val());
            console.log('response.result : ' + response.result);
            
            if ('' != $('#input-seo-url-' + storeId + '-' + languageId).val().trim() && $('#input-seo-url-' + storeId + '-' + languageId).val() != response.result) {    
              $('#seo_url_generator_redirects-' + storeId + '-' + languageId).append('<div id="redirect-row-' + '-' + storeId + '-' + languageId + '-' + url_redirects_rows[storeId][languageId] + '" class="row redirect-row recent" style="margin: 10px 0;"><input type="text" name="seo_url_generator_redirects[' + storeId + '][' + languageId + '][]" value="' + $('#input-seo-url-' + storeId + '-' + languageId).data('seo-url-was') + '" class="form-control input-sm col-xs-10" style="width: 100%; width: calc(100% - 120px);" /><div class="col-xs-1"><i class="pull-left fa fa-close text-danger deleteRedirect" style="cursor: pointer;" data-toggle="tooltip" title="{{ sug_button_delete_redirect }}"></i></div></div>');

              url_redirects_rows[storeId][languageId]++;
            }
            
            setTimeout(function() {
              $('#input-seo-url-' + storeId + '-' + languageId).val(response.result);
            }, 100);
          }
        },
        error: function(jqXHR, textStatus, errorThrown) {
          // Error ajax query
          console.log('AJAX query Error: ' + textStatus);
        },
        complete: function() {
          thisButton.css('opacity', '1');
        },
      });
    }

  {% endif %}  

  // Prevent incorrect SEO URL!
	var inputBorderColorInitial = false;
	
	$('body').on('change', '.redirect-row input', function(e) {
		if (!inputBorderColorInitial) {
			inputBorderColorInitial = $(this).css('border-color');
		}
		
		// reset previous errors
		$(this).css('border-color', inputBorderColorInitial);
		
		$('#sug-error-body').html('');
		
		let hasError = false;
		
		// Check inputed data		
		if ($(this).val().trim() == '') {
			hasError = true;
			$('#sug-error-body').append('<p class="text-danger"><b>{{ sug_redirects_error_empty }}</b></p>');
		}

		if ($(this).val().includes('/')) {
			hasError = true;
			$('#sug-error-body').append('<p class="text-danger"><b>{{ sug_redirects_error_slash }}</b></p>');
		}
		
		if ($(this).val().includes('http')) {
			hasError = true;
			$('#sug-error-body').append('<p class="text-danger"><b>{{ sug_redirects_error_protocol }}</b></p>');
		}
		
		if ($(this).val().includes('.html')) {
			hasError = true;
			$('#sug-error-body').append('<p class="text-warning"><b>{{ sug_redirects_error_html }}</b></p>');
		}
		
		if (hasError) {
			$(this).css('border-color', 'red');
			
			$('#sug-error-body').append('<p class="alert alert-info"><i class="fa fa-info-circle" style="font-size: 1.5em;">&nbsp;</i>  {{ sug_redirects_error_common }}</p>');
			
			$('#sug-error').modal('toggle');
		}
		
    console.log('hasError : ' + hasError);
    console.log($(this).val());
		
  });
	
</script>

<!-- Confirm Modal -->
<div class="modal fade" id="sug-confirm" tabindex="-1" role="dialog" aria-labelledby="sug-confirm" aria-hidden="true">
	<div class="modal-dialog">
		<div class="modal-content">
			<div class="modal-header">
				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
				<h4 class="modal-title text-warning" id="sug-confirm-title"><i class="fa fa-exclamation-triangle">&nbsp;</i> <b>{{ sug_confirm_title }}</b></h4>
			</div>
			<div class="modal-body">
				{{ sug_confirm_body }}
			</div>
			<div class="modal-footer">
				<button type="button" class="btn btn-danger sug-btn-confirm" id="sug-btn-confirm" data-target=""><i class="fa fa-trash">&nbsp;</i> {{ sug_confirm_btn_yes }}</button>
				<button type="button" class="btn btn-default" data-dismiss="modal">{{ sug_confirm_btn_no }}</button>
			</div>
		</div>
	</div>
</div>

<!-- Error Modal -->
<div class="modal fade" id="sug-error" tabindex="-1" role="dialog" aria-labelledby="sug-error" aria-hidden="true">
	<div class="modal-dialog">
		<div class="modal-content">
			<div class="modal-header">
				<button type="button" class="close" data-dismiss="modal" aria-hidden="true">&times;</button>
				<h4 class="modal-title text-danger" id="sug-error-title"><i class="fa fa-exclamation-triangle">&nbsp;</i> <b>{{ sug_redirects_error_title }}</b></h4>
			</div>
			<div class="modal-body" id="sug-error-body"></div>
		</div>
	</div>
</div>
{% endif %}
<!-- /SEO URL Generator . End
============================================================================ -->

{{ footer }}