Нажал на статус и пишешь (без всплывающего окна).
$_POST[userstatus]
$inCore->request('userstatus', 'str', '')
Код PHP:
<?php
$data = $_POST[userstatus]; //Получаем данные
здесь пишем mysql запрос, верифицируем переменные и т.д.
?>
$data = cmscore::request['userstatus']; if (!$data){echo "ответ в формате JSON если статуса нет, если нужно";} else { // ну а тут уже пишем запрос }
да, было бы хорошо просто нажав на статус, чтобы он становился строкой для вводапросто GiD хочет делать это без алерта "Введите ваше статусное сообщение..."
изменил обработку статуса, наверное логично что там может быть всё что угодно даже: "<a> hello </a>"… разумеется экранировано ;)
вообщем кому интересно всё в архиве.
p.s файл profile.js может быть в кэше, поэтому если не будет работать очистите кэш😉или подключите его с параметрами :)
p.p.s в шаблон вынес 3 стиля для окна ввода статуса, кому надо перенесите их в общий файл стилей. ну и кто хочет стилизовать кнопку сохранения статуса, можете сделать из неё любой блок. главное id сохраните)
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; }
ниже код новой функции (заменить старый):
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(); }); }); }
— Это не баги, а не предусмотренный функционал, баги это когда что-то не так работает… )• Mike •, сходу уже 2 бага: