stewie
Създадено на 25.07.2020, видяно: 1730 пъти. #693
Защо? Нали джсто трябва да прочете от базата дали първо юзъра е енейбълнал нотификациите, какво общо има wantedevents, евенти не се взимат ако тоя флаг е false за юзъра.
johnfound
Създадено на 25.07.2020, видяно: 2001 пъти. #699
JS-та ще знае дали потребителят е разрешил или забранил нотификациите според това дали чекбокса е чекнат или не. Той има достъп до него – няма никаква нужда да гледа в базата данни и да комуникира с бакенда.
А виж, какво ще е началното състояние на чекбокса и как точно ще се пази то е друг въпрос. Лично аз не съм много сигурен как трябва да се направи.
Единият вариант е да се направи на бакенда – в профила на потребителя и съответно като се рендира страницата да се сетва чекбокса в нужната стойност.
Другият вариант е да се използва сесионно куки на фронт-енда - което да се създава от JS-та при превключване на чекбокса. И съответно това куки да се гледа пак от бакенда при рендиране на страницата. Това ще направи тези сетинги валидни само за текущата сесия, което не е лошо само по себе си.
stewie
Създадено на 25.07.2020, видяно: 1730 пъти. #703
Ама аз през цялото време това имам впредвид - в таблицата с потребителите където пазиш език на интерфейса, тема, пароли и прочие да се сложи един бул филд notificationsEnabled или подобно. Реално точно JS-а трябва да достъпи таблицата за юзъра през съответният ти екшън на контролера (или както там се нарича при теб) за да провери в реално време дали този чекбокс е натиснат или не. Чисто дизайнерски не виждам проблем над Език на интерфейса да се сложи тоя чекбокс.
Реално точно JS-а трябва да достъпи таблицата за юзъра през съответният ти екшън на контролера (или както там се нарича при теб) за да провери в реално време дали този чекбокс е натиснат или не. Чисто дизайнерски не виждам проблем над Език на интерфейса да се сложи тоя чекбокс.
Нещо май говорим за различни неща. Аз говоря за чекбокс, който да се намира на всяка страница на сайта - в главният интерфейс (този със черните бутони) и откъдето по всяко време да можеш да си пуснеш и спреш нотификациите.
Настройките във профила на потребителя са ясни как ще се направят и там да – трябва да е през бакенда, но няма нищо трудно да се добави още една опция.
stewie
Създадено на 25.07.2020, видяно: 1730 пъти. #721
Реално точно JS-а трябва да достъпи таблицата за юзъра през съответният ти екшън на контролера (или както там се нарича при теб) за да провери в реално време дали този чекбокс е натиснат или не. Чисто дизайнерски не виждам проблем над Език на интерфейса да се сложи тоя чекбокс.
Нещо май говорим за различни неща. Аз говоря за чекбокс, който да се намира на всяка страница на сайта - в главният интерфейс (този със черните бутони) и откъдето по всяко време да можеш да си пуснеш и спреш нотификациите.
Настройките във профила на потребителя са ясни как ще се направят и там да – трябва да е през бакенда, но няма нищо трудно да се добави още една опция.
Мда определено различни визии имаме. Все пак тоя чекбокс трябва да пише някъде, иначе къде ще му запазиш стейта ? Апропо на мобилната тема анкора за unread въобще не е имплементиран. Хората се подлъгват от другите теми.
johnfound
Създадено на 25.07.2020, видяно: 1968 пъти. #725
Мда определено различни визии имаме. Все пак тоя чекбокс трябва да пише някъде, иначе къде ще му запазиш стейта ? Апропо на мобилната тема анкора за unread въобще не е имплементиран. Хората се подлъгват от другите теми.
За нотификациите започнах да пиша нещо във бакенда и става горе долу нормално. Дай утре по някое време да продължим темата - ще ми е по-ясно, а може да имам и нещо готово вече с което да се работи.
А това за мобилната тема не го разбрах. За връзката към първото непрочетено мнение ли говориш, или за нещо друго? И коя мобилна тема? "mobile"?
stewie
Създадено на 25.07.2020, видяно: 1730 пъти. #726
Мда определено различни визии имаме. Все пак тоя чекбокс трябва да пише някъде, иначе къде ще му запазиш стейта ? Апропо на мобилната тема анкора за unread въобще не е имплементиран. Хората се подлъгват от другите теми.
За нотификациите започнах да пиша нещо във бакенда и става горе долу нормално. Дай утре по някое време да продължим темата - ще ми е по-ясно, а може да имам и нещо готово вече с което да се работи.
А това за мобилната тема не го разбрах. За връзката към първото непрочетено мнение ли говориш, или за нещо друго? И коя мобилна тема? "mobile"?
Окей, свиркай ако искаш нещо за JS-a. Точно за непрочетените мнения в темата "mobile". Като я сравня с дефолтната в нея няма анкор към <име на тема>!markbyid или нещо таковa беше (нямам непрочетени в момента за да видя пътят). Всъщност в wwwroot къде е дефолтната тема ?
Точно за непрочетените мнения в темата "mobile". Като я сравня с дефолтната в нея няма анкор към <име на тема>!markbyid или нещо таковa беше (нямам непрочетени в момента за да видя пътят). Всъщност в wwwroot къде е дефолтната тема ?
Ето тука е: templates/mobile/thread_info.tpl : 58 - за тази връзка се използва иконката "съобщение", която, когато е сива, значи, че няма нови мнения, а когато е жълта, освен че показва, че има нови съобщения, е и връзка към първото непрочетено мнение. Има и закачен хинт, да изскача, но на мобилен телефон едва ли се вижда.
Но явно това е страшно не интуитивно – всички се оплакват, че нямало такава връзка... Но честно казано, тази тема е разработвана много, много отдавна и въобще не ми се връща към нея да я мисля как да се оправи...
stewie
Създадено на 26.07.2020, видяно: 1730 пъти. #736
Идея. Трябва да намеря в темплейтите секцията, която рендерва червените бутони. Слагам чекбокс. onClick съответно слагам/махам куки. connect() в events. js съответно проверява има ли го или не и тогава дърпа нотификациите. По този начин не се изгубвам в неразбираемият за мен асемблерски код. Какво ще кажеш? Реално докато юзъра не си изчисти кукитата няма проблем и ще се сторне до следващ логин. Пробвах и Sql конзолата със select from tablename limit 10,с имена на таблици, които виждам в asm-тата. Нищо не ми връща.
ДонРеба
Създадено на 26.07.2020, видяно: 1937 пъти. #737
най-нормалното което всеки ще търси първо е нотификациите да се изключват от профила
сега ясно че форума може да се чете и от нерегистрирани,ама какво ги мислите тях
Ок, мобилната тема се брои за отсвирена. Идея. Трябва да намеря в темплейтите секцията, която рендерва червените бутони. Слагам чекбокс. onClick съответно слагам/махам куки. connect() в events. js съответно проверява има ли го или не и тогава дърпа нотификациите. По този начин не се изгубвам в неразбираемият за мен асемблерски код. Какво ще кажеш? Реално докато юзъра не си изчисти кукитата няма проблем и ще се сторне до следващ логин. Пробвах и Sql конзолата със select * from tablename limit 10,с имена на таблици, които виждам в asm-тата. Нищо не ми връща.
Да, горе-долу и аз така го виждам... Допълнително има плюс, че на различните устройства и браузъри юзера ще може да има различни настройки.
Даже се чудя дали не е добра идея и изборът на скина да се направи така...
А за таблиците в базата данни - виж схемата на базата: source/create.sql
Има таблици, които може и да са празни още, а има и такива от които постоянно всичко се изтрива - например буфера на евентите.
ЕДИТ: А да, бутоните за черната навигация (глобална) са във файла main_html_start.tpl
johnfound
Създадено на 26.07.2020, видяно: 1927 пъти. #740
най-нормалното което всеки ще търси първо е нотификациите да се изключват от профила
сега ясно че форума може да се чете и от нерегистрирани,ама какво ги мислите тях
От една страна си прав, но от друга, хората се оплакваха от нотификациите главно на мобилни устройства. Тоест ако го напрвим със профила, юзера ще трябва да го включва и изключва всеки път като влиза от различно устройство. А по-вероятно когато влезе първият път от мобилно устройство ще го изключи и повече няма да го включи. Така накрая никой няма да я ползва тая функция. А тя е тип "социална" - увеличава ангажимента на участниците.
40oz
Създадено на 26.07.2020, видяно: 1911 пъти. #744
Откъм социални функции ще е готино да можеш да лайкваш мнения. Иначе нотификациите са доста дразнещи, по-добре да могат да се спират глобално за юзър, а не за устройство. Предполагам повече от потребителите са на мобилни така или и аче, но там основния проблем е писане на мнения където редактора е почти неизползваем.
johnfound
Създадено на 26.07.2020, видяно: 1905 пъти. #745
...но там основния проблем е писане на мнения където редактора е почти неизползваем.
Определено направих всичко възможно да направя редактора максимално компактен и поне отчасти удобен за мобилни потребители. Аз самият не ползвам интернет през телефона, така че може и да не съм се сетил за нещо. Но пък приемам предложения от недоволни. Обаче поне малко по-конструктивни от "редактора в почти неизползваем".
Евлампи
Създадено на 26.07.2020, видяно: 1895 пъти. #746
За нотификациите има и една друга възможна линия - да се шибнат в компонент-контейнер който вече с цсс и джс да се дресира и като размери и като поведение. Оттам параметрите на дресировката може да се шибат в локал сторидж или направо юзърските преференции на сървъра.
Впрочем как става разпознаването дали отсреща има десктоп или мобилна чекия? Мобайл сафари на айпадос се репортва като десктоп сафари на макос обаче и на айпад нотификациите ме настъпват леко по пръстите особено като е малко повече почитаемата аудитория
Евлампи
Създадено на 26.07.2020, видяно: 1900 пъти. #747
А, сега се сетих и за друго, какви са ограниченията на браузърския дев/рънтайм откъм дипендънсита? Цеесеса се компилира от лесс при билдването обаче джаваскрипта е ванила, до каква степен може да се добавят/променят дипендънсита (след надлежно обсъждане разбира се)?
Също какво е съпортваното дъно за браузър, само Зафода ли участва от ИЕ6 :)
stewie
Последно редактирано на 26.07.2020 от stewie, видяно: 1730 пъти. #748
Джон, прилагам ти два файла тук. В main_html_start.tpl съм сложил един анкор. Чекбокс не може да съществува до бутоните, понеже цялото разпъване/свиване на този див е направено с чекбокс и други не могат да се рендерират.
Вече там с локализацията ти ще си я бараш.
В realtime.js съм направил следните промени:
function getCookie(cname) {
var name = cname + "=";
var decodedCookie = decodeURIComponent(document.cookie);
var ca = decodedCookie.split(';');
for(var i = 0; i <ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') {
c = c.substring(1);
}
if (c.indexOf(name) == 0) {
return c.substring(name.length, c.length);
}
}
return "";
}
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function connect() {
if (source) disconnect();
if (getCookie("notificationsEnabled") != "true") return;
source = new EventSource("/!events?events=" + WantEvents);
StartTime = Date.now()/1000;
listSourceEvents.forEach( function(value) { source.addEventListener(value.event, value.handler) } );
}
stewie
Създадено на 26.07.2020, видяно: 1730 пъти. #767
Напротив - табовете са грешни, защото много тулове и ИДЕта могат да форматират сами кода, и имат опция за максимална дължина да реда. Като си сложиш на себе си таб с различна широчина от тази, която ползват другите от екипа и форматирането почва да се намазва.
Това беше преди. Сега има конфиг файлове, които идетата четат и прилагат като форматиране. Също и при чекин в репото има тулуве.
johnfound
Създадено на 27.07.2020, видяно: 1824 пъти. #792
Така, тествах го. По принцип работи. Но има няколко забележки:
Мястото на бутона трябва да е малко по-долу. Аз го преместих, така че няма проблеми. Но, има чисто дизайнерски проблеми:
Добре е бутона да е с икона, а не текст - твърде много място заема, а на другите езици още повече. Аз мога да я нарисувам, но изобщо не мога да се сетя как да изглежда. Ще мисля, но и предложения са добре дошли.
Добре е бутона да има индикация в какво състояние са нотификациите. Самият вид ще е в CSS-а, но от JS трябва да се превключат класовете при смяна на състоянието.
По кода - в switchNotificationCookie трябва да се вика connect() за да ъпдейтне връзката:
Следващото е козметика, но малко дразни: notificationsEnabled всъщност съществува само със стойност "true". Вместо "false" ти го изтриваш. Това е само по себе си OK и много даже елегантно. Но защо тогава кукито трябва да има някаква стойност и да се проверява за нея? По-добре да се гледа не стойността а самото му съществуване.
Струва ми се, че състоянието по подразбиране трябва да е "включено" иначе, потребителите ще го включват чак когато разберат че има такава функция.
Firefox-а ми дава някакво предупреждение в конзолата за това куки, но не знам какво значи:
Cookie “notificationsEnabled” will be soon rejected because it has the “sameSite” attribute set to “none” or an invalid value, without the “secure” attribute. To know more about the “sameSite“ attribute, read https://developer.mozilla.org/docs/Web/HTTP/Headers/Set-Cookie/SameSite 127.0.0.1:8090:431:2
Някаква идея какво значи това?
Elim Garak
Създадено на 27.07.2020, видяно: 1817 пъти. #798
хрома иска sameSite атрибут на кукита, иначе ги реже, явно и ФФ ще го вкарват