decidim-core 0.12.0.pre → 0.12.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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)