Статус пользователя на ajax

#1 18 марта 2013 в 00:41
Здравствуйте, пытался ли кто-то реализовать статут пользователя на ajax?

Нажал на статус и пишешь (без всплывающего окна).
#2 18 марта 2013 в 18:30
Сабиров Дамир,

  1. $_POST[userstatus]
лучше заменить на

  1. $inCore->request('userstatus', 'str', '')
чистый $_POST не безопасен…
#3 18 марта 2013 в 19:46
Сабиров Дамир, расскажи пожалуста по подробнее о "не все проверки делает". что то пропускает?
#4 18 марта 2013 в 20:02

Код PHP:
 <?php
$data = $_POST[userstatus]; //Получаем данные
здесь пишем mysql запрос, верифицируем переменные и т.д.
?>

Сабиров Дамир


  1.  
  2. $data = cmscore::request['userstatus'];
  3. if (!$data){echo "ответ в формате JSON если статуса нет, если нужно";}
  4. else {
  5. // ну а тут уже пишем запрос
  6. }
  7.  
наверное так будет правильнее?
#5 18 марта 2013 в 20:22
Хм, прикол в том, что оно и сейчас работает на аяксе и обработчик есть, просто GiD хочет делать это без алерта "Введите ваше статусное сообщение..." joke
#6 18 марта 2013 в 20:39
Думаю, что после стольких советов GiD уже ничего не хочет… smile
#7 18 марта 2013 в 21:24

просто GiD хочет делать это без алерта "Введите ваше статусное сообщение..."

lokanaft
да, было бы хорошо просто нажав на статус, чтобы он становился строкой для ввода
#8 19 марта 2013 в 06:59
вообщем


изменил обработку статуса, наверное логично что там может быть всё что угодно даже: "<a> hello </a>"… разумеется экранировано ;)

вообщем кому интересно всё в архиве.

p.s файл profile.js может быть в кэше, поэтому если не будет работать очистите кэш😉или подключите его с параметрами :)

p.p.s в шаблон вынес 3 стиля для окна ввода статуса, кому надо перенесите их в общий файл стилей. ну и кто хочет стилизовать кнопку сохранения статуса, можете сделать из неё любой блок. главное id сохраните)

UPD: АРХИВ ОБНОВЛЕН — исправлены баги
Прикрепленный файл
1_cm9nv.rar 8 Кб
#9 19 марта 2013 в 09:31
а можете вынести именно строки которые надо изменить? а то не у всех дефолт, чтобы так взять и заменить файлы)
#10 19 марта 2013 в 09:43
всё что в папке components копируйте с заменой.😊
а точнее:
в папке ajax — обработка изменения статуса, изменил чтобы в статус можно было писать что угодно.
в папке js — функция "userProfile" для работы с профилем( пока там только для работы со статусом)

в шаблоне:

  1.  
  2. {if !$is_auth}{add_js file='components/users/js/profile.js'}{/if}
  3.  
  4. {literal}
  5. <style>
  6. {/literal}{if $myprofile || $is_admin}{literal}
  7. #usr_status_link:hover{
  8. cursor: pointer;
  9. text-decoration: underline;
  10. }
  11. {/literal}{/if}{literal}
  12. </style>
  13. <script type="text/javascript">
  14. $(document).ready(function(){
  15. var userProf = new userProfile({/literal}{$usr.id} {if $myprofile || $is_admin}, true{/if}{literal});
  16. $("#profiletabs > ul#tabs").tabs();
  17. });
  18. </script>
  19. {/literal}
  20.  
  21. <div class="usr_status_bar">
  22. <div class="usr_status_text">
  23. <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>
  24. <span class="usr_status_date" >{if $usr.status_text}// {$usr.status_date} {$LANG.BACK}{/if}</span>
  25. <div id="status_editor" style="display: none;">
  26. <div class="editor">
  27. <input class="text" maxlength="140" id="set_text">
  28. <button id="save_status">Сохранить</button>
  29. <div class="clear"></div>
  30. </div>
  31. </div>
  32. </div>
  33. </div>
  34.  
  35.  
ну и стили:
  1.  
  2. #status_editor{
  3. position: absolute;
  4. z-index: 10;
  5. margin: -27px -14px 0px;
  6. }
  7. #status_editor > div{
  8. background: #F7F7F7;
  9. border: 1px solid #CCC;
  10. padding: 8px;
  11. width: 384px;
  12. }
  13. #status_editor #set_text{
  14. margin: 0px 0px 8px;
  15. width: 376px;
  16. padding: 4px 3px;
  17. }
  18.  
  19.  
UPD: архив обновлен, нашел пару багов
#11 19 марта 2013 в 12:47
достаточно изменить лишь одну функцию setStatus в /components/users/js/profile.js
ниже код новой функции (заменить старый):
  1.  
  2. function setStatus( user_id ){
  3. var status = $( '.usr_status_text span:first' );
  4. if ( $( '.usr_status_text' ).css( 'display') == 'none' ) { $( '.usr_status_text' ).show(); }
  5. var old_status = $( '.usr_status_text span:first' ).text() != '' ? $( '.usr_status_text span:first' ).text() : 'введите текст';
  6. var info = $( '<p id="info">Введите ваше статусное сообщение (максимум 140 символов):</p>' );
  7. var addst = $( '<input id="add_status" value="' + old_status + '" maxwidth="140" style="width: 500px;">' );
  8. var btn = $( '<button id="update" type="submit">Изменить</button>' );
  9. var btn_off = $( '<button id="cancel" type="reset">Отмена</button>' );
  10. status.replaceWith( addst );
  11. $( '.usr_status_date' ).hide();
  12. $( '.usr_status_link' ).hide();
  13. addst.before( info );
  14. addst.after( btn );
  15. btn.after( btn_off );
  16. btn_off.click( function() {
  17. info.hide().remove();
  18. btn.hide().remove();
  19. addst.hide().remove();
  20. $( '.usr_status_text' ).prepend( '<span>' + old_status + '</span>' );
  21. $( '.usr_status_date' ).show();
  22. $( '.usr_status_link' ).show();
  23. btn_off.hide().remove();
  24. });
  25. btn.click( function() {
  26. var new_status = $( '#add_status' ).val();
  27. if ( new_status.length > 140 ) {
  28. new_status = new_status.substr( 0, 140 );
  29. }
  30. if ( user_id == undefined ) { user_id = 0; }
  31. $.post( '/components/users/ajax/status.php', { 'status' : new_status, 'id' : user_id }, function( data ){
  32. info.hide().remove();
  33. btn.hide().remove();
  34. btn_off.hide().remove();
  35. addst.hide().remove();
  36. $( '.usr_status_text' ).prepend( '<span>' + new_status + '</span>' );
  37. $( '.usr_status_date' ).html( '// Только что' );
  38. $( '.usr_status_date' ).show();
  39. $( '.usr_status_link' ).show();
  40. });
  41. });
  42. }
  43.  
добавлена кнопка отмены и условие для “пустого” статуса…
#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 бага:

kir
— Это не баги, а не предусмотренный функционал, баги это когда что-то не так работает… )
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.