Как ограничить количество фотоальбомов юзера

ЕСТЬ РЕШЕНИЕ ЗАКРЫТО InstantCMS 1.X
#1 22 марта 2017 в 14:04
Привет, не могу найти на форуме, возможно темы не было. Как ограничить количетсво фотоальбомов у юзера, где править?
#2 23 марта 2017 в 09:16
Здравствуйте, вопрос все еще актуален.
#3 23 марта 2017 в 21:59
Заралик,
Ну, допустим посчитать количество альбомов созданных пользователем несложно
  1. $albums_count = $inDB->rows_count('cms_photo_albums', "user_id = {$inUser->id}");
Потом можно воткнуть условие перед созданием альбома и не дать его создать. Но! Куда пользователя посылать после неудавшегося создания? И в каком окне шаблона выводить сообщение, что количество превышено?
Там и компонент придется курочить и шаблон.
Не проще убрать из формы создание новых альбомов, а каждому юзеру выдать один альбом его имени?
#4 24 марта 2017 в 13:04

Ну, допустим

Ris
Здравствуйте, спасибо что откликнулись!

Тогда да лучше присвоить каждому юзеру по 1 альбому. Но, тогда в профиле юзера выглядит не красиво, 1 альбом на стене. У меня в данный момент в профиле альбомы выглядят (см фото),

хотел уменьшить их до 3, чтобы были в 1 строчке. А если будет 1 альбом то это не вписывается. Можно ли как то вывести 3 фотки (например из 1 альбома, который присвоен юзеру, на стену юзера вместо фотоальбомов?
#5 24 марта 2017 в 13:14
Заралик,
Вы уже нечто глобальное затеваете. Ограничение + вывод. А я с версткой не очень дружу.
Пишите тз и создавайте тему в разделе "ищу исполнителя". Может кто возьмется.
#6 24 марта 2017 в 13:16


Заралик,
Вы уже нечто глобальное затеваете. Ограничение + вывод. А я с версткой не очень дружу.
Пишите тз и создавайте тему в разделе "ищу исполнителя". Может кто возьмется.

Ris

Нет с начало сам попробую, есть 1 решение, если не выйдет то буду писать тз. Спасибо за помощь))
#7 24 марта 2017 в 14:05
Есть более простой способ, даже без лишнего запроса к базе. В шаблоне сделать проверку и не выводить форму для создания нового альбома если их уже больше нужного количества.

Файл \templates\_default_\components\com_users_photo_submit.tpl

Находим вывод формы и оборачиваем его в условие. Должно получится типо так
  1. {if $albums|@count<3}
  2. <tr>
  3. <td width="23" height="30"><input type="radio" name="new_album" id="new_album_1" value="1" {if !$albums}checked="checked"{/if} onclick="$('#description').show();" /></td>
  4. <td><label for="new_album_1">{$LANG.CREATE_NEW_ALBUM}:</label></td>
  5. <td style="padding:0px 10px">
  6. <input type="text" class="text-input" name="album_title" onclick="$('#description').show();$('#new_album_1').prop('checked', true);" />
  7. </td>
  8. <td width="80">{$LANG.SHOW}:</td>
  9. <td>
  10. <select name="album_allow_who" id="album_allow_who">
  11. <option value="all">{$LANG.TO_ALL}</option>
  12. <option value="registered">{$LANG.TO_REGISTERED}</option>
  13. <option value="friends">{$LANG.TO_MY_FRIEND}</option>
  14. </select>
  15. </td>
  16. </tr>
  17. <tr id="description" {if $albums}style="display:none;"{/if} >
  18. <td width="23" height="30"></td>
  19. <td><label for="description">{$LANG.ALBUM_DESCRIPTION}:</label></td>
  20. <td style="padding-left: 10px" colspan="3">
  21. <textarea name="description" class="text-input" style="width:488px; height:45px;"></textarea>
  22. </td>
  23. </tr>
  24. {/if}
#8 24 марта 2017 в 15:25

Есть более простой способ,

Заралик
Большое спасибо!!! Все работает. Выложу сюда готовый файл, может кому пригодится)
  1. <h1 class="con_heading">{$LANG.PHOTOS_CONFIG}</h1>
  2.  
  3. <script type="text/javascript">
  4. function togglePhoto(id){
  5. if ($('#delete'+id).prop('checked')){
  6. $('#photo'+id+' .text-input').prop('disabled', true);
  7. $('#photo'+id+' select').prop('disabled', true);
  8. } else {
  9. $('#photo'+id+' .text-input').prop('disabled', false);
  10. $('#photo'+id+' select').prop('disabled', false);
  11. }
  12. }
  13. </script>
  14.  
  15. <form action="" method="post">
  16.  
  17. <div id="usr_photos_upload_album" class="table-responsive">
  18. <table class="table table-striped">
  19. {if $albums}
  20. <tr>
  21. <td width="30%"><div class="checkbox"><label for="new_album_0"><input type="radio" name="new_album" id="new_album_0" value="0" checked="checked" onclick="$('#description').hide();" /> {$LANG.SAVE_TO_ALBUM}:</label></div></td>
  22. <td style="padding-left: 10px" colspan="3">
  23. <select name="album_id" class="select-input" style="width:100%;">
  24. {foreach key=ak item=album from=$albums}
  25. <option value="{$album.id}" {if $album_id == $album.id} selected="selected"{/if}>{$album.title}</option>
  26. {/foreach}
  27. </select>
  28. </td>
  29. </tr>
  30. {/if}
  31.  
  32.  
  33.  
  34. {if $albums|@count<3}
  35. <tr>
  36. <td width="23" height="30"><input type="radio" name="new_album" id="new_album_1" value="1" {if !$albums}checked="checked"{/if} onclick="$('#description').show();" /></td>
  37. <td><label for="new_album_1">{$LANG.CREATE_NEW_ALBUM}:</label></td>
  38. <td style="padding:0px 10px">
  39. <input type="text" class="text-input" name="album_title" onclick="$('#description').show();$('#new_album_1').prop('checked', true);" />
  40. </td>
  41. <td width="80">{$LANG.SHOW}:</td>
  42. <td>
  43. <select name="album_allow_who" id="album_allow_who">
  44. <option value="all">{$LANG.TO_ALL}</option>
  45. <option value="registered">{$LANG.TO_REGISTERED}</option>
  46. <option value="friends">{$LANG.TO_MY_FRIEND}</option>
  47. </select>
  48. </td>
  49. </tr>
  50. <tr id="description" {if $albums}style="display:none;"{/if} >
  51. <td width="23" height="30"></td>
  52. <td><label for="description">{$LANG.ALBUM_DESCRIPTION}:</label></td>
  53. <td style="padding-left: 10px" colspan="3">
  54. <textarea name="description" class="text-input" style="width:488px; height:45px;"></textarea>
  55. </td>
  56. </tr>
  57. {/if}
  58. </table>
  59. </div>
  60.  
  61. <div class="usr_photos_submit_list">
  62. {foreach key=pk item=photo from=$photos}
  63. <div class="row {cycle values="rowa2,rowa1"} usr_photos_submit_one" id="photo{$photo.id}">
  64. <div class="col-sm-2 col-xs-4 media-gird" align="center">
  65. <img src="/images/users/photos/small/{$photo.imageurl}" class="media-object" />
  66. <input type="checkbox" name="delete[]" value="{$photo.id}" id="delete{$photo.id}" onclick="togglePhoto({$photo.id})"/> <label for="delete{$photo.id}">{$LANG.DELETE}</label>
  67. </div>
  68. <div class="col-sm-10 col-xs-8">
  69. <input type="text" name="title[{$photo.id}]" value="{$photo.title|escape:'html'}" class="text-input" style="width:100%;" placeholder="{$LANG.TITLE}" /><br />
  70. <input style="width:100%;" type="text" name="desc[{$photo.id}]" value="{$photo.description|escape:'html'}" class="text-input" placeholder="{$LANG.DESCRIPTION}" /><br />
  71. <select style="width:100%;" name="allow[{$photo.id}]">
  72. <option value="all" {if $photo.allow_who=='all'}selected="selected"{/if}>{$LANG.SHOW} {$LANG.TO_ALL}</option>
  73. <option value="registered" {if $photo.allow_who=='registered'}selected="selected"{/if}>{$LANG.SHOW} {$LANG.TO_REGISTERED}</option>
  74. <option value="friends" {if $photo.allow_who=='friends'}selected="selected"{/if}>{$LANG.SHOW} {$LANG.TO_MY_FRIEND}</option>
  75. </select>
  76. </div>
  77. </div>
  78. {/foreach}
  79. </div>
  80. <div id="usr_photos_submit_btn" class="pull-right" style="margin-top:20px;">
  81. <input type="hidden" name="is_edit" value="{$is_edit}" />
  82. <input type="submit" name="submit" value="{$LANG.SAVE}" />&nbsp;&nbsp;&nbsp;{$LANG.AND_GO_TO_ALBUM}
  83. </div>
  84. </form>
  85. <div style="clear:both;"></div>
#9 24 марта 2017 в 15:26
Закрываю.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.