decidim-core 0.12.0.pre → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -390,7 +390,7 @@ fr:
390
390
  debates_explanation: Débattez et discutez, partagez vos points de vue et enrichissez les sujets pertinents.
391
391
  how_to_participate: Comment participer ?
392
392
  meetings: Rencontres
393
- meetings_explanation: Découvrez où et quand vous pouvez participer à des rencontres publiques.
393
+ meetings_explanation: Découvrez où et quand vous pouvez participer à des réunions publiques.
394
394
  more_info: En savoir plus
395
395
  proposals: Propositions
396
396
  proposals_explanation: Faites des propositions, soutenez les projets existants et favorisez les changements que vous souhaitez voir.
@@ -425,21 +425,21 @@ fr:
425
425
  title: Plus d'informations
426
426
  terms_and_conditions:
427
427
  accept:
428
- error: Une erreur s'est produite lors de l'acceptation des termes et conditions.
429
- success: Génial! Vous avez accepté les termes et conditions.
428
+ error: Une erreur s'est produite lorsque vous avez accepté les conditions d'utilisation.
429
+ success: Génial ! Vous avez accepté les conditions d'utilisations.
430
430
  form:
431
- agreement: Je suis d'accord avec les termes
432
- legend: Accepter les termes et conditions d'utilisation
431
+ agreement: Je suis d'accord avec les conditions
432
+ legend: Accepter les conditions d'utilisation
433
433
  refuse:
434
- modal_body: Si vous refusez, vous ne pourrez pas utiliser la plateforme, vous pouvez <a href="%{data_portability_path}">télécharger vos données</a> et / ou <a href="%{delete_path}">supprimer votre compte</a>.
435
- modal_btn_continue: Accepter les termes et continuer
436
- modal_btn_exit: Je l'examinerai plus tard
437
- modal_button: Refuser les termes
438
- modal_title: Refusez-vous vraiment les termes et conditions mis à jour?
434
+ modal_body: Si vous refusez, vous ne pourrez pas utiliser la plateforme. Vous pouvez <a href="%{data_portability_path}">télécharger vos données</a> et / ou <a href="%{delete_path}">supprimer votre compte</a>.
435
+ modal_btn_continue: Accepter les conditions et continuer
436
+ modal_btn_exit: Je le ferai plus tard
437
+ modal_button: Refuser les conditions
438
+ modal_title: Refusez-vous vraiment les conditions d'utilisation mises à jour ?
439
439
  required_review:
440
440
  alert: Nous avons mis à jour nos conditions d'utilisation, veuillez les consulter.
441
- body: Veuillez prendre un moment pour examiner les mises à jour de nos conditions d'utilisation. Sinon, vous ne pourrez pas utiliser la plate-forme.
442
- title: 'Obligatoire: consultez les mises à jour de nos conditions d''utilisation'
441
+ body: Veuillez prendre un moment pour examiner nos conditions d'utilisation mises à jour. Sinon, vous ne pourrez pas utiliser la plate-forme.
442
+ title: 'Obligatoire : consultez les conditions d''utilisation mises à jour'
443
443
  participatory_space_private_users:
444
444
  not_allowed: Vous n'êtes pas autorisé à voir ce contenu
445
445
  profile:
@@ -479,17 +479,17 @@ fr:
479
479
  search:
480
480
  filter:
481
481
  all: Tout
482
- component: Composant
483
- results_found_for_term: '%{count} Résultats pour la recherche: "%{term}"'
484
- term_input_placeholder: Chercher
482
+ component: Fonctionnalité
483
+ results_found_for_term: '%{count} résultats pour la recherche : "%{term}"'
484
+ term_input_placeholder: Rechercher
485
485
  searches:
486
486
  filters:
487
- search: Chercher
487
+ search: Rechercher
488
488
  filters_small_view:
489
- close_modal: Fermer modal
490
- filter: Filtre
489
+ close_modal: Fermer la fenêtre de dialogue
490
+ filter: Filtrer
491
491
  filter_by: Filtrer par
492
- unfold: Se dérouler
492
+ unfold: Dérouler
493
493
  shared:
494
494
  action_authorization_modal:
495
495
  expired:
@@ -523,10 +523,10 @@ fr:
523
523
  already_reported: Ce contenu a déjà été signalé et il sera examiné par un administrateur.
524
524
  close: Fermer
525
525
  description: Ce contenu est-il inapproprié ?
526
- does_not_belong: Contient des activités illégales, des menaces suicidaires, des informations personnelles, ou autre chose que vous pensez ne pas être approprié à %{organization_name}.
527
- offensive: Contient des propos racistes, sexistes, des insultes, des attaques personnelles, des menaces de mort, des incitations au suicide ou toute forme de discours de haine.
526
+ does_not_belong: Contient d’autres types de contenus qui vous semblent inappropriés à %{organization_name} (activités illégales, menaces suicidaires, informations personnelles,...).
527
+ offensive: Contient des propos contraires à la loi (propos racistes, sexistes, insultes, attaques personnelles, menaces de mort, incitations au suicide ou toute forme de discours de haine,...).
528
528
  report: Signaler
529
- spam: Contient des piège-à-clic (clickbait), des publicités, des escroqueries ou des robots fonctionnant au script (script bots).
529
+ spam: Contient des publicités, des escroqueries, des pièges à clic (clickbait) ou des robots fonctionnant au script (script bots).
530
530
  title: Signaler un problème
531
531
  follow_button:
532
532
  sign_in_before_follow: Veuillez vous connecter avant d'effectuer cette action
@@ -557,7 +557,7 @@ fr:
557
557
  hello: Bonjour %{email},
558
558
  ignore: |-
559
559
  Si vous ne souhaitez pas accepter l'invitation, veuillez ignorer cet e-mail.<br />
560
- Votre compte ne sera pas créé avant d'avoir accédé au lien ci-dessus et d'avoir défini votre pseudo et votre mot de passe.
560
+ Votre compte ne sera pas créé avant d'avoir cliqué sur le lien ci-dessus et défini votre pseudo et votre mot de passe.
561
561
  invited_you_as_admin: "%{invited_by} vous a invité en tant qu'administrateur de %{application}. Vous pouvez accepter cette invitation grâce au lien ci-dessous."
562
562
  invited_you_as_private_user: "%{invited_by} vous a invité en tant que utilisateur privé de %{application}. Vous pouvez l'accepter via le lien ci-dessous."
563
563
  someone_invited_you: Quelqu'un vous a invité à %{application}. Vous pouvez accepter cette invitation grâce au lien ci-dessous.
@@ -586,8 +586,8 @@ fr:
586
586
  long_words: contient des mots qui sont trop longs
587
587
  must_start_with_caps: doit commencer avec des majuscules
588
588
  nesting_too_deep: ne peut pas être à l'intérieur d'une sous-catégorie
589
- too_many_marks: utilise trop de marques
590
- too_much_caps: utilise trop de bouchons
589
+ too_many_marks: utilise trop de signes
590
+ too_much_caps: utilise trop de majuscules
591
591
  too_short: est trop court
592
592
  forms:
593
593
  required: Champs obligatoires
@@ -65,13 +65,13 @@ ru:
65
65
  title: Удалить мою учетную запись
66
66
  explanation: Укажите, пожалуйста, причину, по которой вы хотите удалить свою учетную запись (необязательно).
67
67
  destroy:
68
- error: При удалении вашей учетной записи произошла ошибка.
68
+ error: При попытке удалить вашу учетную запись произошла ошибка.
69
69
  success: Ваша учетная запись была успешно удалена.
70
70
  show:
71
71
  change_password: Поменять пароль
72
72
  update_account: Обновить учетную запись
73
73
  update:
74
- error: При обновлении вашей учетной записи произошла ошибка.
74
+ error: При попытке обновить вашу учетную запись произошла ошибка.
75
75
  success: Ваша учетная запись была успешно обновлена.
76
76
  success_with_email_confirmation: Ваша учетная запись была успешно обновлена. Вы получите электронное письмо, чтобы подтвердить свой новый адрес электронной почты.
77
77
  admin_log:
@@ -180,7 +180,7 @@ ru:
180
180
  dummy_global_attribute_1: Пример свойства 1
181
181
  dummy_global_attribute_2: Пример свойства 2
182
182
  step:
183
- comments_blocked: Комментарии выключены
183
+ comments_blocked: Комментарии отключены
184
184
  dummy_step_attribute_1: Пример 1 свойства шага
185
185
  dummy_step_attribute_2: Пример 2 свойства шага
186
186
  contact: Связаться
@@ -216,14 +216,14 @@ ru:
216
216
  username_help: Общедоступное имя, которое отображается в ваших сообщениях. В целях обеспечения анонимности оно может быть любым.
217
217
  sessions:
218
218
  new:
219
- are_you_new?: Вы в первый раз на этой платформе?
219
+ are_you_new?: Вы впервые на этой площадке?
220
220
  register: Создать учетную запись
221
221
  shared:
222
222
  newsletter_modal:
223
223
  buttons:
224
224
  check: Поставить галочку и продолжить
225
225
  uncheck: Не ставить галочку
226
- notice: Привет, вы уверены, что не хотите получать рассылку новостей? Пожалуйста, еще раз подумайте насчет того, чтобы поставить галочку ниже. Для нас очень важно, чтобы вы могли иногда получать сообщения с важными объявлениями. Вы всегда сможете изменить это на странице настроек уведомлений. Если вы не отметите это поле, вы можете упустить свежие возможности участия в платформе. Если вы все же не хотите получать рассылку, мы прекрасно понимаем такое ваше решение. Спасибо, что прочитали это!
226
+ notice: Привет, вы уверены, что не хотите получать рассылку новостей? Пожалуйста, еще раз подумайте насчет того, чтобы поставить галочку ниже. Для нас очень важно, чтобы вы могли иногда получать сообщения с важными объявлениями. Вы всегда сможете изменить это на странице настроек уведомлений. Если вы не отметите это поле, вы можете упустить свежие возможности участия в работе площадки. Если вы все же не хотите получать рассылку, мы прекрасно понимаем такое ваше решение. Спасибо, что прочитали это!
227
227
  title: Уведомления о новостях
228
228
  omniauth_buttons:
229
229
  or: Или
@@ -337,7 +337,7 @@ ru:
337
337
  expired_session: Текущий сеанс выступления в роли участника истек.
338
338
  menu:
339
339
  home: Главная
340
- more_information: Узнать больше
340
+ more_information: Дополнительные сведения
341
341
  messaging:
342
342
  conversation_mailer:
343
343
  new_conversation:
@@ -386,7 +386,7 @@ ru:
386
386
  newsletter_notifications: Я хочу получать рассылку новостей
387
387
  update_notifications_settings: Сохранить изменения
388
388
  update:
389
- error: При обновлении настроек уведомлений произошла ошибка.
389
+ error: При попытке обновить настройки уведомлений произошла ошибка.
390
390
  success: Ваши настройки уведомлений были успешно обновлены.
391
391
  own_user_groups:
392
392
  index:
@@ -401,37 +401,38 @@ ru:
401
401
  how_to_participate: Как принять участие в движении?
402
402
  meetings: Встречи
403
403
  meetings_explanation: Узнайте, где и когда вы можете принять участие в открытых встречах.
404
- more_info: Узнать больше
404
+ more_info: Дополнительные сведения
405
405
  proposals: Предложения
406
406
  proposals_explanation: Вносите новые предложения, поддерживайте уже внесенные и способствуйте изменениям, которые вы хотите видеть.
407
407
  footer_sub_hero:
408
408
  footer_sub_hero_body: Давайте построим более открытое, прозрачное и сотрудничающее общество.<br /> Присоединяйтесь, участвуйте и принимайте решения.
409
- footer_sub_hero_headline: Добро пожаловать на платформу соучастия %{organization}!
409
+ footer_sub_hero_headline: Добро пожаловать на площадку соучастия %{organization}!
410
410
  register: Зарегистрироваться
411
411
  hero:
412
412
  participate: Принять участие
413
413
  welcome: Добро пожаловать в %{organization}!
414
414
  statistics:
415
- answers_count: Завершенные опросы
416
- assemblies_count: Собрания
417
- comments_count: Комментарии
415
+ answers_count: Пройденных опросов
416
+ assemblies_count: Собраний
417
+ comments_count: Комментариев
418
418
  debates_count: Обсуждения
419
+ endorsements_count: Выражений поддержки
419
420
  headline: Текущее состояние %{organization}
420
- meetings_count: Встречи
421
- orders_count: Голоса
422
- pages_count: Страницы
423
- processes_count: Движения
424
- projects_count: Проекты
421
+ meetings_count: Встреч
422
+ orders_count: Голосов
423
+ pages_count: Страниц
424
+ processes_count: Движений
425
+ projects_count: Проектов
425
426
  proposals_accepted: Принятые предложения
426
- proposals_count: Предложения
427
- results_count: Итоги
428
- surveys_count: Опросы
429
- users_count: Участники
430
- votes_count: Голоса
427
+ proposals_count: Предложений
428
+ results_count: Итогов
429
+ surveys_count: Опросов
430
+ users_count: Участников
431
+ votes_count: Голосов
431
432
  sub_hero:
432
433
  register: Зарегистрироваться
433
434
  index:
434
- title: Узнать больше
435
+ title: Дополнительные сведения
435
436
  terms_and_conditions:
436
437
  accept:
437
438
  error: При принятии условий участия произошла ошибка.
@@ -440,14 +441,14 @@ ru:
440
441
  agreement: Я согласен с этими условиями
441
442
  legend: Согласиться с условиями участия
442
443
  refuse:
443
- modal_body: Если вы откажетесь, вы не сможете использовать платформу, вы можете <a href="%{data_portability_path}">загрузить свои данные</a> и / или <a href="%{delete_path}">удалить свою учетную запись</a>.
444
+ modal_body: Если вы откажетесь, вы не сможете использовать площадку, вы можете <a href="%{data_portability_path}">загрузить свои данные</a> и / или <a href="%{delete_path}">удалить свою учетную запись</a>.
444
445
  modal_btn_continue: Принять условия и продолжить
445
446
  modal_btn_exit: Я просмотрю это позже
446
447
  modal_button: Отказаться от условий участия
447
448
  modal_title: Вы действительно отказываетесь от обновленных "Условий участия"?
448
449
  required_review:
449
450
  alert: Мы обновили наши "Условия участия", пожалуйста, просмотрите их.
450
- body: Пожалуйста, найдите минутку, чтобы ознакомиться с обновлениями наших "Условий участия". В противном случае вы не сможете использовать платформу.
451
+ body: Пожалуйста, найдите минутку, чтобы ознакомиться с обновлениями наших "Условий участия". В противном случае вы не сможете использовать площадку.
451
452
  title: 'Обязательно: просмотрите обновления наших условий участия'
452
453
  participatory_space_private_users:
453
454
  not_allowed: У вас нет прав на просмотр этого содержимого
@@ -475,7 +476,7 @@ ru:
475
476
  subject: О ресурсе была передана жалоба администраторам
476
477
  reports:
477
478
  create:
478
- error: При создании жалобы произошла ошибка. Повторите, пожалуйста, попытку.
479
+ error: При попытке создать жалобу произошла ошибка. Повторите, пожалуйста, попытку.
479
480
  success: Жалоба была успешно создана, и она будет рассмотрена администратором.
480
481
  scopes:
481
482
  global: Всеобщий охват
@@ -636,7 +637,7 @@ ru:
636
637
  title: Настройки участника
637
638
  user_groups: Организации
638
639
  widget:
639
- see_more: Узнать больше
640
+ see_more: Читать подробнее
640
641
  locale:
641
642
  name: Русский
642
643
  social_share_button:
@@ -65,13 +65,13 @@ uk:
65
65
  title: Видалити мій обліковий запис
66
66
  explanation: Будь ласка, введіть причину, з якої ви хочете видалити свій обліковий запис (необов'язково).
67
67
  destroy:
68
- error: При видаленні вашого облікового запису сталася помилка.
68
+ error: При спробі видалити ваш обліковий запис сталася помилка.
69
69
  success: Ваш обліковий запис успішно видалено.
70
70
  show:
71
71
  change_password: Змінити пароль
72
72
  update_account: Оновити обліковий запис
73
73
  update:
74
- error: При оновленні вашого облікового запису сталася помилка.
74
+ error: При спробі оновити ваш обліковий запис сталася помилка.
75
75
  success: Вашу обліковку успішно оновлено.
76
76
  success_with_email_confirmation: Ваш обліковий запис успішно оновлено. Ви отримаєте електронний лист для підтвердження адреси електронної пошти.
77
77
  admin_log:
@@ -216,14 +216,14 @@ uk:
216
216
  username_help: Загальнодоступне ім'я, яке відображається у ваших дописах. З метою гарантування анонімності, може бути будь-яким.
217
217
  sessions:
218
218
  new:
219
- are_you_new?: Вперше на цій платформі?
219
+ are_you_new?: Ви вперше на цьому майданчику?
220
220
  register: Створити обліковий запис
221
221
  shared:
222
222
  newsletter_modal:
223
223
  buttons:
224
224
  check: Поставити галочку та продовжити
225
225
  uncheck: Не ставити галочку
226
- notice: Привіт, ви впевнені, що не хочете отримувати розсилання новин? Будь ласка, ще раз розгляньте можливість поставити нижче галочку щодо розсилання. Для нас дуже важливо, щоб ви могли іноді отримувати електронні листи з важливими оголошеннями. Ви завжди можете змінити це на сторінці налаштувань сповіщень. Якщо ви не поставите цю галочку, ви можете прогледіти свіжі можливості участі в платформі. Якщо ви все ж бажаєте уникнути розсилань, ми прекрасно розуміємо таке ваше рішення. Дякуємо, що прочитали це!
226
+ notice: Привіт, ви впевнені, що не хочете отримувати розсилання новин? Будь ласка, ще раз розгляньте можливість поставити нижче галочку щодо розсилання. Для нас дуже важливо, щоб ви могли іноді отримувати електронні листи з важливими оголошеннями. Ви завжди можете змінити це на сторінці налаштувань сповіщень. Якщо ви не поставите цю галочку, ви можете прогледіти свіжі можливості участі в роботі майданчика. Якщо ви все ж бажаєте уникнути розсилань, ми прекрасно розуміємо таке ваше рішення. Дякуємо, що прочитали це!
227
227
  title: Сповіщення про новини
228
228
  omniauth_buttons:
229
229
  or: Або
@@ -386,7 +386,7 @@ uk:
386
386
  newsletter_notifications: Я хочу отримувати розсилання
387
387
  update_notifications_settings: Зберегти зміни
388
388
  update:
389
- error: При оновленні налаштувань сповіщень сталася помилка.
389
+ error: При спробі оновити налаштування сповіщень сталася помилка.
390
390
  success: Ваші налаштування сповіщень успішно оновлено.
391
391
  own_user_groups:
392
392
  index:
@@ -406,29 +406,29 @@ uk:
406
406
  proposals_explanation: Вносьте нові пропозиції, підтримуйте існуючі та сприяйте змінам, які ви хочете бачити.
407
407
  footer_sub_hero:
408
408
  footer_sub_hero_body: Створімо більш відкрите, прозоре та співпрацююче суспільство.<br /> Долучайтесь, беріть участь та приймайте рішення.
409
- footer_sub_hero_headline: Ласкаво просимо до платформи співучасті %{organization}.
409
+ footer_sub_hero_headline: Ласкаво просимо до майданчику співучасті %{organization}!
410
410
  register: Зареєструватися
411
411
  hero:
412
412
  participate: Взяти участь
413
413
  welcome: Ласкаво просимо до %{organization}!
414
414
  statistics:
415
- answers_count: Пройдено опитувань
416
- assemblies_count: Збори
417
- comments_count: Коментарі
415
+ answers_count: Пройдених опитувань
416
+ assemblies_count: Зборів
417
+ comments_count: Коментарів
418
418
  debates_count: Обговорення
419
- endorsements_count: Підтримали
419
+ endorsements_count: Проявів підтримки
420
420
  headline: Поточний стан %{organization}
421
- meetings_count: Зустрічі
422
- orders_count: Голоси
423
- pages_count: Сторінки
424
- processes_count: Рухи
425
- projects_count: Задуми
421
+ meetings_count: Зустрічей
422
+ orders_count: Голосів
423
+ pages_count: Сторінок
424
+ processes_count: Рухів
425
+ projects_count: Задумів
426
426
  proposals_accepted: Прийняті пропозиції
427
- proposals_count: Пропозиції
427
+ proposals_count: Пропозицій
428
428
  results_count: Підсумків
429
- surveys_count: Опитування
430
- users_count: Учасники
431
- votes_count: Голоси
429
+ surveys_count: Опитувань
430
+ users_count: Учасників
431
+ votes_count: Голосів
432
432
  sub_hero:
433
433
  register: Зареєструватися
434
434
  index:
@@ -441,14 +441,14 @@ uk:
441
441
  agreement: Я погоджуюсь з цими умовами
442
442
  legend: Погодитися з умовами участі
443
443
  refuse:
444
- modal_body: Якщо ви відмовитеся, ви не зможете використовувати платформу, ви можете <a href="%{data_portability_path}">завантажити свої дані</a> і / або <a href="%{delete_path}">видалити свій обліковий запис</a>.
444
+ modal_body: Якщо ви відмовитеся, ви не зможете використовувати майданчик, ви можете <a href="%{data_portability_path}">завантажити свої дані</a> і / або <a href="%{delete_path}">видалити свій обліковий запис</a>.
445
445
  modal_btn_continue: Прийняти умови та продовжити
446
446
  modal_btn_exit: Я перегляну це пізніше
447
447
  modal_button: Відмовитися від умов участі
448
448
  modal_title: Ви дійсно відмовляєтеся від оновлених "Умов участі"?
449
449
  required_review:
450
450
  alert: Ми оновили наші "Умови участі", будь ласка, перегляньте їх.
451
- body: Будь ласка, знайдіть хвилинку, щоб переглянути оновлення до наших "Умов участі". В іншому випадку ви не зможете використовувати нашу платформу.
451
+ body: Будь ласка, знайдіть хвилинку, щоб переглянути оновлення до наших "Умов участі". В іншому випадку ви не зможете використовувати наш майданчик.
452
452
  title: 'Обов''язково: перегляньте оновлення до наших "Умов участі"'
453
453
  participatory_space_private_users:
454
454
  not_allowed: У вас нема прав на перегляд цього вмісту
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+
3
+ class RenameMissingFeaturesToComponents < ActiveRecord::Migration[5.1]
4
+ class Notification < ApplicationRecord
5
+ self.table_name = :decidim_notifications
6
+ end
7
+
8
+ def up
9
+ # rubocop:disable Rails/SkipsModelValidations
10
+ Notification.where(decidim_resource_type: "Decidim::Feature").update_all(decidim_resource_type: "Decidim::Component")
11
+ Notification.where(event_class: "Decidim::FeaturePublishedEvent").update_all(event_class: "Decidim::ComponentPublishedEvent")
12
+ Notification.where(event_name: "decidim.events.features.feature_published").update_all(event_name: "decidim.events.components.component_published")
13
+ # rubocop:enable Rails/SkipsModelValidations
14
+ end
15
+ end
@@ -87,7 +87,7 @@ module Decidim
87
87
 
88
88
  # Exposes a configuration option: The application available locales.
89
89
  config_accessor :available_locales do
90
- %w(en ca es eu fi fr gl it nl pt pt-BR ru sv uk)
90
+ %w(en ca es es-PY eu fi fr gl it nl pt pt-BR ru sv uk)
91
91
  end
92
92
 
93
93
  # Exposes a configuration option: an array of symbols representing processors
@@ -40,6 +40,7 @@ require "cells-erb"
40
40
  require "kaminari"
41
41
  require "doorkeeper"
42
42
  require "doorkeeper-i18n"
43
+ require "kaminari"
43
44
 
44
45
  require "decidim/api"
45
46
 
@@ -4,7 +4,7 @@ module Decidim
4
4
  # This holds the decidim-core version.
5
5
  module Core
6
6
  def self.version
7
- "0.12.0.pre"
7
+ "0.12.0"
8
8
  end
9
9
  end
10
10
  end
@@ -15,7 +15,7 @@ module Decidim
15
15
  scope :visible_for, lambda { |user|
16
16
  joins("LEFT JOIN decidim_participatory_space_private_users ON
17
17
  decidim_participatory_space_private_users.privatable_to_id = #{table_name}.id")
18
- .where("(private_space = ? and decidim_participatory_space_private_users.decidim_user_id = ?) or private_space = ? ", true, user, false)
18
+ .where("(private_space = ? and decidim_participatory_space_private_users.decidim_user_id = ?) or private_space = ? ", true, user, false).distinct
19
19
  }
20
20
 
21
21
  def self.public_spaces
@@ -82,6 +82,28 @@ module Decidim
82
82
  end
83
83
 
84
84
  delegate :resource_manifest, to: :class
85
+
86
+ # Checks throughout all its parent hierarchy if this Resource is visible.
87
+ # i.e. checks
88
+ # - the visibility of its parent Component
89
+ # - the visibility of its participatory space.
90
+ # - the visibility of the resource itself.
91
+ def visible?
92
+ !component.participatory_space.try(:private_space?) && component.published? && resource_visible?
93
+ end
94
+
95
+ # Check only the resource visibility not its hierarchy.
96
+ # This method is intended to be overriden by classes that include this module and have the
97
+ # need to impose its own visibility rules.
98
+ #
99
+ # @return If the resource is also Publicable checks if the resource is published, otherwise returns true by default.
100
+ def resource_visible?
101
+ if respond_to?(:published?)
102
+ published?
103
+ else
104
+ true
105
+ end
106
+ end
85
107
  end
86
108
 
87
109
  class_methods do
@@ -25,6 +25,31 @@ module Decidim
25
25
  #
26
26
  def initialize(declared_fields)
27
27
  @declared_fields = declared_fields.with_indifferent_access
28
+ @conditions = { create: true, update: true }
29
+ end
30
+
31
+ # @param action: currently supports :create, :update
32
+ # @param condition: a boolean or a Proc that will receive the Searchable and will return a boolean.
33
+ def set_index_condition(action, condition)
34
+ @conditions[action] = condition
35
+ end
36
+
37
+ # Checks for the current searchable if it must be indexed when it is created or not.
38
+ def index_on_create?(searchable)
39
+ if @conditions[:create].is_a?(Proc)
40
+ @conditions[:create].call(searchable)
41
+ else
42
+ @conditions[:create]
43
+ end
44
+ end
45
+
46
+ # Checks for the current searchable if it must be indexed when it is updated or not.
47
+ def index_on_update?(searchable)
48
+ if @conditions[:update].is_a?(Proc)
49
+ @conditions[:update].call(searchable)
50
+ else
51
+ @conditions[:update]
52
+ end
28
53
  end
29
54
 
30
55
  def mapped(resource)