Code: Select all
<?xml version="1.0" encoding="utf-8"?>
<modification>
<name>Symbol counter</name>
<code>my_modification</code>
<version>1.0</version>
<author>Bogdan Onyshenko</author>
<link>http://www.example.com</link>
<file path="admin/view/javascript/common.js">
<operation>
<search><![CDATA[//]]> </search>
<add><![CDATA[
// Add the two new functions here:
function updateProgressBar(textarea) {
const charCount = textarea.value.length;
//console.log(charCount);
const progressBar = document.querySelector('#progress-bar');
//show charcount before progressbar
document.querySelector('#char-count').innerHTML = charCount + '/170';
if (charCount < 140) {
progressBar.style.backgroundColor = 'orange';
progressBar.style.width = (charCount / 140 * 33.33) + '%';
} else if (charCount >= 140 && charCount <= 170) {
progressBar.style.backgroundColor = 'green';
progressBar.style.width = ((charCount - 140) / 30 * 33.33 + 33.33) + '%';
} else {
progressBar.style.backgroundColor = 'red';
progressBar.style.width = '100%';
}
}
function updateProgressBarTitle(textarea) {
const charCount = textarea.value.length;
//console.log(charCount);
const progressBar = document.querySelector('#progress-barTitle');
//show charcount before progressbar
document.querySelector('#char-countTitle').innerHTML = charCount + '/80';
if (charCount < 70) {
progressBar.style.backgroundColor = 'orange';
progressBar.style.width = (charCount / 70 * 33.33) + '%';
} else if (charCount >= 70 && charCount <= 80) {
progressBar.style.backgroundColor = 'green';
progressBar.style.width = ((charCount - 70) / 30 * 33.33 + 33.33) + '%';
} else {
progressBar.style.backgroundColor = 'red';
progressBar.style.width = '100%';
}
}
]]></add>
</operation>
</file>
<file path="admin/view/template/catalog/product_form.twig">
<operation>
<search><![CDATA[<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="product_description[{{ language.language_id }}][meta_title]" value="{{ product_description[language.language_id] ? product_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>]]></search>
<add><![CDATA[
<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="product_description[{{ language.language_id }}][meta_title]" value="{{ product_description[language.language_id] ? product_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 id="char-countTitle"></div>
<style>
#char-countTitle {
display: flex;
justify-content: center;
}
</style>
<div id="progress-barTitle" style="width: 100%; height: 10px;"></div>
]]></add>
</operation>
<operation>
<search><![CDATA[<input type="text" name="product_description[{{ language.language_id }}][meta_title]" value="{{ product_description[language.language_id] ? product_description[language.language_id].meta_title }}" placeholder="{{ entry_meta_title }}" id="input-meta-title{{ language.language_id }}" class="form-control"/>]]></search>
<add><![CDATA[
<input type="text" name="product_description[{{ language.language_id }}][meta_title]" value="{{ product_description[language.language_id] ? product_description[language.language_id].meta_title }}" placeholder="{{ entry_meta_title }}" id="input-meta-title{{ language.language_id }}" class="form-control"/>
]]></add>
</operation>
<operation>
<search><![CDATA[ <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="product_description[{{ language.language_id }}][meta_description]" rows="5" placeholder="{{ entry_meta_description }}" id="input-meta-description{{ language.language_id }}" class="form-control">{{ product_description[language.language_id] ? product_description[language.language_id].meta_description }}</textarea>
</div>
</div>]]></search>
<add><![CDATA[
<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="product_description[{{ language.language_id }}][meta_description]" rows="5" placeholder="{{ entry_meta_description }}" id="input-meta-description{{ language.language_id }}" class="form-control" oninput="updateProgressBar(this)">{{ product_description[language.language_id] ? product_description[language.language_id].meta_description }}</textarea>
</div>
</div>
<div id="char-count"></div>
<style>
#char-count {
display: flex;
justify-content: center;
}
</style>
<div id="progress-bar" style="width: 100%; height: 10px;"></div>
]]></add>
</operation>
</file>
<file path="admin/view/template/catalog/category_form.twig">
<operation>
<search><![CDATA[ <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="category_description[{{ language.language_id }}][meta_title]" value="{{ category_description[language.language_id] ? category_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>]]></search>
<add><![CDATA[
<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="category_description[{{ language.language_id }}][meta_title]" value="{{ category_description[language.language_id] ? category_description[language.language_id].meta_title }}" placeholder="{{ entry_meta_title }}" id="input-meta-title{{ language.language_id }}" class="form-control" oninput="updateProgressBarTitle(this)" />
{% if error_meta_title[language.language_id] %}
<div class="text-danger">{{ error_meta_title[language.language_id] }}</div>
{% endif %}
</div>
</div>
<div id="char-countTitle"></div>
<style>
#char-countTitle {
display: flex;
justify-content: center;
}
</style>
<div id="progress-barTitle" style="width: 100%; height: 10px;"></div>
]]></add>
</operation>
<operation>
<search><![CDATA[ <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="category_description[{{ language.language_id }}][meta_description]" rows="5" placeholder="{{ entry_meta_description }}" id="input-meta-description{{ language.language_id }}" class="form-control">{{ category_description[language.language_id] ? category_description[language.language_id].meta_description }}</textarea>
</div>
</div>]]></search>
<add><![CDATA[
<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="category_description[{{ language.language_id }}][meta_description]" rows="5" placeholder="{{ entry_meta_description }}" id="input-meta-description{{ language.language_id }}" class="form-control" oninput="updateProgressBar(this)">{{ category_description[language.language_id] ? category_description[language.language_id].meta_description }}</textarea>
</div>
</div>
<div id="char-count"></div>
<style>
#char-count {
display: flex;
justify-content: center;
}
</style>
<div id="progress-bar" style="width: 100%; height: 10px;"></div>
]]></add>
</operation>
</file>
<file path="admin/view/template/catalog/information_form.twig">
<operation>
<search><![CDATA[ <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>]]></search>
<add><![CDATA[
<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" oninput="updateProgressBarTitle(this)" />
{% if error_meta_title[language.language_id] %}
<div class="text-danger">{{ error_meta_title[language.language_id] }}</div>
{% endif %} </div>
</div>
<div id="char-countTitle"></div>
<style>
#char-countTitle {
display: flex;
justify-content: center;
}
</style>
<div id="progress-barTitle" style="width: 100%; height: 10px;"></div>
]]></add>
</operation>
<operation>
<search><![CDATA[ <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>
]]></search>
<add><![CDATA[
<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" oninput="updateProgressBar(this)">{{ information_description[language.language_id] ? information_description[language.language_id].meta_description }}</textarea>
</div>
</div>
<div id="char-count"></div>
<style>
#char-count {
display: flex;
justify-content: center;
}
</style>
<div id="progress-bar" style="width: 100%; height: 10px;"></div>
]]></add>
</operation>
</file>
</modification>
the filename is seocounter.ocmod.xml but then I try to upload it using extensions->installer I get an error incorrect file type. I tryed to copress it into zip archive it uploaded but I don't see it in a list of modificators and when i am refreshing or cliaring modification cache I get no effect files didn't change and no errors. What am I doing wrong? Or how do I debug the problem?