Листинг HTML

Фондовым биржам предоставили возможность разделения торгового дня на предсессионный и послесессионный. Это позволит разделить торговый день на соответствующие периоды и торговые сессии для представления соответствующих заявок на куплю-продажу ценных бумаг, других финансовых инструментов и заключения биржевых контрактов. Ожидается, что такое решение будет способствовать увеличению количества маркет-мейкеров и ликвидности рынка ценных бумаг.

Соответствующие изменения в Положение о функционировании фондовых бирж утверждены решением НКЦБФР от 3 августа 2018 года № 546 и вступили в силу 25 сентября. Фондовым биржам в течение трех месяцев нужно привести свою деятельность в соответствие новым требованиям.

Владельцы ценных бумаг крупных предприятий и публичных акционерных обществ получили право по собственной инициативе включить ценные бумаги в биржевой список путем предоставления соответствующего предложения, но при условии, что суммарная стоимость пакета ценных бумаг, который предложен к продаже, составляет не менее 5 млн грн.

В этом случае фондовая биржа письменно уведомляет эмитента о получении заявки и о внесении ценных бумаг в биржевой список (с указанием даты внесения).

При получении заявки на допуск к торговле других ценных бумаг или акций фондовая биржа направляет такому эмитенту информацию о:

— получении предложения о включении ценных бумаг эмитента в биржевой список;

— последствиях включения ценных бумаг в биржевой список, а именно отнесения эмитента ценных бумаг к категории предприятий, представляющих общественный интерес;

— необходимости получения от эмитента письменного согласия/несогласия на включение его ценных бумаг в биржевой список.

Только после получения письменного согласия эмитента фондовая биржа может включить ценные бумаги в биржевой список.

Допуск ценных бумаг иностранных эмитентов к торгам может осуществляться исключительно в случае допуска таких ценных бумаг к обращению на территории Украины. Порядок внесения таких ценных бумаг в биржевой список и биржевой реестр устанавливается правилами фондовой биржи.

Также установлено, что порядок организации и проведения биржевых торгов, в частности, должен содержать процедуры предотвращения манипулирования ценами во время осуществления операций с ценными бумагами и другими финансовыми инструментами в случае их введения в обращение на фондовой бирже.

Фондовая биржа ежегодно и ежеквартально (в случае раскрытия эмитентом промежуточной финансовой отчетности) будет проверять эмитента, ценные бумаги которого находятся в биржевом списке на соответствие признакам фиктивности.

НКЦБФР также упростила требования к листингу путем отмены нормы о разделе биржевого реестра на два уровня листинга и установления требований о внесении ценных бумаг в биржевой реестр. Требования по внесению и пребыванию ценных бумаг в листинге установлены на условиях второго уровня. В биржевой реестр заносятся ценные бумаги, прошедшие процедуру листинга. Заявка о допуске ценных бумаг к биржевым торгам в части включения в биржевой реестр может подаваться: эмитентом в процессе эмиссии; эмитентом относительно выкупленных ценных бумаг; оферентом относительно продажи принадлежащих ему ценных бумаг. Такая заявка подается при условии действительности проспекта ценных бумаг и его обнародования.

У фондовых бирж есть три месяца, что привести свою деятельность в соответствие с новыми правилами и осуществить следующие действия в отношении ценных бумаг, которые на дату вступления в силу этого решения находятся в биржевом списке, а именно:

— в срок не более одного месяца письменно уведомить эмитентов о необходимости до 1 января 2019 года привести свою деятельность в соответствие с изменениями об условиях пребывания ценных бумаг в биржевом реестре, в частности, оформление проспекта ценных бумаг в соответствии с требованиями действующего законодательства Украины; или в биржевом списке без внесения в биржевой реестр;

— в срок не более 15 дней письменно уведомить эмитентов, которые являются частными акционерными обществами, о необходимости предоставить фондовой бирже информацию о наличии (отсутствии) в уставе такого общества преимущественного права его акционеров на покупку акций, предлагаемых их владельцем к продаже третьему лицу.

Чтобы не пропустить самое важное — подпишитесь на наш канал в Телеграм @jurliga t.me/jurliga

Хотите быть в курсе важнейших событий? Подписывайтесь на ЮРЛІГУ в соцсетях. Выбирайте, что вам удобнее — Телеграм t.me/jurliga, Фейсбук https://www.facebook.com/jurliga/ или Твиттер https://twitter.com/jurligaua.

Два варианта пагинаторов для нашего шаблона сайта

Простой листинг

Организовать просмотр анонсов статей, товаров, услуг в режиме листинга, обычная практика на многих сайтах, но это очень часто приводит к появлению частичных дублей внутри сайта и нестабильной ссылочной структуре сайта. Попробуем решить эти проблемы средствами JS.

Пример можно посмотреть в нашем шаблоне на странице produkt.html

Мы будем реализовывать вариант для сайта без БД, переписать скрипт для работы с БД не составит труда.

В html коде страницы есть конструкция

<p id=»Pages»>Товары</p>

при наличии на странице элемента с ID равным Pages запускается наш JS

$(‘#Pages’).livequery(function(){

Первым делом нам необходимо понять, что именно скрипту необходимо отобразить на странице, это возможно получив данные из следующего элемента

<div id=»tov» class=»Listing»> </div>

А конкретно получив значение ID, запишем его в переменную

TypeNew=String(($(‘#Pages ~ div’).attr(‘id’)));

Сформируем имя куки для правильной работы с листингом (что бы правильно передвигаться по сайту и листингу)

cookieName=’coo’+TypeNew;

и попробуем получить в переменную значение этой куки, вдруг оно уже есть (например, мы уже были на этой странице), используем для работы плагин jquery.cookie

var icooc=$.cookie(cookieName);

Т.к. наш шаблон работает без БД, то нам необходимо где-то хранить адреса всех страниц сайта, для этого отлично подходит карта сайта sitemap.html к ней мы и будем обращаться за не обходимыми сведениями.

$.ajax({
type:’POST’,
dataType:’html’,
url:pathmap,
cache:false,
success:function(data){

в переменной pathmap находится адрес карты сайта, его мы установили в самом начале нашего JS. В случае успешного запроса в date будет находиться содержимое карты сайта, из него нам необходимо получить нужные фрагменты данных. Тут мы используем маленькую хитрость, в карте сайта нужные нам данные (URL страниц на которых находятся данные для листинга) находятся в блоке с ID равным ID указанным на странице где необходимо организовать листинг (мы сохранили его значение в переменную TypeNew) плюс map

<ul class=»mapprod» id=»tovmap»>
<a href=»http://www.site.ru/produkt.html»>товары</a>
<li><a href=»http://www.site.ru/tovar1.html»>товар 1</a></li>
<li><a href=»http://www.site.ru/tovar2.html»>товар 2</a></li>
<li><a href=»http://www.site.ru/tovar3.html»>товар 3</a></li>
<li><a href=»http://www.site.ru/tovar4.html»>товар 4</a></li>
<li><a href=»http://www.site.ru/tovar5.html»>товар 5</a></li>
<li><a href=»http://www.site.ru/tovar6.html»>товар 6</a></li>
<li><a href=»http://www.site.ru/tovar7.html»>товар 7</a></li>
<li><a href=»http://www.site.ru/tovar8.html»>товар 8</a></li>
<li><a href=»http://www.site.ru/tovar9.html»>товар 9</a></li>
<li><a href=»http://www.site.ru/tovar10.html»>товар 10</a></li>
</ul></li>

Сформируем три строковые переменные, idUL=’#’+TypeNew; для обращения к элементу на текущей странице для вставки данных, IdMapNew=idUL+’map’; для получения необходимых данных из карты сайта и DataNew=TypeNew+’data’; имя для хранения полученных данных. Сохраним полученный фрагмент данных на текущей странице в блоке idUL под именем DataNew

$(idUL).data(DataNew,$(IdMapNew,data));

Теперь нам необходимо посчитать сколько «страниц» будет в листинге, это зависит от количества данных и количества элементов, которые мы хотим выводить на одном экране (значение NewEventPage установлено в самом начале нашего скрипта), округлим значение до большего целого ds=Math.ceil(($(IdMapNew_Li,data).size())/NewEventPage);
Выводим навигацию пагинатора, она будет выводиться в блок с ID равным Pages.

for(ier=1;ier<ds+1;ier=ier+1){
if(ier!=icooc){ytr=’ <span> ‘+ier+’ </span>’;$(‘#Pages’).append(ytr)}
else{ytr='<span class=»aktiv»> ‘+ier+’ </span>’;$(‘#Pages’).append(ytr)};
};

Учтем, на какой странице пагинатора мы должны находиться и пометим её классом aktiv. Для этого проанализируем куку с именем cookieName (значение переменной icooc), если она null, установим её в значение 1 (первая «страница листинга») или получим её числовое значение

if(icooc==null){icooc=1;$.cookie(cookieName,icooc,cookieOptions);}
icooc=icooc*1;

Получение необходимых данных для конкретной страницы листинга, вынесено в отдельную функцию, т.е. нам необходимо её вызвать, в неё мы передаём номер «страницы листинга» NewIT(icooc);
Из-за того что данные будут получаться асинхронно и необходимости сохранить порядок вывода их на странице сформируем заранее необходимое число контейнеров с уникальными ID

var ht_sh=»;
for(ieri=0;ieri<NewEventPage;ieri=ieri+1){

ht_sh=ht_sh+'<div id=»nn’+ieri+'»></div>’;
};

И добавим их на текущую страницу, в элемент с ID значение, которого храниться в переменной idUL

$(idUL).append(ht_sh);

Рассчитаем порядковый номер элемента, с которого нам необходимо начинать вставку данных, зависит от «страницы листинга» переданного в функцию и количества элементов необходимых на странице

n_P=(n_P-1)*NewEventPage+1;

получим в переменную данные сохранённые нами под именем DataNew (весь список URL)

werty=$(idUL).data(DataNew);

в массив запишем только необходимые для данной «страницы листинга» URL

var arr1=;
for(iir=0;iir arr1=$(‘a’, werty).slice(iir+ n_P).attr(‘href’).replace(‘http://www.site.ru/’,»);
};

Обойдём все элементы массива и получим данные по каждому URL, полученные данные будем записывать под уникальным именем в блок data с ID равным Pages

$(arr1).each(function(i){
var nn=String(this);
$.ajax({
type:’POST’,
dataType:’html’,
url:nn,
cache:false,
success:function(data){
imya=’dop’+i;
$(‘#Pages’).data(imya,data);
rttt=$.inArray(nn,arr1);
Vst1(nn,rttt);
}
});
});

вычисляем текущий индекс элемента в массиве и вызываем функцию вставки Vst1(nn,rttt), которой передаём значение url и индекс текущего элемента
в переменную ht_cod получаем данные сохранённые под именем imya

function Vst1(nn,rttt) {
ht_cod=$(‘#Pages’).data(imya);

далее идёт проверка способа вставки данных (их может быть несколько для разных листингов через конструкцию else if)

if(TypeNew==’tov’){

формируется html кода для вставки и сохраняется в переменную qwe

NewH='<h3>’+$(‘h1′, ht_cod).html()+'</h3>’;
NewImg=($(‘img’, ht_cod).size() > 0) ? ‘<img src=»‘ + $(«img»,ht_cod).attr(‘src’).replace(‘.jpg’, »)+’-s.jpg»>’ : »;
Newprice=($(‘span’,ht_cod).size()>0) ? ‘<p>’+ $(‘span’,ht_cod).html() +’ руб <i class=»col»>смотреть товар</i></p>’ : »;

на блок вешается класс loc с URL страницы (без расширения) с которой получены данные, для возможности перейти на нужную страницу

qwe='<div class=»loc ‘ + nn.replace(‘.html’, ») + ‘»>’ + NewH + NewImg + Newprice + ‘</div>’;

и html вставляется в нужный блок на нашу страницу

var tex_id=’#nn’+rttt;
$(tex_id).prepend(qwe);

Осталось дело за малым, написать обработчики событий mouseover, mouseout и click для неактивных элементов навигации пагинатора

$(‘#Pages span’).livequery(‘mouseover’,function(){
$(this).css({‘color’:’red’});
});
$(‘#Pages span’).livequery(‘mouseout’,function(){
$(this).removeAttr(‘style’);
});

По событию click на неактивном элементе получается содержимое данного элемента, приводится к числовому значению. У всех элементов навигации удаляется форматирование, добавляется класс aktiv элементу, по которому произошёл клик, удаляются выведенные элементы, в куку записывается новое значение и вызывается функция обработки NewIT(nnum) с эти значением, которую мы рассмотрели выше

$(‘#Pages>span’).livequery(‘click’,function(){
nnum=Number($(this).text());
$(‘#Pages>span’).removeClass(‘aktiv’);
$(this).removeAttr(‘style’);
$(this).addClass(‘aktiv’);
$(‘#Pages ~ div’).html(‘ ‘);
$.cookie(cookieName, nnum, cookieOptions);

NewIT(nnum);
});

С индексируемыми ссылками

Очень часто необходимо иметь индексируемые ссылки с каталога, для этого случая есть немного другой вариант, пример на странице news.html нашего шаблона. Здесь сама страница выступает в роли «мини карты сайта/раздела», если посмотреть исходный код, то можно увидеть почти знакомую конструкцию

<p id=»Pages1″>Новости</p>
<div class=»Listing»>
<a href=»new10.html»>новость 10</a>
<a href=»new9.html»>новость 9</a>
<a href=»new8.html»>новость 8</a>
<a href=»new7.html»>новость 7</a>
<a href=»new6.html»>новость 6</a>
<a href=»new5.html»>новость 5</a>
<a href=»new4.html»>новость 4</a>
<a href=»new3.html»>новость 3</a>
<a href=»new2.html»>новость 2</a>