Назначить обложкой фото-альбома.

Назначить обложкой фото-альбома.

Работаю над компонентом "Фоторепортажи". Как и прежде, за основу взял уже написанный компонент, входящий в состав InstantCMS и дополняю его.

Решил поделится одним из этаких маленьких но на мой взгляд полезным удобством\дополнением.. 

Снимок. На странице фото-альбома. Чтобы назначить одну из картинок обложкой фото-альбома, кликаем по иконке слева.


Файл:
\system\controllers\photos\model.php

Добавим:

  1. public function updateCover($photo_id){
  2. $photo = $this->getPhoto($photo_id);
  3. $this->update('con_albums', $photo['album_id'], array(
  4. 'cover_image' => $photo['image']
  5. ));
  6. }


Создадим:
\system\controllers\photos\actions\cover.php

  1. class actionPhotosCover extends cmsAction{
  2. public function run($photo_id = null){
  3. if (!$photo_id) { cmsCore::error404(); }
  4. $success = true;
  5. // проверяем наличие доступа
  6. $user = cmsUser::getInstance();
  7. if (!cmsUser::isAllowed('photos', 'edit')) { $success = false; }
  8. if (!cmsUser::isAllowed('photos', 'edit', 'all') && $photo['user_id'] != $user->id) { $success = false; }
  9. if (!$success){
  10. cmsTemplate::getInstance()->renderJSON(array(
  11. 'success' => false
  12. ));
  13. }
  14. $this->model->updateCover($photo_id);
  15. cmsTemplate::getInstance()->renderJSON(array(
  16. 'success' => true
  17. ));
  18. }
  19. }

Файл:
templates\default\controllers\photos\album.tpl

Рядом с:

  1. data-delete-url="<?php echo $this->href_to('delete'); ?>"

Добавим:

  1. data-cover-url="<?php echo $this->href_to('cover'); ?>"

После:

  1. <divfont-weight: bold;"><?php echo $photo['id']; ?>">

Добавим:

  1. <?php if ($is_owner) { ?>
  2. <div>
  3. <a href="#" title="<?php echo LANG_PHOTOS_AS_COVER; ?>" <?php if ($photo['as_cover']){ ?>class="cover_this" <?php } ?>data-id="<?php echo $photo['id']; ?>"></a>
  4. </div>
  5. <?php } ?>

Файл:
templates\default\js\photos.js

После:

  1. $('#album-photos-list .delete a').click(function(){
  2. icms.photos.deletePhoto( $(this).data('id') );
  3. })

Добавим:

  1. $('#album-photos-list .as_cover a').click(function(){
  2. icms.photos.updateCover( $(this).data('id') );
  3. })

До:

  1. return this;

Добавим:

  1. this.updateCover = function(id){
  2. $('div.as_cover a').removeClass('cover_this');
  3. $('#album-photos-list .photo-'+id+' div.as_cover a').addClass('cover_this');
  4. var url = $('#album-photos-list').data('cover-url') + '/' + id;
  5. $.post(url, {}, function(result){
  6. }, 'json');
  7. }


Файл:
\templates\default\controllers\photos\styles.css

Добавим:

  1. #album-photos-list .as_cover {
  2. position:absolute;
  3. top:1px;left:1px;
  4. background-color:#fff;
  5. }
  6. #album-photos-list .as_cover a{
  7. display: inline-block;
  8. width:36px;
  9. height:35px;
  10. background: url("../../images/icons/noimages.png") no-repeat center center;
  11. }
  12. #album-photos-list .as_cover a.cover_this{
  13. background: url("../../images/icons/images.png") no-repeat center center;
  14. }

Теперь, лишь остается добавить недостающею картинку и переменную в файл языка.

Всё! ;)

Спасибо!

WebMoney
Z726044030935
R305108631505

Яндекс.Деньги.
41001201736620

Qiwi
+7 9371288269

12:27
Нет комментариев. Ваш будет первым!

НазадПоделиться на сайт

Код для вставки на сайт:
Пример отображения:

X