Здравствуйте, пытался ли кто-то реализовать статут пользователя на ajax?
Нажал на статус и пишешь (без всплывающего окна).
#1
18 марта 2013 в 00:41
#2
18 марта 2013 в 18:30
Сабиров Дамир,
лучше заменить на
чистый $_POST не безопасен…
$_POST[userstatus]
$inCore->request('userstatus', 'str', '')
#3
18 марта 2013 в 19:46
Сабиров Дамир, расскажи пожалуста по подробнее о "не все проверки делает". что то пропускает?
Сегодня в 13:16
#4
18 марта 2013 в 20:02
Код PHP:
<?php
$data = $_POST[userstatus]; //Получаем данные
здесь пишем mysql запрос, верифицируем переменные и т.д.
?>
$data = cmscore::request['userstatus']; if (!$data){echo "ответ в формате JSON если статуса нет, если нужно";} else { // ну а тут уже пишем запрос }
#5
18 марта 2013 в 20:22
Хм, прикол в том, что оно и сейчас работает на аяксе и обработчик есть, просто GiD хочет делать это без алерта "Введите ваше статусное сообщение..."
#6
18 марта 2013 в 20:39
Думаю, что после стольких советов GiD уже ничего не хочет…
#7
18 марта 2013 в 21:24
да, было бы хорошо просто нажав на статус, чтобы он становился строкой для вводапросто GiD хочет делать это без алерта "Введите ваше статусное сообщение..."
вообщем
изменил обработку статуса, наверное логично что там может быть всё что угодно даже: "<a> hello </a>"… разумеется экранировано ;)
вообщем кому интересно всё в архиве.
p.s файл profile.js может быть в кэше, поэтому если не будет работать очистите кэш😉или подключите его с параметрами :)
p.p.s в шаблон вынес 3 стиля для окна ввода статуса, кому надо перенесите их в общий файл стилей. ну и кто хочет стилизовать кнопку сохранения статуса, можете сделать из неё любой блок. главное id сохраните)
UPD: АРХИВ ОБНОВЛЕН — исправлены баги
изменил обработку статуса, наверное логично что там может быть всё что угодно даже: "<a> hello </a>"… разумеется экранировано ;)
вообщем кому интересно всё в архиве.
p.s файл profile.js может быть в кэше, поэтому если не будет работать очистите кэш😉или подключите его с параметрами :)
p.p.s в шаблон вынес 3 стиля для окна ввода статуса, кому надо перенесите их в общий файл стилей. ну и кто хочет стилизовать кнопку сохранения статуса, можете сделать из неё любой блок. главное id сохраните)
UPD: АРХИВ ОБНОВЛЕН — исправлены баги
Прикрепленный файл
1_cm9nv.rar
8 Кб
#9
19 марта 2013 в 09:31
а можете вынести именно строки которые надо изменить? а то не у всех дефолт, чтобы так взять и заменить файлы)
всё что в папке components копируйте с заменой.😊
а точнее:
в папке ajax — обработка изменения статуса, изменил чтобы в статус можно было писать что угодно.
в папке js — функция "userProfile" для работы с профилем( пока там только для работы со статусом)
в шаблоне:
ну и стили:
UPD: архив обновлен, нашел пару багов
а точнее:
в папке ajax — обработка изменения статуса, изменил чтобы в статус можно было писать что угодно.
в папке js — функция "userProfile" для работы с профилем( пока там только для работы со статусом)
в шаблоне:
{if !$is_auth}{add_js file='components/users/js/profile.js'}{/if} {literal} <style> {/literal}{if $myprofile || $is_admin}{literal} #usr_status_link:hover{ cursor: pointer; text-decoration: underline; } {/literal}{/if}{literal} </style> <script type="text/javascript"> $(document).ready(function(){ var userProf = new userProfile({/literal}{$usr.id} {if $myprofile || $is_admin}, true{/if}{literal}); $("#profiletabs > ul#tabs").tabs(); }); </script> {/literal} <div class="usr_status_bar"> <div class="usr_status_text"> <span id="usr_status_link" title="{$LANG.CHANGE_STATUS}" class="{if !$usr.status_text}no_status{/if}">{if $usr.status_text}{$usr.status_text}{elseif $myprofile || $is_admin}изменить статус{/if}</span> <span class="usr_status_date" >{if $usr.status_text}// {$usr.status_date} {$LANG.BACK}{/if}</span> <div id="status_editor" style="display: none;"> <div class="editor"> <input class="text" maxlength="140" id="set_text"> <button id="save_status">Сохранить</button> <div class="clear"></div> </div> </div> </div> </div>
#status_editor{ position: absolute; z-index: 10; margin: -27px -14px 0px; } #status_editor > div{ background: #F7F7F7; border: 1px solid #CCC; padding: 8px; width: 384px; } #status_editor #set_text{ margin: 0px 0px 8px; width: 376px; padding: 4px 3px; }
достаточно изменить лишь одну функцию setStatus в /components/users/js/profile.js
ниже код новой функции (заменить старый):
добавлена кнопка отмены и условие для “пустого” статуса…
ниже код новой функции (заменить старый):
function setStatus( user_id ){ var status = $( '.usr_status_text span:first' ); if ( $( '.usr_status_text' ).css( 'display') == 'none' ) { $( '.usr_status_text' ).show(); } var old_status = $( '.usr_status_text span:first' ).text() != '' ? $( '.usr_status_text span:first' ).text() : 'введите текст'; var info = $( '<p id="info">Введите ваше статусное сообщение (максимум 140 символов):</p>' ); var addst = $( '<input id="add_status" value="' + old_status + '" maxwidth="140" style="width: 500px;">' ); var btn = $( '<button id="update" type="submit">Изменить</button>' ); var btn_off = $( '<button id="cancel" type="reset">Отмена</button>' ); status.replaceWith( addst ); $( '.usr_status_date' ).hide(); $( '.usr_status_link' ).hide(); addst.before( info ); addst.after( btn ); btn.after( btn_off ); btn_off.click( function() { info.hide().remove(); btn.hide().remove(); addst.hide().remove(); $( '.usr_status_text' ).prepend( '<span>' + old_status + '</span>' ); $( '.usr_status_date' ).show(); $( '.usr_status_link' ).show(); btn_off.hide().remove(); }); btn.click( function() { var new_status = $( '#add_status' ).val(); if ( new_status.length > 140 ) { new_status = new_status.substr( 0, 140 ); } if ( user_id == undefined ) { user_id = 0; } $.post( '/components/users/ajax/status.php', { 'status' : new_status, 'id' : user_id }, function( data ){ info.hide().remove(); btn.hide().remove(); btn_off.hide().remove(); addst.hide().remove(); $( '.usr_status_text' ).prepend( '<span>' + new_status + '</span>' ); $( '.usr_status_date' ).html( '// Только что' ); $( '.usr_status_date' ).show(); $( '.usr_status_link' ).show(); }); }); }
#12
19 марта 2013 в 14:13
• Mike •, сходу уже 2 бага: а что если я передумаю менять статус? а что если статус был до этого пустой?
#13
19 марта 2013 в 14:17
• Mike •, при смене текущего статуса, всё ок, но, если статуса нет и добавить новый, то строка для ввода не появляется
#14
19 марта 2013 в 14:40
№15 — отредактировал…
#15
19 марта 2013 в 14:46
— Это не баги, а не предусмотренный функционал, баги это когда что-то не так работает… )• Mike •, сходу уже 2 бага: