Repository: sourcefabric/Newscoop
Branch: v4.4
Commit: 3df835637609
Files: 5358
Total size: 36.0 MB
Directory structure:
gitextract_fnmcfrm8/
├── .gitignore
├── .travis.yml
├── Dockerfile
├── LICENSE
├── README.md
├── behat.yml
├── docker/
│ ├── docker-entrypoint.sh
│ ├── docker-newscoop.yml
│ ├── import-newscoop.sh
│ ├── newscoop-dev.conf
│ └── newscoop.conf
├── docker-compose-dev.yml
├── docker-compose.yml
├── features/
│ ├── 0_api_articles.feature
│ ├── 1_api_images.feature
│ ├── 2_api_linkImage_to_article.feature
│ ├── 3_api_articles_search.feature
│ ├── 3_api_topics.feature
│ ├── 4_api_link_unlink_topic_to_from_article.feature
│ ├── 5_api_related_articles.feature
│ ├── 6_api_link_unlink_topic.feature
│ ├── bootstrap/
│ │ ├── FeatureContext.php
│ │ └── RestContext.php
│ ├── steps/
│ │ └── .gitignore
│ └── support/
│ └── .gitignore
├── newscoop/
│ ├── .gitignore
│ ├── .rmt.yml
│ ├── DETAILED-CHANGELOG.txt
│ ├── LICENSE_3RD_PARTY.txt
│ ├── RMT
│ ├── admin-files/
│ │ ├── ad.php
│ │ ├── ad_popup.php
│ │ ├── article_import/
│ │ │ ├── CampsiteArticleTemplate.stw
│ │ │ ├── CommandProcessor.php
│ │ │ ├── DocBookParser.php
│ │ │ ├── DocbookFinalForm.xml
│ │ │ ├── Installation.txt
│ │ │ ├── index.php
│ │ │ ├── stylesheet.css
│ │ │ └── sxwToDocbook.xsl
│ │ ├── article_types/
│ │ │ ├── add.php
│ │ │ ├── do_add.php
│ │ │ ├── do_comment_activation.php
│ │ │ ├── do_del.php
│ │ │ ├── do_filter.php
│ │ │ ├── do_hide.php
│ │ │ ├── do_rename.php
│ │ │ ├── do_translate.php
│ │ │ ├── fields/
│ │ │ │ ├── add.php
│ │ │ │ ├── do_add.php
│ │ │ │ ├── do_del.php
│ │ │ │ ├── do_hide.php
│ │ │ │ ├── do_rename.php
│ │ │ │ ├── do_reorder.php
│ │ │ │ ├── do_retype.php
│ │ │ │ ├── do_translate.php
│ │ │ │ ├── index.php
│ │ │ │ ├── rename.php
│ │ │ │ ├── retype.php
│ │ │ │ ├── set_is_content.php
│ │ │ │ └── set_show_in_editor.php
│ │ │ ├── index.php
│ │ │ ├── merge.php
│ │ │ ├── merge2.php
│ │ │ ├── merge3.php
│ │ │ └── rename.php
│ │ ├── articles/
│ │ │ ├── JSON.php
│ │ │ ├── add.php
│ │ │ ├── add_move.php
│ │ │ ├── article_common.php
│ │ │ ├── article_stylesheet.css
│ │ │ ├── autopublish.php
│ │ │ ├── autopublish_del.php
│ │ │ ├── autopublish_do_add.php
│ │ │ ├── comments/
│ │ │ │ ├── add_comment_form.php
│ │ │ │ ├── reply.php
│ │ │ │ └── show_comments.php
│ │ │ ├── context_box/
│ │ │ │ └── popup.php
│ │ │ ├── do_add.php
│ │ │ ├── do_article_action.php
│ │ │ ├── do_article_list_action.php
│ │ │ ├── do_edit.php
│ │ │ ├── do_position.php
│ │ │ ├── do_translate.php
│ │ │ ├── do_unlock.php
│ │ │ ├── duplicate.php
│ │ │ ├── edit.php
│ │ │ ├── edit_comments_box.php
│ │ │ ├── edit_context_box.php
│ │ │ ├── edit_html.php
│ │ │ ├── edit_html_authors.php
│ │ │ ├── edit_info_box.php
│ │ │ ├── edit_javascript.php
│ │ │ ├── edit_locations_box.php
│ │ │ ├── edit_main_box.php
│ │ │ ├── edit_media_box.php
│ │ │ ├── edit_multidate_box.php
│ │ │ ├── edit_playlist.php
│ │ │ ├── edit_schedule_box.php
│ │ │ ├── edit_switches_box.php
│ │ │ ├── edit_topics_box.php
│ │ │ ├── editor_load_countable.php
│ │ │ ├── editor_load_tinymce.php
│ │ │ ├── empty.php
│ │ │ ├── files/
│ │ │ │ ├── do_add.php
│ │ │ │ ├── do_add_existing.php
│ │ │ │ ├── do_del.php
│ │ │ │ ├── do_edit.php
│ │ │ │ ├── edit.php
│ │ │ │ └── popup.php
│ │ │ ├── get.php
│ │ │ ├── images/
│ │ │ │ ├── add.php
│ │ │ │ ├── do_link.php
│ │ │ │ ├── do_unlink.php
│ │ │ │ ├── popup.php
│ │ │ │ ├── search.php
│ │ │ │ └── view.php
│ │ │ ├── index.php
│ │ │ ├── la_import.php
│ │ │ ├── locations/
│ │ │ │ ├── country_codes.php
│ │ │ │ ├── do_unlink.php
│ │ │ │ ├── filter.php
│ │ │ │ ├── popup.php
│ │ │ │ ├── preview.php
│ │ │ │ └── search.php
│ │ │ ├── multi_autopublish.php
│ │ │ ├── multidate/
│ │ │ │ └── popup.php
│ │ │ ├── playlist/
│ │ │ │ └── popup.php
│ │ │ ├── post.php
│ │ │ ├── preview.php
│ │ │ └── translate.php
│ │ ├── backup.php
│ │ ├── bugreporter/
│ │ │ ├── bug_handler_main.php
│ │ │ ├── emailus.php
│ │ │ └── errormessage.php
│ │ ├── camp_html.php
│ │ ├── country/
│ │ │ ├── add.php
│ │ │ ├── country_common.php
│ │ │ ├── do_add.php
│ │ │ ├── do_del.php
│ │ │ ├── do_edit.php
│ │ │ ├── do_translate.php
│ │ │ ├── edit.php
│ │ │ ├── index.php
│ │ │ └── translate.php
│ │ ├── home.php
│ │ ├── html_head.php
│ │ ├── index.php
│ │ ├── issues/
│ │ │ ├── add_new.php
│ │ │ ├── add_prev.php
│ │ │ ├── autopublish.php
│ │ │ ├── autopublish_del.php
│ │ │ ├── autopublish_do_add.php
│ │ │ ├── delete.php
│ │ │ ├── do_add_new.php
│ │ │ ├── do_add_prev.php
│ │ │ ├── do_del.php
│ │ │ ├── do_edit.php
│ │ │ ├── do_status.php
│ │ │ ├── do_translate.php
│ │ │ ├── edit.php
│ │ │ ├── empty.php
│ │ │ ├── get_templates.php
│ │ │ ├── index.php
│ │ │ ├── issue_common.php
│ │ │ ├── preview.php
│ │ │ ├── qadd.php
│ │ │ └── translate.php
│ │ ├── javascript_common.php
│ │ ├── json.php
│ │ ├── languages/
│ │ │ ├── add_modify.php
│ │ │ ├── do_add_modify.php
│ │ │ ├── do_del.php
│ │ │ └── index.php
│ │ ├── languages.php
│ │ ├── lib_campsite.php
│ │ ├── libs/
│ │ │ ├── ArticleList/
│ │ │ │ ├── ArticleList.php
│ │ │ │ ├── actions.php
│ │ │ │ ├── do_action.php
│ │ │ │ ├── do_data.php
│ │ │ │ ├── do_order.php
│ │ │ │ ├── filters.php
│ │ │ │ └── table.php
│ │ │ ├── BaseList/
│ │ │ │ ├── BaseList.php
│ │ │ │ └── table.php
│ │ │ ├── ContextList/
│ │ │ │ ├── ContextList.php
│ │ │ │ ├── actions.php
│ │ │ │ ├── do_action.php
│ │ │ │ ├── do_data.php
│ │ │ │ ├── do_order.php
│ │ │ │ ├── filters.php
│ │ │ │ └── table.php
│ │ │ ├── ImageList/
│ │ │ │ └── ImageList.php
│ │ │ ├── MediaList/
│ │ │ │ └── MediaList.php
│ │ │ └── MediaPlayer/
│ │ │ ├── MediaPlayer.php
│ │ │ ├── flash.phtml
│ │ │ ├── player.phtml
│ │ │ └── video.phtml
│ │ ├── media-archive/
│ │ │ ├── add.php
│ │ │ ├── add_file.php
│ │ │ ├── ajax_save.php
│ │ │ ├── do_del.php
│ │ │ ├── do_edit-attachment.php
│ │ │ ├── do_edit.php
│ │ │ ├── do_multiedit.php
│ │ │ ├── do_multiedit_file.php
│ │ │ ├── do_upload.php
│ │ │ ├── do_upload_file.php
│ │ │ ├── edit-attachment.php
│ │ │ ├── edit.php
│ │ │ ├── editor_load_tinymce.php
│ │ │ ├── index.php
│ │ │ ├── multiedit.php
│ │ │ ├── multiedit_file.php
│ │ │ ├── uploader.php
│ │ │ └── uploader_file.php
│ │ ├── menu.php
│ │ ├── pending_articles/
│ │ │ └── index.php
│ │ ├── plugins/
│ │ │ └── manage.php
│ │ ├── pub/
│ │ │ ├── add_alias.php
│ │ │ ├── aliases.php
│ │ │ ├── do_add_alias.php
│ │ │ ├── do_del_alias.php
│ │ │ ├── do_edit_alias.php
│ │ │ ├── edit_alias.php
│ │ │ └── pub_common.php
│ │ ├── sections/
│ │ │ ├── add.php
│ │ │ ├── del.php
│ │ │ ├── do_add.php
│ │ │ ├── do_del.php
│ │ │ ├── do_duplicate.php
│ │ │ ├── do_edit.php
│ │ │ ├── duplicate.php
│ │ │ ├── duplicate_complete.php
│ │ │ ├── edit.php
│ │ │ ├── index.php
│ │ │ └── section_common.php
│ │ ├── set-author.php
│ │ ├── universal-list/
│ │ │ └── index.php
│ │ ├── users/
│ │ │ ├── access_form.php
│ │ │ ├── authors.php
│ │ │ ├── authors_ajax/
│ │ │ │ ├── detail.php
│ │ │ │ └── grid.php
│ │ │ ├── do_add.php
│ │ │ ├── do_del.php
│ │ │ ├── do_edit.php
│ │ │ ├── do_ipadd.php
│ │ │ ├── do_ipdel.php
│ │ │ ├── load_tinymce.php
│ │ │ ├── permission_list.php
│ │ │ └── users_common.php
│ │ └── widgets.php
│ ├── admin-style/
│ │ ├── ColVis.css
│ │ ├── action_buttons.css
│ │ ├── admin_stylesheet.css
│ │ ├── admin_stylesheet_context.css
│ │ ├── admin_stylesheet_new.css
│ │ ├── app.css
│ │ ├── buttons.css
│ │ ├── calendar/
│ │ │ ├── fullcalendar.css
│ │ │ └── timepicker.css
│ │ ├── comments.css
│ │ ├── common.css
│ │ ├── content.css
│ │ ├── fg-menu/
│ │ │ ├── fg.menu.css
│ │ │ ├── fg.menu.js
│ │ │ ├── menuContent.html
│ │ │ └── theme/
│ │ │ ├── ui.accordion.css
│ │ │ ├── ui.all.css
│ │ │ ├── ui.base.css
│ │ │ ├── ui.core.css
│ │ │ ├── ui.datepicker.css
│ │ │ ├── ui.dialog.css
│ │ │ ├── ui.progressbar.css
│ │ │ ├── ui.resizable.css
│ │ │ ├── ui.slider.css
│ │ │ ├── ui.tabs.css
│ │ │ └── ui.theme.css
│ │ ├── fg.menu.css
│ │ ├── form.css
│ │ ├── image_management.css
│ │ ├── jScrollPane.css
│ │ ├── jquery-ui-1.8.6.custom.css
│ │ ├── jquery-ui-1.8.6.datepicker.css
│ │ ├── layout.css
│ │ ├── lists.css
│ │ ├── map-filter.css
│ │ ├── map-picking.css
│ │ ├── map-preview.css
│ │ ├── misc-pages.css
│ │ ├── modal-custom.css
│ │ ├── modal-window.css
│ │ ├── multidate.css
│ │ ├── pagination.css
│ │ ├── renditions.css
│ │ ├── sidebar.css
│ │ ├── slideshow-list.css
│ │ ├── slideshow.css
│ │ ├── table.css
│ │ ├── themes_list.css
│ │ ├── widgets.css
│ │ └── zend_admin_stylesheet.css
│ ├── admin.php
│ ├── application/
│ │ ├── AppKernel.php
│ │ ├── Bootstrap.php
│ │ ├── SymfonyRequirements.php
│ │ ├── autoload.php
│ │ ├── check.php
│ │ ├── configs/
│ │ │ ├── parameters/
│ │ │ │ ├── parameters.yml
│ │ │ │ ├── parameters_cli.yml
│ │ │ │ ├── parameters_development.yml
│ │ │ │ └── parameters_testing.yml
│ │ │ ├── security/
│ │ │ │ └── .gitkeep
│ │ │ ├── services/
│ │ │ │ ├── audit.yml
│ │ │ │ ├── comment.yml
│ │ │ │ ├── comment_notification.yml
│ │ │ │ ├── services.yml
│ │ │ │ ├── template_lists.yml
│ │ │ │ ├── user_attributes.yml
│ │ │ │ └── user_points.yml
│ │ │ ├── subscriptions/
│ │ │ │ └── .gitignore
│ │ │ └── symfony/
│ │ │ ├── config.yml
│ │ │ ├── config_dev.yml
│ │ │ ├── config_prod.yml
│ │ │ ├── config_testing.yml
│ │ │ ├── routing.yml
│ │ │ ├── routing_dev.yml
│ │ │ └── security.yml
│ │ ├── console
│ │ ├── controllers/
│ │ │ ├── AuthController.php
│ │ │ ├── AuthorController.php
│ │ │ ├── DashboardController.php
│ │ │ ├── EmailController.php
│ │ │ ├── ErrorController.php
│ │ │ ├── FeedbackController.php
│ │ │ ├── ImageController.php
│ │ │ ├── LegacyController.php
│ │ │ ├── MyTopicsController.php
│ │ │ ├── OmniboxController.php
│ │ │ ├── RatingController.php
│ │ │ ├── RegisterController.php
│ │ │ ├── SearchController.php
│ │ │ ├── TopicController.php
│ │ │ ├── UserController.php
│ │ │ └── helpers/
│ │ │ ├── Acl.php
│ │ │ ├── Article.php
│ │ │ ├── Datatable.php
│ │ │ ├── Em.php
│ │ │ ├── Entity.php
│ │ │ ├── Form.php
│ │ │ ├── GenericDatatable.php
│ │ │ ├── Log.php
│ │ │ ├── Newsletter.php
│ │ │ ├── Plupload.php
│ │ │ ├── Service.php
│ │ │ ├── Sidebar.php
│ │ │ └── Smarty.php
│ │ ├── forms/
│ │ │ ├── Confirm.php
│ │ │ ├── Contact.php
│ │ │ ├── Login.php
│ │ │ ├── PasswordRestore.php
│ │ │ ├── PasswordRestorePassword.php
│ │ │ ├── Profile.php
│ │ │ ├── Register.php
│ │ │ ├── SendEmail.php
│ │ │ ├── Social.php
│ │ │ └── Topics.php
│ │ ├── layouts/
│ │ │ └── scripts/
│ │ │ ├── admin.phtml
│ │ │ ├── admin_menu.phtml
│ │ │ ├── iframe.phtml
│ │ │ └── modal.phtml
│ │ ├── modules/
│ │ │ └── admin/
│ │ │ ├── Bootstrap.php
│ │ │ ├── controllers/
│ │ │ │ ├── AclController.php
│ │ │ │ ├── ApplicationController.php
│ │ │ │ ├── AuthController.php
│ │ │ │ ├── BlogController.php
│ │ │ │ ├── CommentAcceptanceController.php
│ │ │ │ ├── CommentCommenterController.php
│ │ │ │ ├── CommentController.php
│ │ │ │ ├── ErrorController.php
│ │ │ │ ├── FeedbackController.php
│ │ │ │ ├── ImageController.php
│ │ │ │ ├── LanguagesController.php
│ │ │ │ ├── LegacyController.php
│ │ │ │ ├── LogController.php
│ │ │ │ ├── MediaController.php
│ │ │ │ ├── MultidateController.php
│ │ │ │ ├── RenditionController.php
│ │ │ │ ├── SlideshowController.php
│ │ │ │ ├── SlideshowRestController.php
│ │ │ │ ├── StaffController.php
│ │ │ │ ├── SupportController.php
│ │ │ │ ├── TemplateController.php
│ │ │ │ ├── ThemesController.php
│ │ │ │ ├── UserController.php
│ │ │ │ ├── UserGroupController.php
│ │ │ │ └── UserPointsController.php
│ │ │ ├── forms/
│ │ │ │ ├── Ban.php
│ │ │ │ ├── BanUser.php
│ │ │ │ ├── Blog.php
│ │ │ │ ├── Comment/
│ │ │ │ │ ├── EditForm.php
│ │ │ │ │ └── ReplyForm.php
│ │ │ │ ├── Comment.php
│ │ │ │ ├── CommentAcceptance.php
│ │ │ │ ├── Commenter.php
│ │ │ │ ├── EditPassword.php
│ │ │ │ ├── Geolocation.php
│ │ │ │ ├── Language.php
│ │ │ │ ├── Profile.php
│ │ │ │ ├── RenameUser.php
│ │ │ │ ├── ReplaceTemplate.php
│ │ │ │ ├── Slideshow.php
│ │ │ │ ├── SlideshowCreate.php
│ │ │ │ ├── SlideshowItem.php
│ │ │ │ ├── SlideshowVideoItem.php
│ │ │ │ ├── Staff.php
│ │ │ │ ├── Support.php
│ │ │ │ ├── Template.php
│ │ │ │ ├── Theme/
│ │ │ │ │ ├── OutputSettings.php
│ │ │ │ │ └── Upload.php
│ │ │ │ ├── Theme.php
│ │ │ │ ├── Upload.php
│ │ │ │ ├── User.php
│ │ │ │ ├── UserCriteria.php
│ │ │ │ └── UserPoints.php
│ │ │ └── views/
│ │ │ ├── helpers/
│ │ │ │ ├── Camelize.php
│ │ │ │ ├── CommentAction.php
│ │ │ │ ├── CommentArticle.php
│ │ │ │ ├── CommentCommenter.php
│ │ │ │ ├── CommentIndex.php
│ │ │ │ ├── CommentMessage.php
│ │ │ │ ├── FlashMsg.php
│ │ │ │ ├── FormatBytes.php
│ │ │ │ ├── GetAvatar.php
│ │ │ │ ├── ImageArchive.php
│ │ │ │ ├── ImageEditor.php
│ │ │ │ ├── JQueryReady.php
│ │ │ │ ├── JQueryUtils.php
│ │ │ │ ├── Jsonified.php
│ │ │ │ ├── LinkArticle.php
│ │ │ │ ├── LinkArticleObj.php
│ │ │ │ ├── LinkBan.php
│ │ │ │ ├── LinkDelete.php
│ │ │ │ ├── LinkEdit.php
│ │ │ │ ├── MaxFileSize.php
│ │ │ │ ├── ModerateBodyComment.php
│ │ │ │ ├── ModerateSubjectComment.php
│ │ │ │ ├── Plupload.php
│ │ │ │ ├── RenderActions.php
│ │ │ │ ├── RenderDatatable.php
│ │ │ │ ├── RenderDate.php
│ │ │ │ ├── RenderError.php
│ │ │ │ ├── RenderFilter.php
│ │ │ │ ├── RenderMessage.php
│ │ │ │ ├── RenderNewsItem.php
│ │ │ │ ├── RenderPackageItem.php
│ │ │ │ ├── RenderPackageItemGroup.php
│ │ │ │ ├── RenderPager.php
│ │ │ │ ├── RenditionPreview.php
│ │ │ │ ├── Slideshow.php
│ │ │ │ ├── SlideshowItem.php
│ │ │ │ ├── SlideshowItemPreview.php
│ │ │ │ ├── SlideshowsJson.php
│ │ │ │ ├── StringLimit.php
│ │ │ │ ├── ToggleCheckbox.php
│ │ │ │ └── VideoPreview.php
│ │ │ └── scripts/
│ │ │ ├── _p/
│ │ │ │ └── generic-datatable.phtml
│ │ │ ├── acl/
│ │ │ │ ├── edit.phtml
│ │ │ │ └── form.phtml
│ │ │ ├── actions.phtml
│ │ │ ├── application/
│ │ │ │ └── help.phtml
│ │ │ ├── auth/
│ │ │ │ └── login.phtml
│ │ │ ├── blog/
│ │ │ │ ├── index.phtml
│ │ │ │ └── nosection.phtml
│ │ │ ├── comment/
│ │ │ │ ├── add.phtml
│ │ │ │ ├── edit.phtml
│ │ │ │ ├── list.phtml
│ │ │ │ └── set-status.phtml
│ │ │ ├── comment-acceptance/
│ │ │ │ ├── add.phtml
│ │ │ │ ├── edit.phtml
│ │ │ │ └── table.phtml
│ │ │ ├── comment-commenter/
│ │ │ │ ├── add.phtml
│ │ │ │ ├── edit.phtml
│ │ │ │ ├── index.phtml
│ │ │ │ └── toggle-ban.phtml
│ │ │ ├── datatable.phtml
│ │ │ ├── error/
│ │ │ │ ├── deny.phtml
│ │ │ │ └── index.phtml
│ │ │ ├── error.phtml
│ │ │ ├── feedback/
│ │ │ │ ├── set-status.phtml
│ │ │ │ └── table.phtml
│ │ │ ├── filter.phtml
│ │ │ ├── image/
│ │ │ │ ├── archive.phtml
│ │ │ │ ├── article-attach.phtml
│ │ │ │ ├── article.phtml
│ │ │ │ ├── edit-image-data.phtml
│ │ │ │ ├── edit.phtml
│ │ │ │ ├── editor.phtml
│ │ │ │ └── rendition.phtml
│ │ │ ├── languages/
│ │ │ │ ├── add.phtml
│ │ │ │ ├── edit.phtml
│ │ │ │ └── index.phtml
│ │ │ ├── legacy/
│ │ │ │ └── index.phtml
│ │ │ ├── link-ban.phtml
│ │ │ ├── link-delete.phtml
│ │ │ ├── link-edit.phtml
│ │ │ ├── log/
│ │ │ │ └── index.phtml
│ │ │ ├── media/
│ │ │ │ ├── list-images.phtml
│ │ │ │ └── list-slideshows.phtml
│ │ │ ├── message.phtml
│ │ │ ├── news-item.phtml
│ │ │ ├── package/
│ │ │ │ └── item.phtml
│ │ │ ├── package-item-group.phtml
│ │ │ ├── package-item.phtml
│ │ │ ├── pager.phtml
│ │ │ ├── paginator-hash.phtml
│ │ │ ├── paginator-template.phtml
│ │ │ ├── paginator.phtml
│ │ │ ├── plupload.phtml
│ │ │ ├── rendition/
│ │ │ │ ├── index.phtml
│ │ │ │ └── preview.phtml
│ │ │ ├── slideshow/
│ │ │ │ ├── add-video-item.phtml
│ │ │ │ ├── attach.phtml
│ │ │ │ ├── create.phtml
│ │ │ │ ├── edit-item.phtml
│ │ │ │ ├── edit.phtml
│ │ │ │ ├── item-preview.phtml
│ │ │ │ ├── item.phtml
│ │ │ │ ├── slideshow.phtml
│ │ │ │ ├── vimeo-preview.phtml
│ │ │ │ └── youtube-preview.phtml
│ │ │ ├── slideshow-attach-template.phtml
│ │ │ ├── slideshow-box.phtml
│ │ │ ├── slideshow-list.phtml
│ │ │ ├── slideshow-template.phtml
│ │ │ ├── staff/
│ │ │ │ ├── add.phtml
│ │ │ │ ├── edit-access.phtml
│ │ │ │ ├── edit.phtml
│ │ │ │ └── table.phtml
│ │ │ ├── support/
│ │ │ │ ├── close.phtml
│ │ │ │ └── index.phtml
│ │ │ ├── template/
│ │ │ │ ├── edit-image.phtml
│ │ │ │ ├── edit-other.phtml
│ │ │ │ ├── edit-template.phtml
│ │ │ │ ├── index.phtml
│ │ │ │ └── upload.phtml
│ │ │ ├── test/
│ │ │ │ ├── index.phtml
│ │ │ │ ├── test-api-follow.phtml
│ │ │ │ └── test-api.phtml
│ │ │ ├── themes/
│ │ │ │ ├── advanced-theme-settings.phtml
│ │ │ │ ├── index.phtml
│ │ │ │ ├── output-edit.phtml
│ │ │ │ ├── wizard-theme-article-types.adv.phtml
│ │ │ │ ├── wizard-theme-article-types.phtml
│ │ │ │ ├── wizard-theme-files.adv.phtml
│ │ │ │ ├── wizard-theme-playlists.phtml
│ │ │ │ ├── wizard-theme-settings.adv.phtml
│ │ │ │ ├── wizard-theme-settings.phtml
│ │ │ │ ├── wizard-theme-template-settings.adv.phtml
│ │ │ │ └── wizard-theme-template-settings.phtml
│ │ │ ├── toggle-checkbox.phtml
│ │ │ ├── user/
│ │ │ │ ├── create.phtml
│ │ │ │ ├── edit-password.phtml
│ │ │ │ ├── edit.phtml
│ │ │ │ ├── geolocation.phtml
│ │ │ │ ├── index.phtml
│ │ │ │ ├── list-inactive.phtml
│ │ │ │ ├── profile.phtml
│ │ │ │ ├── rename.phtml
│ │ │ │ └── toggle-ban.phtml
│ │ │ ├── user-group/
│ │ │ │ ├── add.phtml
│ │ │ │ ├── edit-access.phtml
│ │ │ │ └── index.phtml
│ │ │ └── user-points/
│ │ │ └── index.phtml
│ │ ├── phpunit.bootstrap.php
│ │ ├── phpunit.xml.dist
│ │ ├── plugins/
│ │ │ ├── Acl.php
│ │ │ ├── Auth.php
│ │ │ ├── Bootstrap.php
│ │ │ ├── CampPluginAutoload.php
│ │ │ ├── ContentType.php
│ │ │ └── Upgrade.php
│ │ └── views/
│ │ └── scripts/
│ │ ├── auth_index.tpl
│ │ ├── auth_password-restore-after.tpl
│ │ ├── auth_password-restore-finish.tpl
│ │ ├── auth_password-restore.tpl
│ │ ├── author_profile.tpl
│ │ ├── comments/
│ │ │ └── index.phtml
│ │ ├── dashboard_index.tpl
│ │ ├── email_comment-notify.tpl
│ │ ├── email_confirm.tpl
│ │ ├── email_password-restore.tpl
│ │ ├── error/
│ │ │ └── error.phtml
│ │ ├── error_error.tpl
│ │ ├── layout.tpl
│ │ ├── legacy/
│ │ │ └── index.phtml
│ │ ├── legacy_index.tpl
│ │ ├── omnibox_index.tpl
│ │ ├── paginator_control.tpl
│ │ ├── register_after.tpl
│ │ ├── register_confirm.tpl
│ │ ├── register_index.tpl
│ │ ├── register_pending.tpl
│ │ ├── register_social.tpl
│ │ ├── search_index.tpl
│ │ ├── topic_articles.tpl
│ │ ├── user_index.tpl
│ │ └── user_profile.tpl
│ ├── application.php
│ ├── bin/
│ │ ├── .htaccess
│ │ ├── UpdateApplicationVersionCurrentVersion.php
│ │ ├── cli_script_lib.php
│ │ ├── events-notifier
│ │ ├── newscoop-autopublish
│ │ ├── newscoop-backup
│ │ ├── newscoop-indexer
│ │ ├── newscoop-restore
│ │ ├── newscoop-statistics
│ │ ├── newscoop-stats
│ │ ├── newscoop-utf8-converter
│ │ ├── newscoop_bootstrap.php
│ │ ├── post-install.sh
│ │ ├── subscription-notifier
│ │ └── webcode_generate_all.sh
│ ├── cache/
│ │ ├── .gitignore
│ │ └── .htaccess
│ ├── classes/
│ │ ├── Alias.php
│ │ ├── Article.php
│ │ ├── ArticleAttachment.php
│ │ ├── ArticleAuthor.php
│ │ ├── ArticleData.php
│ │ ├── ArticleImage.php
│ │ ├── ArticleIndex.php
│ │ ├── ArticlePublish.php
│ │ ├── ArticleTopic.php
│ │ ├── ArticleType.php
│ │ ├── ArticleTypeField.php
│ │ ├── Attachment.php
│ │ ├── Author.php
│ │ ├── AuthorAlias.php
│ │ ├── AuthorAssignedType.php
│ │ ├── AuthorBiography.php
│ │ ├── AuthorType.php
│ │ ├── Browser.php
│ │ ├── BugReporter.php
│ │ ├── CampCache.php
│ │ ├── CampCacheList.php
│ │ ├── CampMail.php
│ │ ├── CampPlugin.php
│ │ ├── CampTemplateCache.php
│ │ ├── ContextBox.php
│ │ ├── ContextBoxArticle.php
│ │ ├── Country.php
│ │ ├── DatabaseObject.php
│ │ ├── DbObjectArray.php
│ │ ├── DbReplication.php
│ │ ├── Event.php
│ │ ├── Exceptions.php
│ │ ├── Extension/
│ │ │ ├── Extension.php
│ │ │ ├── FeedWidget.php
│ │ │ ├── File.php
│ │ │ ├── IWidget.php
│ │ │ ├── IWidgetContext.php
│ │ │ ├── Index.php
│ │ │ ├── Widget.php
│ │ │ ├── WidgetContext.php
│ │ │ ├── WidgetManager.php
│ │ │ ├── WidgetManagerDecorator.php
│ │ │ └── WidgetRendererDecorator.php
│ │ ├── FileTextSearch.php
│ │ ├── GeoLocation.php
│ │ ├── GeoMap.php
│ │ ├── GeoMapLocation.php
│ │ ├── GeoMapLocationContent.php
│ │ ├── GeoMapLocationLanguage.php
│ │ ├── GeoMultimedia.php
│ │ ├── GeoNames.php
│ │ ├── GeoPreferences.php
│ │ ├── IGeoLocation.php
│ │ ├── IGeoMap.php
│ │ ├── IGeoMapLocation.php
│ │ ├── IGeoMapLocationContent.php
│ │ ├── IGeoMapLocationLanguage.php
│ │ ├── IGeoMultimedia.php
│ │ ├── IPAccess.php
│ │ ├── Image.php
│ │ ├── ImageSearch.php
│ │ ├── Input.php
│ │ ├── Issue.php
│ │ ├── IssuePublish.php
│ │ ├── Language.php
│ │ ├── LiveUserMock.php
│ │ ├── Log.php
│ │ ├── LoginAttempts.php
│ │ ├── ModuleConfiguration.php
│ │ ├── ObjectType.php
│ │ ├── Plupload.php
│ │ ├── Publication.php
│ │ ├── Request.php
│ │ ├── RequestObject.php
│ │ ├── RequestStats.php
│ │ ├── SQLSelectClause.php
│ │ ├── SaaS.php
│ │ ├── Section.php
│ │ ├── SecurityToken.php
│ │ ├── ServerRequest.php
│ │ ├── Session.php
│ │ ├── SessionRequest.php
│ │ ├── ShortURL.php
│ │ ├── SimplePager.php
│ │ ├── Statistics.php
│ │ ├── Subscription.php
│ │ ├── SubscriptionDefaultTime.php
│ │ ├── SubscriptionSection.php
│ │ ├── Template.php
│ │ ├── TemplateConverter.php
│ │ ├── TemplateConverterHelper.php
│ │ ├── TemplateConverterIfBlock.php
│ │ ├── TemplateConverterListObject.php
│ │ ├── TemplateConverterNewscoop.php
│ │ ├── TimeUnit.php
│ │ ├── Translation.php
│ │ ├── UrlType.php
│ │ ├── User.php
│ │ ├── UserType.php
│ │ ├── XR_CcClient.php
│ │ ├── browser_detection.php
│ │ └── cache/
│ │ ├── CacheEngine.php
│ │ ├── CacheEngine_APC.php
│ │ ├── TemplateCacheHandler.php
│ │ └── TemplateCacheHandler_DB.php
│ ├── composer.json
│ ├── conf/
│ │ ├── install_conf.php
│ │ └── saas_config_sample.php
│ ├── constants.php
│ ├── db_connect.php
│ ├── docs/
│ │ ├── INSTALL-ubuntu.md
│ │ ├── README.md
│ │ ├── UPGRADE_4_3.md
│ │ ├── UPGRADE_4_4.md
│ │ └── UPGRADE_BELOW_4_2_3.md
│ ├── extensions/
│ │ ├── article-lists/
│ │ │ ├── ArticleDiagramsWidget.php
│ │ │ ├── ArticlesWidget.php
│ │ │ ├── MostPopularArticlesWidget.php
│ │ │ ├── PendingArticlesWidget.php
│ │ │ ├── RecentlyModifiedArticlesWidget.php
│ │ │ ├── RecentlyPublishedArticlesWidget.php
│ │ │ ├── SubmittedArticlesWidget.php
│ │ │ ├── YourArticlesWidget.php
│ │ │ ├── article-lists.ini
│ │ │ └── diagrams.phtml
│ │ ├── feed-reader/
│ │ │ ├── FeedReader.php
│ │ │ └── feed-reader.ini
│ │ ├── hello-world/
│ │ │ └── HelloWorld.php
│ │ ├── media-archive/
│ │ │ ├── ImageListWidget.php
│ │ │ ├── MediaListWidget.php
│ │ │ └── media-archive.ini
│ │ ├── sourcefabric/
│ │ │ ├── SourcefabricDevFeed.php
│ │ │ ├── SourcefabricFeed.php
│ │ │ ├── SourcefabricNewsletter.php
│ │ │ ├── newsletterbox.phtml
│ │ │ └── sourcefabric.ini
│ │ └── wikipedia/
│ │ ├── SearchWikipedia.php
│ │ └── search.phtml
│ ├── htaccess.dist
│ ├── images/
│ │ └── .gitignore
│ ├── include/
│ │ ├── Archive/
│ │ │ └── Tar.php
│ │ ├── Console/
│ │ │ └── Getopt.php
│ │ ├── Date/
│ │ │ ├── Calc.php
│ │ │ ├── Human.php
│ │ │ ├── Span.php
│ │ │ └── TimeZone.php
│ │ ├── Date.php
│ │ ├── Event/
│ │ │ ├── Dispatcher.php
│ │ │ └── Notification.php
│ │ ├── File/
│ │ │ ├── CSV.php
│ │ │ ├── Find.php
│ │ │ └── Util.php
│ │ ├── File.php
│ │ ├── Mail/
│ │ │ ├── RFC822.php
│ │ │ ├── mail.php
│ │ │ ├── mime.php
│ │ │ ├── mimeDecode.php
│ │ │ ├── mimePart.php
│ │ │ ├── mock.php
│ │ │ ├── null.php
│ │ │ ├── sendmail.php
│ │ │ ├── smtp.php
│ │ │ └── smtpmx.php
│ │ ├── Mail.php
│ │ ├── Net/
│ │ │ ├── SMTP.php
│ │ │ ├── Socket.php
│ │ │ └── URL.php
│ │ ├── OS/
│ │ │ └── Guess.php
│ │ ├── PEAR/
│ │ │ ├── Autoloader.php
│ │ │ ├── Builder.php
│ │ │ ├── ChannelFile/
│ │ │ │ └── Parser.php
│ │ │ ├── ChannelFile.php
│ │ │ ├── Command/
│ │ │ │ ├── Auth.php
│ │ │ │ ├── Auth.xml
│ │ │ │ ├── Build.php
│ │ │ │ ├── Build.xml
│ │ │ │ ├── Channels.php
│ │ │ │ ├── Channels.xml
│ │ │ │ ├── Common.php
│ │ │ │ ├── Config.php
│ │ │ │ ├── Config.xml
│ │ │ │ ├── Install.php
│ │ │ │ ├── Install.xml
│ │ │ │ ├── Mirror.php
│ │ │ │ ├── Mirror.xml
│ │ │ │ ├── Package.php
│ │ │ │ ├── Package.xml
│ │ │ │ ├── Pickle.php
│ │ │ │ ├── Pickle.xml
│ │ │ │ ├── Registry.php
│ │ │ │ ├── Registry.xml
│ │ │ │ ├── Remote.php
│ │ │ │ ├── Remote.xml
│ │ │ │ ├── Test.php
│ │ │ │ └── Test.xml
│ │ │ ├── Command.php
│ │ │ ├── Common.php
│ │ │ ├── Config.php
│ │ │ ├── Dependency2.php
│ │ │ ├── DependencyDB.php
│ │ │ ├── Downloader/
│ │ │ │ └── Package.php
│ │ │ ├── Downloader.php
│ │ │ ├── ErrorStack.php
│ │ │ ├── Exception.php
│ │ │ ├── FixPHP5PEARWarnings.php
│ │ │ ├── Frontend/
│ │ │ │ └── CLI.php
│ │ │ ├── Frontend.php
│ │ │ ├── Installer/
│ │ │ │ ├── Role/
│ │ │ │ │ ├── Cfg.php
│ │ │ │ │ ├── Cfg.xml
│ │ │ │ │ ├── Common.php
│ │ │ │ │ ├── Data.php
│ │ │ │ │ ├── Data.xml
│ │ │ │ │ ├── Doc.php
│ │ │ │ │ ├── Doc.xml
│ │ │ │ │ ├── Ext.php
│ │ │ │ │ ├── Ext.xml
│ │ │ │ │ ├── Php.php
│ │ │ │ │ ├── Php.xml
│ │ │ │ │ ├── Script.php
│ │ │ │ │ ├── Script.xml
│ │ │ │ │ ├── Src.php
│ │ │ │ │ ├── Src.xml
│ │ │ │ │ ├── Test.php
│ │ │ │ │ ├── Test.xml
│ │ │ │ │ ├── Www.php
│ │ │ │ │ └── Www.xml
│ │ │ │ └── Role.php
│ │ │ ├── Installer.php
│ │ │ ├── PackageFile/
│ │ │ │ ├── Generator/
│ │ │ │ │ ├── v1.php
│ │ │ │ │ └── v2.php
│ │ │ │ ├── Parser/
│ │ │ │ │ ├── v1.php
│ │ │ │ │ └── v2.php
│ │ │ │ ├── v1.php
│ │ │ │ ├── v2/
│ │ │ │ │ ├── Validator.php
│ │ │ │ │ └── rw.php
│ │ │ │ └── v2.php
│ │ │ ├── PackageFile.php
│ │ │ ├── Packager.php
│ │ │ ├── REST/
│ │ │ │ ├── 10.php
│ │ │ │ ├── 11.php
│ │ │ │ └── 13.php
│ │ │ ├── REST.php
│ │ │ ├── Registry.php
│ │ │ ├── RunTest.php
│ │ │ ├── Task/
│ │ │ │ ├── Common.php
│ │ │ │ ├── Postinstallscript/
│ │ │ │ │ └── rw.php
│ │ │ │ ├── Postinstallscript.php
│ │ │ │ ├── Replace/
│ │ │ │ │ └── rw.php
│ │ │ │ ├── Replace.php
│ │ │ │ ├── Unixeol/
│ │ │ │ │ └── rw.php
│ │ │ │ ├── Unixeol.php
│ │ │ │ ├── Windowseol/
│ │ │ │ │ └── rw.php
│ │ │ │ └── Windowseol.php
│ │ │ ├── Validate.php
│ │ │ ├── Validator/
│ │ │ │ └── PECL.php
│ │ │ └── XMLParser.php
│ │ ├── PEAR.php
│ │ ├── PEAR5.php
│ │ ├── System.php
│ │ ├── XML/
│ │ │ ├── Parser/
│ │ │ │ └── Simple.php
│ │ │ ├── Parser.php
│ │ │ ├── Serializer.php
│ │ │ ├── Unserializer.php
│ │ │ └── Util.php
│ │ ├── campsite_constants.php
│ │ ├── campsite_init.php
│ │ ├── captcha/
│ │ │ ├── fonts/
│ │ │ │ ├── COPYRIGHT.TXT
│ │ │ │ ├── README.TXT
│ │ │ │ ├── RELEASENOTES.TXT
│ │ │ │ └── local.conf
│ │ │ ├── image.php
│ │ │ └── php-captcha.inc.php
│ │ ├── crypto/
│ │ │ └── rc4Encrypt.php
│ │ ├── data/
│ │ │ ├── Mail_Mime/
│ │ │ │ ├── xmail.dtd
│ │ │ │ └── xmail.xsl
│ │ │ ├── PEAR/
│ │ │ │ ├── package.dtd
│ │ │ │ └── template.spec
│ │ │ └── XML_Serializer/
│ │ │ └── doc/
│ │ │ └── todo.txt
│ │ ├── html2pdf/
│ │ │ ├── _LGPL.txt
│ │ │ ├── _changelog.txt
│ │ │ ├── _class/
│ │ │ │ ├── exception.class.php
│ │ │ │ ├── locale.class.php
│ │ │ │ ├── myPdf.class.php
│ │ │ │ ├── parsingCss.class.php
│ │ │ │ ├── parsingHtml.class.php
│ │ │ │ └── tcpdfConfig.php
│ │ │ ├── _lisez_moi.txt
│ │ │ ├── _read_me.txt
│ │ │ ├── _tcpdf_5.0.002/
│ │ │ │ ├── 2dbarcodes.php
│ │ │ │ ├── CHANGELOG.TXT
│ │ │ │ ├── LICENSE.TXT
│ │ │ │ ├── README.TXT
│ │ │ │ ├── barcodes.php
│ │ │ │ ├── cache/
│ │ │ │ │ ├── chapter_demo_1.txt
│ │ │ │ │ ├── chapter_demo_2.txt
│ │ │ │ │ ├── table_data_demo.txt
│ │ │ │ │ └── utf8test.txt
│ │ │ │ ├── config/
│ │ │ │ │ ├── lang/
│ │ │ │ │ │ ├── bra.php
│ │ │ │ │ │ ├── eng.php
│ │ │ │ │ │ ├── ger.php
│ │ │ │ │ │ └── ita.php
│ │ │ │ │ ├── tcpdf_config.php
│ │ │ │ │ └── tcpdf_config_alt.php
│ │ │ │ ├── doc/
│ │ │ │ │ └── read_me.txt
│ │ │ │ ├── examples/
│ │ │ │ │ └── read_me.txt
│ │ │ │ ├── fonts/
│ │ │ │ │ ├── README.TXT
│ │ │ │ │ ├── ZarBold.ctg.z
│ │ │ │ │ ├── ZarBold.z
│ │ │ │ │ ├── almohanad.ctg.z
│ │ │ │ │ ├── almohanad.php
│ │ │ │ │ ├── almohanad.z
│ │ │ │ │ ├── arialunicid0.php
│ │ │ │ │ ├── courier.php
│ │ │ │ │ ├── dejavu-fonts-ttf-2.30/
│ │ │ │ │ │ ├── AUTHORS
│ │ │ │ │ │ ├── BUGS
│ │ │ │ │ │ ├── LICENSE
│ │ │ │ │ │ ├── NEWS
│ │ │ │ │ │ ├── README
│ │ │ │ │ │ ├── langcover.txt
│ │ │ │ │ │ ├── status.txt
│ │ │ │ │ │ └── unicover.txt
│ │ │ │ │ ├── dejavusans.ctg.z
│ │ │ │ │ ├── dejavusans.php
│ │ │ │ │ ├── dejavusans.z
│ │ │ │ │ ├── dejavusansb.ctg.z
│ │ │ │ │ ├── dejavusansb.php
│ │ │ │ │ ├── dejavusansb.z
│ │ │ │ │ ├── dejavusansbi.ctg.z
│ │ │ │ │ ├── dejavusansbi.php
│ │ │ │ │ ├── dejavusansbi.z
│ │ │ │ │ ├── dejavusanscondensed.ctg.z
│ │ │ │ │ ├── dejavusanscondensed.php
│ │ │ │ │ ├── dejavusanscondensed.z
│ │ │ │ │ ├── dejavusanscondensedb.ctg.z
│ │ │ │ │ ├── dejavusanscondensedb.php
│ │ │ │ │ ├── dejavusanscondensedb.z
│ │ │ │ │ ├── dejavusanscondensedbi.ctg.z
│ │ │ │ │ ├── dejavusanscondensedbi.php
│ │ │ │ │ ├── dejavusanscondensedbi.z
│ │ │ │ │ ├── dejavusanscondensedi.ctg.z
│ │ │ │ │ ├── dejavusanscondensedi.php
│ │ │ │ │ ├── dejavusanscondensedi.z
│ │ │ │ │ ├── dejavusansi.ctg.z
│ │ │ │ │ ├── dejavusansi.php
│ │ │ │ │ ├── dejavusansi.z
│ │ │ │ │ ├── dejavusansmono.ctg.z
│ │ │ │ │ ├── dejavusansmono.php
│ │ │ │ │ ├── dejavusansmono.z
│ │ │ │ │ ├── dejavusansmonob.ctg.z
│ │ │ │ │ ├── dejavusansmonob.php
│ │ │ │ │ ├── dejavusansmonob.z
│ │ │ │ │ ├── dejavusansmonobi.ctg.z
│ │ │ │ │ ├── dejavusansmonobi.php
│ │ │ │ │ ├── dejavusansmonobi.z
│ │ │ │ │ ├── dejavusansmonoi.ctg.z
│ │ │ │ │ ├── dejavusansmonoi.php
│ │ │ │ │ ├── dejavusansmonoi.z
│ │ │ │ │ ├── dejavuserif.ctg.z
│ │ │ │ │ ├── dejavuserif.php
│ │ │ │ │ ├── dejavuserif.z
│ │ │ │ │ ├── dejavuserifb.ctg.z
│ │ │ │ │ ├── dejavuserifb.php
│ │ │ │ │ ├── dejavuserifb.z
│ │ │ │ │ ├── dejavuserifbi.ctg.z
│ │ │ │ │ ├── dejavuserifbi.php
│ │ │ │ │ ├── dejavuserifbi.z
│ │ │ │ │ ├── dejavuserifcondensed.ctg.z
│ │ │ │ │ ├── dejavuserifcondensed.php
│ │ │ │ │ ├── dejavuserifcondensed.z
│ │ │ │ │ ├── dejavuserifcondensedb.ctg.z
│ │ │ │ │ ├── dejavuserifcondensedb.php
│ │ │ │ │ ├── dejavuserifcondensedb.z
│ │ │ │ │ ├── dejavuserifcondensedbi.ctg.z
│ │ │ │ │ ├── dejavuserifcondensedbi.php
│ │ │ │ │ ├── dejavuserifcondensedbi.z
│ │ │ │ │ ├── dejavuserifcondensedi.ctg.z
│ │ │ │ │ ├── dejavuserifcondensedi.php
│ │ │ │ │ ├── dejavuserifcondensedi.z
│ │ │ │ │ ├── dejavuserifi.ctg.z
│ │ │ │ │ ├── dejavuserifi.php
│ │ │ │ │ ├── dejavuserifi.z
│ │ │ │ │ ├── freefont-20090104/
│ │ │ │ │ │ ├── AUTHORS
│ │ │ │ │ │ ├── COPYING
│ │ │ │ │ │ ├── CREDITS
│ │ │ │ │ │ ├── ChangeLog
│ │ │ │ │ │ ├── INSTALL
│ │ │ │ │ │ └── README
│ │ │ │ │ ├── freemono.ctg.z
│ │ │ │ │ ├── freemono.php
│ │ │ │ │ ├── freemono.z
│ │ │ │ │ ├── freemonob.ctg.z
│ │ │ │ │ ├── freemonob.php
│ │ │ │ │ ├── freemonob.z
│ │ │ │ │ ├── freemonobi.ctg.z
│ │ │ │ │ ├── freemonobi.php
│ │ │ │ │ ├── freemonobi.z
│ │ │ │ │ ├── freemonoi.ctg.z
│ │ │ │ │ ├── freemonoi.php
│ │ │ │ │ ├── freemonoi.z
│ │ │ │ │ ├── freesans.ctg.z
│ │ │ │ │ ├── freesans.php
│ │ │ │ │ ├── freesans.z
│ │ │ │ │ ├── freesansb.ctg.z
│ │ │ │ │ ├── freesansb.php
│ │ │ │ │ ├── freesansb.z
│ │ │ │ │ ├── freesansbi.ctg.z
│ │ │ │ │ ├── freesansbi.php
│ │ │ │ │ ├── freesansbi.z
│ │ │ │ │ ├── freesansi.ctg.z
│ │ │ │ │ ├── freesansi.php
│ │ │ │ │ ├── freesansi.z
│ │ │ │ │ ├── freeserif.ctg.z
│ │ │ │ │ ├── freeserif.php
│ │ │ │ │ ├── freeserif.z
│ │ │ │ │ ├── freeserifb.ctg.z
│ │ │ │ │ ├── freeserifb.php
│ │ │ │ │ ├── freeserifb.z
│ │ │ │ │ ├── freeserifbi.ctg.z
│ │ │ │ │ ├── freeserifbi.php
│ │ │ │ │ ├── freeserifbi.z
│ │ │ │ │ ├── freeserifi.ctg.z
│ │ │ │ │ ├── freeserifi.php
│ │ │ │ │ ├── freeserifi.z
│ │ │ │ │ ├── helvetica.php
│ │ │ │ │ ├── helveticab.php
│ │ │ │ │ ├── helveticabi.php
│ │ │ │ │ ├── helveticai.php
│ │ │ │ │ ├── hysmyeongjostdmedium.php
│ │ │ │ │ ├── kozgopromedium.php
│ │ │ │ │ ├── kozminproregular.php
│ │ │ │ │ ├── msungstdlight.php
│ │ │ │ │ ├── stsongstdlight.php
│ │ │ │ │ ├── symbol.php
│ │ │ │ │ ├── times.php
│ │ │ │ │ ├── timesb.php
│ │ │ │ │ ├── timesbi.php
│ │ │ │ │ ├── timesi.php
│ │ │ │ │ ├── uni2cid_ac15.php
│ │ │ │ │ ├── uni2cid_ag15.php
│ │ │ │ │ ├── uni2cid_aj16.php
│ │ │ │ │ ├── uni2cid_ak12.php
│ │ │ │ │ ├── zapfdingbats.php
│ │ │ │ │ └── zarbold.php
│ │ │ │ ├── htmlcolors.php
│ │ │ │ ├── images/
│ │ │ │ │ └── read_me.txt
│ │ │ │ ├── qrcode.php
│ │ │ │ ├── tcpdf.crt
│ │ │ │ ├── tcpdf.fdf
│ │ │ │ ├── tcpdf.php
│ │ │ │ └── unicode_data.php
│ │ │ ├── html2pdf.class.php
│ │ │ └── locale/
│ │ │ ├── ca.csv
│ │ │ ├── cs.csv
│ │ │ ├── da.csv
│ │ │ ├── de.csv
│ │ │ ├── en.csv
│ │ │ ├── es.csv
│ │ │ ├── fr.csv
│ │ │ ├── it.csv
│ │ │ ├── nl.csv
│ │ │ ├── pt.csv
│ │ │ └── tr.csv
│ │ ├── mime_content_type.php
│ │ ├── pearcmd.php
│ │ ├── peclcmd.php
│ │ ├── smarty/
│ │ │ └── campsite_plugins/
│ │ │ ├── block.assetic.php
│ │ │ ├── block.comment_form.php
│ │ │ ├── block.dynamic.php
│ │ │ ├── block.form_topics.php
│ │ │ ├── block.image.php
│ │ │ ├── block.list_article_attachments.php
│ │ │ ├── block.list_article_authors.php
│ │ │ ├── block.list_article_comments.php
│ │ │ ├── block.list_article_images.php
│ │ │ ├── block.list_article_locations.php
│ │ │ ├── block.list_article_topics.php
│ │ │ ├── block.list_articles.php
│ │ │ ├── block.list_images.php
│ │ │ ├── block.list_issues.php
│ │ │ ├── block.list_languages.php
│ │ │ ├── block.list_map_articles.php
│ │ │ ├── block.list_map_locations.php
│ │ │ ├── block.list_playlist_articles.php
│ │ │ ├── block.list_related_articles.php
│ │ │ ├── block.list_search_results.php
│ │ │ ├── block.list_section_authors.php
│ │ │ ├── block.list_sections.php
│ │ │ ├── block.list_slideshow_items.php
│ │ │ ├── block.list_slideshows.php
│ │ │ ├── block.list_subtitles.php
│ │ │ ├── block.list_subtopics.php
│ │ │ ├── block.list_user_comments.php
│ │ │ ├── block.list_user_topics.php
│ │ │ ├── block.list_users.php
│ │ │ ├── block.local.php
│ │ │ ├── block.login_form.php
│ │ │ ├── block.search_form.php
│ │ │ ├── block.subscription_form.php
│ │ │ ├── block.tr.php
│ │ │ ├── block.user_form.php
│ │ │ ├── cacheresource.newscoop.php
│ │ │ ├── function.article_pdf.php
│ │ │ ├── function.breadcrumb.php
│ │ │ ├── function.calendar.php
│ │ │ ├── function.camp_edit.php
│ │ │ ├── function.camp_select.php
│ │ │ ├── function.captcha_image_link.php
│ │ │ ├── function.count.php
│ │ │ ├── function.disable_html_encoding.php
│ │ │ ├── function.enable_html_encoding.php
│ │ │ ├── function.form_hidden.php
│ │ │ ├── function.form_register.php
│ │ │ ├── function.form_submit.php
│ │ │ ├── function.form_text.php
│ │ │ ├── function.formparameters.php
│ │ │ ├── function.generate_edit_uri.php
│ │ │ ├── function.generate_url.php
│ │ │ ├── function.get_request_param.php
│ │ │ ├── function.get_resource_id.php
│ │ │ ├── function.link_follow_topic.php
│ │ │ ├── function.listpagination.php
│ │ │ ├── function.map.php
│ │ │ ├── function.omnibox.php
│ │ │ ├── function.render.php
│ │ │ ├── function.set_article.php
│ │ │ ├── function.set_current_issue.php
│ │ │ ├── function.set_default_article.php
│ │ │ ├── function.set_default_issue.php
│ │ │ ├── function.set_default_language.php
│ │ │ ├── function.set_default_publication.php
│ │ │ ├── function.set_default_section.php
│ │ │ ├── function.set_default_topic.php
│ │ │ ├── function.set_http_response_code.php
│ │ │ ├── function.set_issue.php
│ │ │ ├── function.set_language.php
│ │ │ ├── function.set_map.php
│ │ │ ├── function.set_placeholder.php
│ │ │ ├── function.set_publication.php
│ │ │ ├── function.set_section.php
│ │ │ ├── function.set_topic.php
│ │ │ ├── function.unset_article.php
│ │ │ ├── function.unset_comment.php
│ │ │ ├── function.unset_issue.php
│ │ │ ├── function.unset_language.php
│ │ │ ├── function.unset_map.php
│ │ │ ├── function.unset_publication.php
│ │ │ ├── function.unset_section.php
│ │ │ ├── function.unset_topic.php
│ │ │ ├── function.uri.php
│ │ │ ├── function.uripath.php
│ │ │ ├── function.url.php
│ │ │ ├── function.urlparameters.php
│ │ │ ├── function.video_player.php
│ │ │ ├── function.wrap_in_element.php
│ │ │ ├── modifier.bbcode.php
│ │ │ ├── modifier.camp_date_format.php
│ │ │ ├── modifier.camp_filesize_format.php
│ │ │ ├── modifier.create_links.php
│ │ │ ├── modifier.dump.php
│ │ │ ├── modifier.obfuscate_email.php
│ │ │ ├── modifier.teaser.php
│ │ │ ├── modifier.translate.php
│ │ │ └── modifier.truncate_utf8.php
│ │ └── versions.txt
│ ├── index.php
│ ├── install/
│ │ ├── .htaccess
│ │ ├── Resources/
│ │ │ ├── assets/
│ │ │ │ └── css/
│ │ │ │ └── main.css
│ │ │ ├── sample_data/
│ │ │ │ └── files/
│ │ │ │ ├── 0000/
│ │ │ │ │ └── 0000/
│ │ │ │ │ ├── 000000007.oga
│ │ │ │ │ ├── 000000008.flv
│ │ │ │ │ ├── 000000009.flv
│ │ │ │ │ └── 000000010.ogv
│ │ │ │ └── placeholder
│ │ │ ├── sql/
│ │ │ │ ├── CityLocations.csv
│ │ │ │ ├── CityNames.csv
│ │ │ │ ├── campsite_core.sql
│ │ │ │ ├── campsite_demo_data.sql
│ │ │ │ ├── geonames.sql
│ │ │ │ └── upgrade/
│ │ │ │ ├── 4.2.x/
│ │ │ │ │ ├── 2013-02-19/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2013.03.06/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2013.05.06/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2013.05.28/
│ │ │ │ │ │ ├── move_files.php
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2013.05.29/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ └── 2013.06.13/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 4.3.x/
│ │ │ │ │ ├── 2013.08.20/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2013.11.21/
│ │ │ │ │ │ ├── data-required.sql
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2013.12.16/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.01.11/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.01.13/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.01.14/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.01.21/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.01.24/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.02.07/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.02.11/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.03.04/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.03.10/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.03.12/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.04.11/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.05.09/
│ │ │ │ │ │ └── data-required.sql
│ │ │ │ │ ├── 2014.05.13/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.05.21/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.06.06/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.06.10/
│ │ │ │ │ │ ├── data-required.sql
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.06.11/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.06.12/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.07.21/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.07.28/
│ │ │ │ │ │ └── data-required.sql
│ │ │ │ │ ├── 2014.07.29/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.07.30/
│ │ │ │ │ │ ├── cronjobs.php
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.08.11/
│ │ │ │ │ │ ├── data-required.sql
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.09.22/
│ │ │ │ │ │ ├── auto_delete_diff.txt
│ │ │ │ │ │ ├── delete_diff.txt
│ │ │ │ │ │ ├── tables.sql
│ │ │ │ │ │ └── upgrade.php
│ │ │ │ │ ├── 2014.09.23/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.09.24/
│ │ │ │ │ │ ├── plugins.php
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.09.25/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.10.14/
│ │ │ │ │ │ ├── htaccess.php
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2014.10.16/
│ │ │ │ │ │ └── data-required.sql
│ │ │ │ │ ├── 2014.12.01/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ ├── 2015.01.21/
│ │ │ │ │ │ └── tables.sql
│ │ │ │ │ └── 2015.03.23/
│ │ │ │ │ └── data-required.sql
│ │ │ │ └── 4.4.x/
│ │ │ │ ├── 2014.11.05/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2014.11.17/
│ │ │ │ │ ├── data-required.sql
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2014.11.22/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2014.12.02/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2014.12.17/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.02.12/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.02.19/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.02.24/
│ │ │ │ │ ├── add_client.php
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.03.02/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.03.11/
│ │ │ │ │ ├── data-required.sql
│ │ │ │ │ ├── tables.sql
│ │ │ │ │ └── topics.php
│ │ │ │ ├── 2015.03.12/
│ │ │ │ │ ├── authors.php
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.03.13/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.03.14/
│ │ │ │ │ ├── delete.php
│ │ │ │ │ ├── diff.txt
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.03.18/
│ │ │ │ │ └── data-required.sql
│ │ │ │ ├── 2015.03.19/
│ │ │ │ │ ├── init_order_in_playlists.php
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.04.13/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.04.15/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.04.16/
│ │ │ │ │ ├── data-required.sql
│ │ │ │ │ ├── playlist.php
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.04.21/
│ │ │ │ │ ├── delete.php
│ │ │ │ │ ├── diff.txt
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.05.07/
│ │ │ │ │ ├── client.php
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.05.15/
│ │ │ │ │ └── data-required.sql
│ │ │ │ ├── 2015.05.16/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.05.28/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.06.03/
│ │ │ │ │ ├── playlist_article.php
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.06.08/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.06.09/
│ │ │ │ │ ├── remove_index.php
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.06.15/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.06.16/
│ │ │ │ │ ├── data-required.sql
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.06.24/
│ │ │ │ │ ├── data-required.sql
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.06.30/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.08.10/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.08.24/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2015.09.11/
│ │ │ │ │ └── data-required.sql
│ │ │ │ ├── 2015.09.15/
│ │ │ │ │ └── data-required.sql
│ │ │ │ ├── 2015.10.15/
│ │ │ │ │ ├── data-required.sql
│ │ │ │ │ ├── tables.sql
│ │ │ │ │ └── topic_translations.php
│ │ │ │ ├── 2015.10.29/
│ │ │ │ │ └── tables.sql
│ │ │ │ ├── 2016.03.30/
│ │ │ │ │ └── tables.sql
│ │ │ │ └── 2016.05.04/
│ │ │ │ └── tables.sql
│ │ │ ├── templates/
│ │ │ │ ├── _configuration.twig
│ │ │ │ └── _database_conf.twig
│ │ │ └── views/
│ │ │ ├── botstrap_errors.twig
│ │ │ ├── demo.twig
│ │ │ ├── index.twig
│ │ │ ├── layout.twig
│ │ │ ├── license.twig
│ │ │ ├── post-process.twig
│ │ │ ├── prepare.twig
│ │ │ ├── process.twig
│ │ │ ├── upgrade/
│ │ │ │ ├── errors.twig
│ │ │ │ └── success.twig
│ │ │ └── upgrade_layout.twig
│ │ ├── SymfonyRequirements.php
│ │ └── index.php
│ ├── js/
│ │ ├── admin.js
│ │ ├── app/
│ │ │ ├── .htaccess
│ │ │ ├── 404.js
│ │ │ └── admin/
│ │ │ ├── _shared.js
│ │ │ └── themes/
│ │ │ ├── advanced-theme-settings.js
│ │ │ └── index.js
│ │ ├── apps/
│ │ │ └── users.js
│ │ ├── backbone.js
│ │ ├── base64.js
│ │ ├── bootstrap.js
│ │ ├── campsite-audiosearch.js
│ │ ├── campsite-checkbox.js
│ │ ├── campsite.js
│ │ ├── crypt.js
│ │ ├── domTT/
│ │ │ ├── .ant-targets-build.xml
│ │ │ ├── AUTHORS
│ │ │ ├── LICENSE
│ │ │ ├── alphaAPI.js
│ │ │ ├── domLib.js
│ │ │ ├── domTT.js
│ │ │ ├── domTT_drag.js
│ │ │ └── fadomatic.js
│ │ ├── editarea/
│ │ │ ├── change_log.txt
│ │ │ ├── edit_area/
│ │ │ │ ├── autocompletion.js
│ │ │ │ ├── edit_area.css
│ │ │ │ ├── edit_area.js
│ │ │ │ ├── edit_area_compressor.php
│ │ │ │ ├── edit_area_full.js
│ │ │ │ ├── edit_area_functions.js
│ │ │ │ ├── edit_area_loader.js
│ │ │ │ ├── elements_functions.js
│ │ │ │ ├── highlight.js
│ │ │ │ ├── keyboard.js
│ │ │ │ ├── langs/
│ │ │ │ │ ├── bg.js
│ │ │ │ │ ├── cs.js
│ │ │ │ │ ├── de.js
│ │ │ │ │ ├── dk.js
│ │ │ │ │ ├── en.js
│ │ │ │ │ ├── eo.js
│ │ │ │ │ ├── es.js
│ │ │ │ │ ├── fi.js
│ │ │ │ │ ├── fr.js
│ │ │ │ │ ├── hr.js
│ │ │ │ │ ├── it.js
│ │ │ │ │ ├── ja.js
│ │ │ │ │ ├── mk.js
│ │ │ │ │ ├── nl.js
│ │ │ │ │ ├── pl.js
│ │ │ │ │ ├── pt.js
│ │ │ │ │ ├── ru.js
│ │ │ │ │ ├── sk.js
│ │ │ │ │ └── zh.js
│ │ │ │ ├── license_apache.txt
│ │ │ │ ├── license_bsd.txt
│ │ │ │ ├── license_lgpl.txt
│ │ │ │ ├── manage_area.js
│ │ │ │ ├── plugins/
│ │ │ │ │ ├── charmap/
│ │ │ │ │ │ ├── charmap.js
│ │ │ │ │ │ ├── css/
│ │ │ │ │ │ │ └── charmap.css
│ │ │ │ │ │ ├── jscripts/
│ │ │ │ │ │ │ └── map.js
│ │ │ │ │ │ ├── langs/
│ │ │ │ │ │ │ ├── bg.js
│ │ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ │ ├── dk.js
│ │ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ │ ├── eo.js
│ │ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ │ ├── ja.js
│ │ │ │ │ │ │ ├── mk.js
│ │ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ │ ├── sk.js
│ │ │ │ │ │ │ └── zh.js
│ │ │ │ │ │ └── popup.html
│ │ │ │ │ └── test/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── test.css
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── bg.js
│ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ ├── dk.js
│ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ ├── eo.js
│ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ ├── ja.js
│ │ │ │ │ │ ├── mk.js
│ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ ├── sk.js
│ │ │ │ │ │ └── zh.js
│ │ │ │ │ ├── test.js
│ │ │ │ │ └── test2.js
│ │ │ │ ├── reg_syntax/
│ │ │ │ │ ├── basic.js
│ │ │ │ │ ├── brainfuck.js
│ │ │ │ │ ├── c.js
│ │ │ │ │ ├── coldfusion.js
│ │ │ │ │ ├── cpp.js
│ │ │ │ │ ├── css.js
│ │ │ │ │ ├── html.js
│ │ │ │ │ ├── java.js
│ │ │ │ │ ├── js.js
│ │ │ │ │ ├── pas.js
│ │ │ │ │ ├── perl.js
│ │ │ │ │ ├── php.js
│ │ │ │ │ ├── python.js
│ │ │ │ │ ├── robotstxt.js
│ │ │ │ │ ├── ruby.js
│ │ │ │ │ ├── smarty.js
│ │ │ │ │ ├── sql.js
│ │ │ │ │ ├── tsql.js
│ │ │ │ │ ├── vb.js
│ │ │ │ │ └── xml.js
│ │ │ │ ├── reg_syntax.js
│ │ │ │ ├── regexp.js
│ │ │ │ ├── resize_area.js
│ │ │ │ ├── search_replace.js
│ │ │ │ └── template.html
│ │ │ ├── license_apache.txt
│ │ │ ├── license_bsd.txt
│ │ │ ├── license_lgpl.txt
│ │ │ ├── smarty.js
│ │ │ └── todo.txt
│ │ ├── fValidate/
│ │ │ ├── fValidate.basic.js
│ │ │ ├── fValidate.config.js
│ │ │ ├── fValidate.controls.js
│ │ │ ├── fValidate.core.js
│ │ │ ├── fValidate.datetime.js
│ │ │ ├── fValidate.ecommerce.js
│ │ │ ├── fValidate.extended.js
│ │ │ ├── fValidate.international.js
│ │ │ ├── fValidate.lang-enUS.js
│ │ │ ├── fValidate.logical.js
│ │ │ ├── fValidate.numbers.js
│ │ │ ├── fValidate.special.js
│ │ │ ├── fValidate.validators.js
│ │ │ ├── fValidate.web.js
│ │ │ └── readme.txt
│ │ ├── flowplayer/
│ │ │ ├── LICENSE.txt
│ │ │ ├── README.txt
│ │ │ ├── example/
│ │ │ │ ├── index.html
│ │ │ │ └── style.css
│ │ │ ├── flowplayer-3.2.5.swf
│ │ │ └── flowplayer.controls-3.2.3.swf
│ │ ├── geocoding/
│ │ │ ├── country_cens.js
│ │ │ ├── country_codes.js
│ │ │ ├── geonames/
│ │ │ │ ├── notice.txt
│ │ │ │ └── search.js
│ │ │ ├── location_chooser.js
│ │ │ ├── map_filter.js
│ │ │ ├── map_popups.js
│ │ │ ├── map_preview.js
│ │ │ ├── map_search.js
│ │ │ ├── markers/
│ │ │ │ ├── marker-blue.ini
│ │ │ │ ├── marker-gold.ini
│ │ │ │ ├── marker-green.ini
│ │ │ │ ├── marker-red.ini
│ │ │ │ └── special/
│ │ │ │ └── unknown.ini
│ │ │ ├── openlayers/
│ │ │ │ ├── OLlocals.js
│ │ │ │ ├── OpenLayers.js
│ │ │ │ ├── license.txt
│ │ │ │ └── theme/
│ │ │ │ └── default/
│ │ │ │ ├── framedCloud.css
│ │ │ │ ├── google.css
│ │ │ │ ├── ie6-style.css
│ │ │ │ └── style.css
│ │ │ └── styles/
│ │ │ └── map-info.css
│ │ ├── jquery/
│ │ │ ├── doT.js
│ │ │ ├── fancybox/
│ │ │ │ ├── jquery.fancybox-1.3.4.css
│ │ │ │ └── jquery.fancybox-1.3.4.pack.js
│ │ │ ├── feedback.js
│ │ │ ├── fg.menu.js
│ │ │ ├── i18n/
│ │ │ │ ├── index.html
│ │ │ │ ├── jquery.ui.datepicker-af.js
│ │ │ │ ├── jquery.ui.datepicker-ar.js
│ │ │ │ ├── jquery.ui.datepicker-az.js
│ │ │ │ ├── jquery.ui.datepicker-bg.js
│ │ │ │ ├── jquery.ui.datepicker-bs.js
│ │ │ │ ├── jquery.ui.datepicker-ca.js
│ │ │ │ ├── jquery.ui.datepicker-cs.js
│ │ │ │ ├── jquery.ui.datepicker-da.js
│ │ │ │ ├── jquery.ui.datepicker-de-CH.js
│ │ │ │ ├── jquery.ui.datepicker-de.js
│ │ │ │ ├── jquery.ui.datepicker-el.js
│ │ │ │ ├── jquery.ui.datepicker-en-GB.js
│ │ │ │ ├── jquery.ui.datepicker-en.js
│ │ │ │ ├── jquery.ui.datepicker-eo.js
│ │ │ │ ├── jquery.ui.datepicker-es.js
│ │ │ │ ├── jquery.ui.datepicker-et.js
│ │ │ │ ├── jquery.ui.datepicker-eu.js
│ │ │ │ ├── jquery.ui.datepicker-fa.js
│ │ │ │ ├── jquery.ui.datepicker-fi.js
│ │ │ │ ├── jquery.ui.datepicker-fo.js
│ │ │ │ ├── jquery.ui.datepicker-fr-CH.js
│ │ │ │ ├── jquery.ui.datepicker-fr.js
│ │ │ │ ├── jquery.ui.datepicker-he.js
│ │ │ │ ├── jquery.ui.datepicker-hr.js
│ │ │ │ ├── jquery.ui.datepicker-hu.js
│ │ │ │ ├── jquery.ui.datepicker-hy.js
│ │ │ │ ├── jquery.ui.datepicker-id.js
│ │ │ │ ├── jquery.ui.datepicker-is.js
│ │ │ │ ├── jquery.ui.datepicker-it.js
│ │ │ │ ├── jquery.ui.datepicker-ja.js
│ │ │ │ ├── jquery.ui.datepicker-ka.js
│ │ │ │ ├── jquery.ui.datepicker-ko.js
│ │ │ │ ├── jquery.ui.datepicker-lt.js
│ │ │ │ ├── jquery.ui.datepicker-lv.js
│ │ │ │ ├── jquery.ui.datepicker-ms.js
│ │ │ │ ├── jquery.ui.datepicker-nl-BE.js
│ │ │ │ ├── jquery.ui.datepicker-nl.js
│ │ │ │ ├── jquery.ui.datepicker-no.js
│ │ │ │ ├── jquery.ui.datepicker-pl.js
│ │ │ │ ├── jquery.ui.datepicker-pt-BR.js
│ │ │ │ ├── jquery.ui.datepicker-pt.js
│ │ │ │ ├── jquery.ui.datepicker-ro.js
│ │ │ │ ├── jquery.ui.datepicker-ru.js
│ │ │ │ ├── jquery.ui.datepicker-sk.js
│ │ │ │ ├── jquery.ui.datepicker-sl.js
│ │ │ │ ├── jquery.ui.datepicker-sq.js
│ │ │ │ ├── jquery.ui.datepicker-sr-SR.js
│ │ │ │ ├── jquery.ui.datepicker-sr.js
│ │ │ │ ├── jquery.ui.datepicker-sv.js
│ │ │ │ ├── jquery.ui.datepicker-ta.js
│ │ │ │ ├── jquery.ui.datepicker-th.js
│ │ │ │ ├── jquery.ui.datepicker-tr.js
│ │ │ │ ├── jquery.ui.datepicker-uk.js
│ │ │ │ ├── jquery.ui.datepicker-vi.js
│ │ │ │ ├── jquery.ui.datepicker-zh-CN.js
│ │ │ │ ├── jquery.ui.datepicker-zh-HK.js
│ │ │ │ └── jquery.ui.datepicker-zh-TW.js
│ │ │ ├── jCountable/
│ │ │ │ ├── jquery.jCountable.css
│ │ │ │ └── jquery.jCountable.js
│ │ │ ├── jquery-ui-required.txt
│ │ │ ├── jquery.ba-iff.js
│ │ │ ├── jquery.cookie.js
│ │ │ ├── jquery.tmpl.js
│ │ │ ├── jquery.version.js
│ │ │ └── jquery.widgets.js
│ │ ├── json2.js
│ │ ├── newscoop_rest_api.js
│ │ ├── omnibox.js
│ │ ├── plupload/
│ │ │ ├── changelog.txt
│ │ │ ├── js/
│ │ │ │ ├── jquery.plupload.queue/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── jquery.plupload.queue.css
│ │ │ │ │ └── jquery.plupload.queue.js
│ │ │ │ ├── jquery.ui.plupload/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── jquery.ui.plupload.css
│ │ │ │ │ └── jquery.ui.plupload.js
│ │ │ │ ├── plupload.browserplus.js
│ │ │ │ ├── plupload.flash.js
│ │ │ │ ├── plupload.flash.swf
│ │ │ │ ├── plupload.full.js
│ │ │ │ ├── plupload.gears.js
│ │ │ │ ├── plupload.html4.js
│ │ │ │ ├── plupload.html5.js
│ │ │ │ ├── plupload.js
│ │ │ │ ├── plupload.silverlight.js
│ │ │ │ └── plupload.silverlight.xap
│ │ │ ├── license.txt
│ │ │ └── readme.md
│ │ ├── raphael-min.js
│ │ ├── scriptaculous/
│ │ │ ├── controls.js
│ │ │ ├── dragdrop.js
│ │ │ ├── effects.js
│ │ │ ├── prototype.js
│ │ │ ├── scriptaculous.js
│ │ │ ├── unittest.js
│ │ │ └── util.js
│ │ ├── select2/
│ │ │ ├── select2.css
│ │ │ └── select2.js
│ │ ├── sha1.js
│ │ ├── syntaxhighlighter/
│ │ │ ├── compass/
│ │ │ │ ├── _theme_template.scss
│ │ │ │ ├── config.rb
│ │ │ │ ├── shCore.scss
│ │ │ │ ├── shCoreDefault.scss
│ │ │ │ ├── shCoreDjango.scss
│ │ │ │ ├── shCoreEclipse.scss
│ │ │ │ ├── shCoreEmacs.scss
│ │ │ │ ├── shCoreFadeToGrey.scss
│ │ │ │ ├── shCoreMDUltra.scss
│ │ │ │ ├── shCoreMidnight.scss
│ │ │ │ ├── shCoreRDark.scss
│ │ │ │ ├── shThemeDefault.scss
│ │ │ │ ├── shThemeDjango.scss
│ │ │ │ ├── shThemeEclipse.scss
│ │ │ │ ├── shThemeEmacs.scss
│ │ │ │ ├── shThemeFadeToGrey.scss
│ │ │ │ ├── shThemeMDUltra.scss
│ │ │ │ ├── shThemeMidnight.scss
│ │ │ │ └── shThemeRDark.scss
│ │ │ ├── scripts/
│ │ │ │ ├── shAutoloader.js
│ │ │ │ ├── shBrushAS3.js
│ │ │ │ ├── shBrushAppleScript.js
│ │ │ │ ├── shBrushBash.js
│ │ │ │ ├── shBrushCSharp.js
│ │ │ │ ├── shBrushColdFusion.js
│ │ │ │ ├── shBrushCpp.js
│ │ │ │ ├── shBrushCss.js
│ │ │ │ ├── shBrushDelphi.js
│ │ │ │ ├── shBrushDiff.js
│ │ │ │ ├── shBrushErlang.js
│ │ │ │ ├── shBrushGroovy.js
│ │ │ │ ├── shBrushJScript.js
│ │ │ │ ├── shBrushJava.js
│ │ │ │ ├── shBrushJavaFX.js
│ │ │ │ ├── shBrushPerl.js
│ │ │ │ ├── shBrushPhp.js
│ │ │ │ ├── shBrushPlain.js
│ │ │ │ ├── shBrushPowerShell.js
│ │ │ │ ├── shBrushPython.js
│ │ │ │ ├── shBrushRuby.js
│ │ │ │ ├── shBrushSass.js
│ │ │ │ ├── shBrushScala.js
│ │ │ │ ├── shBrushSql.js
│ │ │ │ ├── shBrushVb.js
│ │ │ │ ├── shBrushXml.js
│ │ │ │ ├── shCore.js
│ │ │ │ └── shLegacy.js
│ │ │ ├── src/
│ │ │ │ ├── shAutoloader.js
│ │ │ │ ├── shCore.js
│ │ │ │ └── shLegacy.js
│ │ │ └── styles/
│ │ │ ├── shCore.css
│ │ │ ├── shCoreDefault.css
│ │ │ ├── shCoreDjango.css
│ │ │ ├── shCoreEclipse.css
│ │ │ ├── shCoreEmacs.css
│ │ │ ├── shCoreFadeToGrey.css
│ │ │ ├── shCoreMDUltra.css
│ │ │ ├── shCoreMidnight.css
│ │ │ ├── shCoreRDark.css
│ │ │ ├── shThemeDefault.css
│ │ │ ├── shThemeDjango.css
│ │ │ ├── shThemeEclipse.css
│ │ │ ├── shThemeEmacs.css
│ │ │ ├── shThemeFadeToGrey.css
│ │ │ ├── shThemeMDUltra.css
│ │ │ ├── shThemeMidnight.css
│ │ │ └── shThemeRDark.css
│ │ ├── tapmodo-Jcrop-5e58bc9/
│ │ │ ├── MIT-LICENSE.txt
│ │ │ ├── build/
│ │ │ │ ├── LICENSE
│ │ │ │ ├── README
│ │ │ │ ├── minimize.bash
│ │ │ │ └── pre-commit.bash
│ │ │ ├── css/
│ │ │ │ └── jquery.Jcrop.css
│ │ │ ├── demos/
│ │ │ │ ├── crop.php
│ │ │ │ ├── demo_files/
│ │ │ │ │ └── demos.css
│ │ │ │ ├── tutorial1.html
│ │ │ │ ├── tutorial2.html
│ │ │ │ ├── tutorial3.html
│ │ │ │ ├── tutorial4.html
│ │ │ │ └── tutorial5.html
│ │ │ ├── index.html
│ │ │ └── js/
│ │ │ ├── jquery.Jcrop.js
│ │ │ └── jquery.color.js
│ │ ├── tinymce/
│ │ │ ├── jquery.tinymce.js
│ │ │ ├── langs/
│ │ │ │ ├── ar.js
│ │ │ │ ├── az.js
│ │ │ │ ├── be.js
│ │ │ │ ├── cs.js
│ │ │ │ ├── da.js
│ │ │ │ ├── de.js
│ │ │ │ ├── el.js
│ │ │ │ ├── en.js
│ │ │ │ ├── es.js
│ │ │ │ ├── fr.js
│ │ │ │ ├── he.js
│ │ │ │ ├── hr.js
│ │ │ │ ├── hu.js
│ │ │ │ ├── hy.js
│ │ │ │ ├── it.js
│ │ │ │ ├── ka.js
│ │ │ │ ├── ko.js
│ │ │ │ ├── nb.js
│ │ │ │ ├── nl.js
│ │ │ │ ├── pl.js
│ │ │ │ ├── pt.js
│ │ │ │ ├── ro.js
│ │ │ │ ├── ru.js
│ │ │ │ ├── sr.js
│ │ │ │ ├── sv.js
│ │ │ │ ├── tr.js
│ │ │ │ ├── uk.js
│ │ │ │ ├── zh-tw.js
│ │ │ │ └── zh.js
│ │ │ ├── license.txt
│ │ │ ├── plugins/
│ │ │ │ ├── advhr/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── advhr.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── rule.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ └── rule.htm
│ │ │ │ ├── advimage/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── advimage.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── image.htm
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── image.js
│ │ │ │ │ └── langs/
│ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ └── zh_dlg.js
│ │ │ │ ├── advlink/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── advlink.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── advlink.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ └── link.htm
│ │ │ │ ├── advlist/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── autolink/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── autoresize/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── autosave/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ └── langs/
│ │ │ │ │ └── en.js
│ │ │ │ ├── bbcode/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── campsiteattachment/
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ ├── dialog.js
│ │ │ │ │ │ ├── images.js
│ │ │ │ │ │ ├── manager.js
│ │ │ │ │ │ └── popup.js
│ │ │ │ │ ├── attachments.php
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ ├── AttachmentManager.php
│ │ │ │ │ │ └── Files.php
│ │ │ │ │ ├── config.inc.php
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── attachmentlist.css
│ │ │ │ │ │ └── campsiteattachment.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── campsiteattachment.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az.js
│ │ │ │ │ │ ├── be.js
│ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da.js
│ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka.js
│ │ │ │ │ │ ├── ko.js
│ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ └── zh.js
│ │ │ │ │ └── popup.php
│ │ │ │ ├── campsitebreak/
│ │ │ │ │ ├── campsitebreak.htm
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── campsitebreak.js
│ │ │ │ │ └── langs/
│ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ └── sr_dlg.js
│ │ │ │ ├── campsiteimage/
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ ├── dialog.js
│ │ │ │ │ │ ├── images.js
│ │ │ │ │ │ ├── manager.js
│ │ │ │ │ │ └── popup.js
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ ├── Files.php
│ │ │ │ │ │ └── ImageManager.php
│ │ │ │ │ ├── config.inc.php
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── campsiteimage.css
│ │ │ │ │ │ ├── campsiteinternallink.css
│ │ │ │ │ │ └── imagelist.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── images.php
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── campsiteimage.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ └── popup.php
│ │ │ │ ├── campsiteinternallink/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── campsiteinternallink.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── campsiteinternallink.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ ├── zh.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ └── link.php
│ │ │ │ ├── campsitemedia/
│ │ │ │ │ ├── assets/
│ │ │ │ │ │ ├── dialog.js
│ │ │ │ │ │ ├── images.js
│ │ │ │ │ │ ├── manager.js
│ │ │ │ │ │ └── popup.js
│ │ │ │ │ ├── attachments.php
│ │ │ │ │ ├── classes/
│ │ │ │ │ │ ├── AttachmentManager.php
│ │ │ │ │ │ └── Files.php
│ │ │ │ │ ├── config.inc.php
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── attachmentlist.css
│ │ │ │ │ │ └── campsitemedia.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── campsitemedia.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ └── sr_dlg.js
│ │ │ │ │ └── popup.php
│ │ │ │ ├── codehighlighting/
│ │ │ │ │ ├── codehighlighting.htm
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── codehighlighting.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── codehighlighting.js
│ │ │ │ │ └── langs/
│ │ │ │ │ ├── ar.js
│ │ │ │ │ ├── az.js
│ │ │ │ │ ├── be.js
│ │ │ │ │ ├── cs.js
│ │ │ │ │ ├── da.js
│ │ │ │ │ ├── de.js
│ │ │ │ │ ├── el.js
│ │ │ │ │ ├── en.js
│ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ ├── es.js
│ │ │ │ │ ├── fr.js
│ │ │ │ │ ├── he.js
│ │ │ │ │ ├── hr.js
│ │ │ │ │ ├── hu.js
│ │ │ │ │ ├── it.js
│ │ │ │ │ ├── ka.js
│ │ │ │ │ ├── ko.js
│ │ │ │ │ ├── nl.js
│ │ │ │ │ ├── pl.js
│ │ │ │ │ ├── pt.js
│ │ │ │ │ ├── ro.js
│ │ │ │ │ ├── ru.js
│ │ │ │ │ ├── sr.js
│ │ │ │ │ ├── sv.js
│ │ │ │ │ ├── tr.js
│ │ │ │ │ ├── uk.js
│ │ │ │ │ ├── zh.js
│ │ │ │ │ └── zh_TW.js
│ │ │ │ ├── contextmenu/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── directionality/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── emotions/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── emotions.htm
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── emotions.js
│ │ │ │ │ └── langs/
│ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ └── zh_dlg.js
│ │ │ │ ├── example/
│ │ │ │ │ ├── dialog.htm
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── dialog.js
│ │ │ │ │ └── langs/
│ │ │ │ │ ├── en.js
│ │ │ │ │ └── en_dlg.js
│ │ │ │ ├── example_dependency/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── fullpage/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── fullpage.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── fullpage.htm
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── fullpage.js
│ │ │ │ │ └── langs/
│ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ └── zh_dlg.js
│ │ │ │ ├── fullscreen/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ └── fullscreen.htm
│ │ │ │ ├── iespell/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── iframe/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ ├── az.js
│ │ │ │ │ │ ├── be.js
│ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ ├── da.js
│ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ ├── ka.js
│ │ │ │ │ │ ├── ko.js
│ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ ├── ro.js
│ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ ├── sr.js
│ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ ├── zh.js
│ │ │ │ │ │ └── zh_TW.js
│ │ │ │ │ └── window.html
│ │ │ │ ├── inlinepopups/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── skins/
│ │ │ │ │ │ └── clearlooks2/
│ │ │ │ │ │ └── window.css
│ │ │ │ │ └── template.htm
│ │ │ │ ├── insertdatetime/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── layer/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── legacyoutput/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── lists/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── media/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── media.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── embed.js
│ │ │ │ │ │ └── media.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ ├── media.htm
│ │ │ │ │ └── moxieplayer.swf
│ │ │ │ ├── nonbreaking/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── noneditable/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── pagebreak/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── paste/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── pastetext.js
│ │ │ │ │ │ └── pasteword.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ ├── pastetext.htm
│ │ │ │ │ └── pasteword.htm
│ │ │ │ ├── preview/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── example.html
│ │ │ │ │ ├── jscripts/
│ │ │ │ │ │ └── embed.js
│ │ │ │ │ └── preview.html
│ │ │ │ ├── print/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── save/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── searchreplace/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── searchreplace.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── searchreplace.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ └── searchreplace.htm
│ │ │ │ ├── spellchecker/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── content.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── style/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── props.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── props.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ └── props.htm
│ │ │ │ ├── tabfocus/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── table/
│ │ │ │ │ ├── cell.htm
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── cell.css
│ │ │ │ │ │ ├── row.css
│ │ │ │ │ │ └── table.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── cell.js
│ │ │ │ │ │ ├── merge_cells.js
│ │ │ │ │ │ ├── row.js
│ │ │ │ │ │ └── table.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ ├── merge_cells.htm
│ │ │ │ │ ├── row.htm
│ │ │ │ │ └── table.htm
│ │ │ │ ├── template/
│ │ │ │ │ ├── blank.htm
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── template.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── editor_plugin_src.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── template.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ └── template.htm
│ │ │ │ ├── textbox/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── textbox.css
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ ├── js/
│ │ │ │ │ │ └── textbox.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ ├── az.js
│ │ │ │ │ │ ├── be.js
│ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ ├── da.js
│ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ ├── hy.js
│ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ ├── ka.js
│ │ │ │ │ │ ├── ko.js
│ │ │ │ │ │ ├── nb.js
│ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ ├── ro.js
│ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ ├── sr.js
│ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ ├── zh-tw.js
│ │ │ │ │ │ └── zh.js
│ │ │ │ │ └── textbox.htm
│ │ │ │ ├── visualchars/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ ├── wordcount/
│ │ │ │ │ ├── editor_plugin.js
│ │ │ │ │ └── editor_plugin_src.js
│ │ │ │ └── xhtmlxtras/
│ │ │ │ ├── abbr.htm
│ │ │ │ ├── acronym.htm
│ │ │ │ ├── attributes.htm
│ │ │ │ ├── cite.htm
│ │ │ │ ├── css/
│ │ │ │ │ ├── attributes.css
│ │ │ │ │ └── popup.css
│ │ │ │ ├── del.htm
│ │ │ │ ├── editor_plugin.js
│ │ │ │ ├── editor_plugin_src.js
│ │ │ │ ├── ins.htm
│ │ │ │ ├── js/
│ │ │ │ │ ├── abbr.js
│ │ │ │ │ ├── acronym.js
│ │ │ │ │ ├── attributes.js
│ │ │ │ │ ├── cite.js
│ │ │ │ │ ├── del.js
│ │ │ │ │ ├── element_common.js
│ │ │ │ │ └── ins.js
│ │ │ │ └── langs/
│ │ │ │ ├── ar_dlg.js
│ │ │ │ ├── az_dlg.js
│ │ │ │ ├── be_dlg.js
│ │ │ │ ├── cs_dlg.js
│ │ │ │ ├── da_dlg.js
│ │ │ │ ├── de_dlg.js
│ │ │ │ ├── el_dlg.js
│ │ │ │ ├── en_dlg.js
│ │ │ │ ├── es_dlg.js
│ │ │ │ ├── fr_dlg.js
│ │ │ │ ├── he_dlg.js
│ │ │ │ ├── hr_dlg.js
│ │ │ │ ├── hu_dlg.js
│ │ │ │ ├── hy_dlg.js
│ │ │ │ ├── it_dlg.js
│ │ │ │ ├── ka_dlg.js
│ │ │ │ ├── ko_dlg.js
│ │ │ │ ├── nb_dlg.js
│ │ │ │ ├── nl_dlg.js
│ │ │ │ ├── pl_dlg.js
│ │ │ │ ├── pt_dlg.js
│ │ │ │ ├── ro_dlg.js
│ │ │ │ ├── ru_dlg.js
│ │ │ │ ├── sr_dlg.js
│ │ │ │ ├── sv_dlg.js
│ │ │ │ ├── tr_dlg.js
│ │ │ │ ├── uk_dlg.js
│ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ └── zh_dlg.js
│ │ │ ├── themes/
│ │ │ │ ├── advanced/
│ │ │ │ │ ├── about.htm
│ │ │ │ │ ├── anchor.htm
│ │ │ │ │ ├── charmap.htm
│ │ │ │ │ ├── color_picker.htm
│ │ │ │ │ ├── editor_template.js
│ │ │ │ │ ├── editor_template_src.js
│ │ │ │ │ ├── image.htm
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── about.js
│ │ │ │ │ │ ├── anchor.js
│ │ │ │ │ │ ├── charmap.js
│ │ │ │ │ │ ├── color_picker.js
│ │ │ │ │ │ ├── image.js
│ │ │ │ │ │ ├── link.js
│ │ │ │ │ │ └── source_editor.js
│ │ │ │ │ ├── langs/
│ │ │ │ │ │ ├── ar.js
│ │ │ │ │ │ ├── ar_dlg.js
│ │ │ │ │ │ ├── az.js
│ │ │ │ │ │ ├── az_dlg.js
│ │ │ │ │ │ ├── be.js
│ │ │ │ │ │ ├── be_dlg.js
│ │ │ │ │ │ ├── bn.js
│ │ │ │ │ │ ├── bn_dlg.js
│ │ │ │ │ │ ├── cs.js
│ │ │ │ │ │ ├── cs_dlg.js
│ │ │ │ │ │ ├── da.js
│ │ │ │ │ │ ├── da_dlg.js
│ │ │ │ │ │ ├── de.js
│ │ │ │ │ │ ├── de_dlg.js
│ │ │ │ │ │ ├── el.js
│ │ │ │ │ │ ├── el_dlg.js
│ │ │ │ │ │ ├── en.js
│ │ │ │ │ │ ├── en_dlg.js
│ │ │ │ │ │ ├── es.js
│ │ │ │ │ │ ├── es_dlg.js
│ │ │ │ │ │ ├── fr.js
│ │ │ │ │ │ ├── fr_dlg.js
│ │ │ │ │ │ ├── he.js
│ │ │ │ │ │ ├── he_dlg.js
│ │ │ │ │ │ ├── hr.js
│ │ │ │ │ │ ├── hr_dlg.js
│ │ │ │ │ │ ├── hu.js
│ │ │ │ │ │ ├── hu_dlg.js
│ │ │ │ │ │ ├── hy.js
│ │ │ │ │ │ ├── hy_dlg.js
│ │ │ │ │ │ ├── it.js
│ │ │ │ │ │ ├── it_dlg.js
│ │ │ │ │ │ ├── ka.js
│ │ │ │ │ │ ├── ka_dlg.js
│ │ │ │ │ │ ├── ko.js
│ │ │ │ │ │ ├── ko_dlg.js
│ │ │ │ │ │ ├── nb.js
│ │ │ │ │ │ ├── nb_dlg.js
│ │ │ │ │ │ ├── nl.js
│ │ │ │ │ │ ├── nl_dlg.js
│ │ │ │ │ │ ├── pl.js
│ │ │ │ │ │ ├── pl_dlg.js
│ │ │ │ │ │ ├── pt.js
│ │ │ │ │ │ ├── pt_dlg.js
│ │ │ │ │ │ ├── ro.js
│ │ │ │ │ │ ├── ro_dlg.js
│ │ │ │ │ │ ├── ru.js
│ │ │ │ │ │ ├── ru_dlg.js
│ │ │ │ │ │ ├── sr.js
│ │ │ │ │ │ ├── sr_dlg.js
│ │ │ │ │ │ ├── sv.js
│ │ │ │ │ │ ├── sv_dlg.js
│ │ │ │ │ │ ├── tr.js
│ │ │ │ │ │ ├── tr_dlg.js
│ │ │ │ │ │ ├── uk.js
│ │ │ │ │ │ ├── uk_dlg.js
│ │ │ │ │ │ ├── zh-tw.js
│ │ │ │ │ │ ├── zh-tw_dlg.js
│ │ │ │ │ │ ├── zh.js
│ │ │ │ │ │ └── zh_dlg.js
│ │ │ │ │ ├── link.htm
│ │ │ │ │ ├── shortcuts.htm
│ │ │ │ │ ├── skins/
│ │ │ │ │ │ ├── default/
│ │ │ │ │ │ │ ├── content.css
│ │ │ │ │ │ │ ├── dialog.css
│ │ │ │ │ │ │ └── ui.css
│ │ │ │ │ │ ├── highcontrast/
│ │ │ │ │ │ │ ├── content.css
│ │ │ │ │ │ │ ├── dialog.css
│ │ │ │ │ │ │ └── ui.css
│ │ │ │ │ │ └── o2k7/
│ │ │ │ │ │ ├── content.css
│ │ │ │ │ │ ├── dialog.css
│ │ │ │ │ │ ├── ui.css
│ │ │ │ │ │ ├── ui_black.css
│ │ │ │ │ │ └── ui_silver.css
│ │ │ │ │ └── source_editor.htm
│ │ │ │ └── simple/
│ │ │ │ ├── editor_template.js
│ │ │ │ ├── editor_template_src.js
│ │ │ │ ├── langs/
│ │ │ │ │ ├── az.js
│ │ │ │ │ ├── be.js
│ │ │ │ │ ├── da.js
│ │ │ │ │ ├── el.js
│ │ │ │ │ ├── en.js
│ │ │ │ │ ├── he.js
│ │ │ │ │ ├── hu.js
│ │ │ │ │ ├── hy.js
│ │ │ │ │ ├── it.js
│ │ │ │ │ ├── ka.js
│ │ │ │ │ ├── ko.js
│ │ │ │ │ ├── nb.js
│ │ │ │ │ ├── tr.js
│ │ │ │ │ ├── uk.js
│ │ │ │ │ ├── zh-tw.js
│ │ │ │ │ └── zh.js
│ │ │ │ └── skins/
│ │ │ │ ├── default/
│ │ │ │ │ ├── content.css
│ │ │ │ │ └── ui.css
│ │ │ │ └── o2k7/
│ │ │ │ ├── content.css
│ │ │ │ └── ui.css
│ │ │ ├── tiny_mce.js
│ │ │ ├── tiny_mce_popup.js
│ │ │ ├── tiny_mce_src.js
│ │ │ └── utils/
│ │ │ ├── editable_selects.js
│ │ │ ├── form_utils.js
│ │ │ ├── mctabs.js
│ │ │ └── validate.js
│ │ ├── underscore.js
│ │ └── views/
│ │ └── PaginatorView.js
│ ├── library/
│ │ ├── Newscoop/
│ │ │ ├── Acl/
│ │ │ │ ├── Assertions/
│ │ │ │ │ └── SaasAssertion.php
│ │ │ │ └── Storage.php
│ │ │ ├── Annotations/
│ │ │ │ └── Acl.php
│ │ │ ├── Article/
│ │ │ │ ├── LinkService.php
│ │ │ │ └── SearchService.php
│ │ │ ├── ArticleDatetime.php
│ │ │ ├── Auth/
│ │ │ │ └── Adapter.php
│ │ │ ├── Cache/
│ │ │ │ └── CacheKey.php
│ │ │ ├── Command.php
│ │ │ ├── Comment/
│ │ │ │ └── SearchService.php
│ │ │ ├── Composer/
│ │ │ │ └── ScriptHandler.php
│ │ │ ├── Content/
│ │ │ │ ├── ContentTypeService.php
│ │ │ │ ├── PublicationService.php
│ │ │ │ └── SectionService.php
│ │ │ ├── Controller/
│ │ │ │ ├── Action/
│ │ │ │ │ └── Helper/
│ │ │ │ │ └── Datatable/
│ │ │ │ │ ├── ADatatable.php
│ │ │ │ │ ├── Adapter/
│ │ │ │ │ │ ├── AAdapter.php
│ │ │ │ │ │ ├── Doctrine.php
│ │ │ │ │ │ ├── Theme.php
│ │ │ │ │ │ └── ThemeFiles.php
│ │ │ │ │ └── Row.php
│ │ │ │ ├── Helper/
│ │ │ │ │ └── FlashMessenger.php
│ │ │ │ └── Plugin/
│ │ │ │ └── Js.php
│ │ │ ├── Criteria/
│ │ │ │ ├── ArticleSearchCriteria.php
│ │ │ │ ├── SlideshowCriteria.php
│ │ │ │ └── SlideshowItemCriteria.php
│ │ │ ├── Criteria.php
│ │ │ ├── Datatable/
│ │ │ │ ├── ISource.php
│ │ │ │ └── Source.php
│ │ │ ├── DependencyInjection/
│ │ │ │ └── ContainerBuilder.php
│ │ │ ├── Doctrine/
│ │ │ │ ├── AdoDbAdapter.php
│ │ │ │ ├── AdoDbInteface.php
│ │ │ │ ├── AdoDbStatement.php
│ │ │ │ └── EventDispatcherProxy.php
│ │ │ ├── EditorInterface.php
│ │ │ ├── Entity/
│ │ │ │ ├── AbstractEntity.php
│ │ │ │ ├── Acl/
│ │ │ │ │ ├── Permission.php
│ │ │ │ │ ├── Role.php
│ │ │ │ │ └── Rule.php
│ │ │ │ ├── Aliases.php
│ │ │ │ ├── Article.php
│ │ │ │ ├── ArticleAuthor.php
│ │ │ │ ├── ArticleDatetime.php
│ │ │ │ ├── ArticleImage.php
│ │ │ │ ├── ArticleIndex.php
│ │ │ │ ├── ArticleTopic.php
│ │ │ │ ├── ArticleType.php
│ │ │ │ ├── ArticleTypeField.php
│ │ │ │ ├── Attachment.php
│ │ │ │ ├── AuditEvent.php
│ │ │ │ ├── Author.php
│ │ │ │ ├── AuthorType.php
│ │ │ │ ├── AutoId.php
│ │ │ │ ├── Comment/
│ │ │ │ │ ├── Acceptance.php
│ │ │ │ │ ├── Commenter.php
│ │ │ │ │ └── Preference/
│ │ │ │ │ ├── Article.php
│ │ │ │ │ └── Publication.php
│ │ │ │ ├── Comment.php
│ │ │ │ ├── Country.php
│ │ │ │ ├── CronJob.php
│ │ │ │ ├── Event.php
│ │ │ │ ├── Feedback.php
│ │ │ │ ├── Hierarchable.php
│ │ │ │ ├── Issue.php
│ │ │ │ ├── KeywordIndex.php
│ │ │ │ ├── Language.php
│ │ │ │ ├── Log.php
│ │ │ │ ├── Notification.php
│ │ │ │ ├── Output/
│ │ │ │ │ ├── OutputSettingsIssue.php
│ │ │ │ │ ├── OutputSettingsPublication.php
│ │ │ │ │ ├── OutputSettingsSection.php
│ │ │ │ │ └── OutputSettingsTheme.php
│ │ │ │ ├── Output.php
│ │ │ │ ├── OutputSettings.php
│ │ │ │ ├── Picture.php
│ │ │ │ ├── Playlist.php
│ │ │ │ ├── PlaylistArticle.php
│ │ │ │ ├── Plugin.php
│ │ │ │ ├── Publication.php
│ │ │ │ ├── Rating.php
│ │ │ │ ├── RelatedArticle.php
│ │ │ │ ├── RelatedArticles.php
│ │ │ │ ├── Repository/
│ │ │ │ │ ├── Acl/
│ │ │ │ │ │ └── RuleRepository.php
│ │ │ │ │ ├── ArticleAuthorRepository.php
│ │ │ │ │ ├── ArticleDatetimeRepository.php
│ │ │ │ │ ├── ArticleRepository.php
│ │ │ │ │ ├── ArticleTopicRepository.php
│ │ │ │ │ ├── ArticleTypeFieldRepository.php
│ │ │ │ │ ├── ArticleTypeRepository.php
│ │ │ │ │ ├── AttachmentRepository.php
│ │ │ │ │ ├── AuditRepository.php
│ │ │ │ │ ├── AuthorRepository.php
│ │ │ │ │ ├── AuthorTypeRepository.php
│ │ │ │ │ ├── AutoIdRepository.php
│ │ │ │ │ ├── Comment/
│ │ │ │ │ │ ├── AcceptanceRepository.php
│ │ │ │ │ │ └── CommenterRepository.php
│ │ │ │ │ ├── CommentRepository.php
│ │ │ │ │ ├── DatatableRepository.php
│ │ │ │ │ ├── FeedbackRepository.php
│ │ │ │ │ ├── ImageRepository.php
│ │ │ │ │ ├── IssueRepository.php
│ │ │ │ │ ├── LanguageRepository.php
│ │ │ │ │ ├── NotificationRepository.php
│ │ │ │ │ ├── PlaylistArticleRepository.php
│ │ │ │ │ ├── PlaylistRepository.php
│ │ │ │ │ ├── PluginRepository.php
│ │ │ │ │ ├── PublicationRepository.php
│ │ │ │ │ ├── RatingRepository.php
│ │ │ │ │ ├── RelatedArticleRepository.php
│ │ │ │ │ ├── RelatedArticlesRepository.php
│ │ │ │ │ ├── SectionRepository.php
│ │ │ │ │ ├── Snippet/
│ │ │ │ │ │ └── SnippetTemplateRepository.php
│ │ │ │ │ ├── SnippetRepository.php
│ │ │ │ │ ├── SubscriptionArticleRepository.php
│ │ │ │ │ ├── SubscriptionIssueRepository.php
│ │ │ │ │ ├── SubscriptionSectionRepository.php
│ │ │ │ │ ├── TemplateRepository.php
│ │ │ │ │ ├── ThemeRepository.php
│ │ │ │ │ ├── User/
│ │ │ │ │ │ ├── GroupRepository.php
│ │ │ │ │ │ └── StaffRepository.php
│ │ │ │ │ ├── UserPointsRepository.php
│ │ │ │ │ ├── UserRepository.php
│ │ │ │ │ └── UserTopicRepository.php
│ │ │ │ ├── Request.php
│ │ │ │ ├── Resource.php
│ │ │ │ ├── Section.php
│ │ │ │ ├── Session.php
│ │ │ │ ├── Snippet/
│ │ │ │ │ ├── SnippetField.php
│ │ │ │ │ ├── SnippetTemplate/
│ │ │ │ │ │ └── SnippetTemplateField.php
│ │ │ │ │ └── SnippetTemplate.php
│ │ │ │ ├── Snippet.php
│ │ │ │ ├── Template.php
│ │ │ │ ├── Theme/
│ │ │ │ │ └── Loader/
│ │ │ │ │ ├── Loader.php
│ │ │ │ │ └── LocalLoader.php
│ │ │ │ ├── Theme.php
│ │ │ │ ├── Translation.php
│ │ │ │ ├── User/
│ │ │ │ │ ├── Group.php
│ │ │ │ │ ├── Ip.php
│ │ │ │ │ └── Staff.php
│ │ │ │ ├── User.php
│ │ │ │ ├── UserAttribute.php
│ │ │ │ ├── UserIdentity.php
│ │ │ │ ├── UserPoints.php
│ │ │ │ ├── UserToken.php
│ │ │ │ ├── UserTopic.php
│ │ │ │ └── Webcode.php
│ │ │ ├── EventDispatcher/
│ │ │ │ └── Events/
│ │ │ │ ├── CollectObjectsDataEvent.php
│ │ │ │ ├── GenericEvent.php
│ │ │ │ ├── PluginHooksEvent.php
│ │ │ │ └── PluginPermissionsEvent.php
│ │ │ ├── Exception/
│ │ │ │ ├── AuthenticationException.php
│ │ │ │ ├── InvalidParametersException.php
│ │ │ │ ├── ResourceIsEmptyException.php
│ │ │ │ ├── ResourceNotModifiedException.php
│ │ │ │ └── ResourcesConflictException.php
│ │ │ ├── File/
│ │ │ │ └── Manager/
│ │ │ │ ├── LocalManager.php
│ │ │ │ └── Manager.php
│ │ │ ├── Form/
│ │ │ │ ├── Decorator/
│ │ │ │ │ ├── Form.php
│ │ │ │ │ ├── HtmlTag.php
│ │ │ │ │ └── Label.php
│ │ │ │ ├── Element/
│ │ │ │ │ └── OldHash.php
│ │ │ │ └── FormServiceInterface.php
│ │ │ ├── Form.php
│ │ │ ├── Gimme/
│ │ │ │ ├── Json.php
│ │ │ │ ├── Pagination.php
│ │ │ │ ├── PaginatorService.php
│ │ │ │ ├── PartialResponse.php
│ │ │ │ └── PropertyMatcher.php
│ │ │ ├── Image/
│ │ │ │ ├── ArticleImage.php
│ │ │ │ ├── ArticleImageCaption.php
│ │ │ │ ├── ArticleRendition.php
│ │ │ │ ├── ArticleRenditionCollection.php
│ │ │ │ ├── DefaultArticleRendition.php
│ │ │ │ ├── ImageInterface.php
│ │ │ │ ├── ImageSearchService.php
│ │ │ │ ├── ImageService.php
│ │ │ │ ├── LocalImage.php
│ │ │ │ ├── Rendition.php
│ │ │ │ ├── RenditionService.php
│ │ │ │ ├── RenditionViewHelper.php
│ │ │ │ ├── Thumbnail.php
│ │ │ │ ├── ThumbnailViewHelper.php
│ │ │ │ └── UpdateStorageService.php
│ │ │ ├── Installer/
│ │ │ │ └── Services/
│ │ │ │ ├── BootstrapService.php
│ │ │ │ ├── DatabaseService.php
│ │ │ │ ├── DemositeService.php
│ │ │ │ ├── FinishService.php
│ │ │ │ └── UpgradeService.php
│ │ │ ├── IssueServiceInterface.php
│ │ │ ├── ListResult.php
│ │ │ ├── Log/
│ │ │ │ └── Writer.php
│ │ │ ├── NewscoopException.php
│ │ │ ├── Package/
│ │ │ │ ├── Article.php
│ │ │ │ ├── ArticlePackage.php
│ │ │ │ ├── Item.php
│ │ │ │ ├── ItemRepository.php
│ │ │ │ ├── Package.php
│ │ │ │ ├── PackageRepository.php
│ │ │ │ ├── PackageSearchService.php
│ │ │ │ ├── PackageService.php
│ │ │ │ └── RemoteVideo.php
│ │ │ ├── PaginatedCollection.php
│ │ │ ├── Persistence/
│ │ │ │ └── ObjectRepository.php
│ │ │ ├── Query/
│ │ │ │ ├── MysqlDateFormat.php
│ │ │ │ ├── MysqlDayOfMonth.php
│ │ │ │ ├── MysqlDayOfWeek.php
│ │ │ │ ├── MysqlDayOfYear.php
│ │ │ │ ├── MysqlField.php
│ │ │ │ ├── MysqlRandom.php
│ │ │ │ └── SqliteRandom.php
│ │ │ ├── Random.php
│ │ │ ├── Router/
│ │ │ │ └── RouterFactory.php
│ │ │ ├── SchedulerServiceInterface.php
│ │ │ ├── Search/
│ │ │ │ ├── DefaultIndexClient.php
│ │ │ │ ├── DocumentInterface.php
│ │ │ │ ├── IndexClientInterface.php
│ │ │ │ ├── IndexException.php
│ │ │ │ ├── Indexer.php
│ │ │ │ ├── RepositoryInterface.php
│ │ │ │ └── ServiceInterface.php
│ │ │ ├── Service/
│ │ │ │ ├── Error/
│ │ │ │ │ └── ThemeErrors.php
│ │ │ │ ├── Exception/
│ │ │ │ │ ├── DuplicateNameException.php
│ │ │ │ │ └── RemoveThemeException.php
│ │ │ │ ├── IArticleTypeService.php
│ │ │ │ ├── IAuditService.php
│ │ │ │ ├── IEntityBaseService.php
│ │ │ │ ├── IEntityService.php
│ │ │ │ ├── IErrorHandler.php
│ │ │ │ ├── IIssueService.php
│ │ │ │ ├── ILanguageService.php
│ │ │ │ ├── IOutputService.php
│ │ │ │ ├── IOutputSettingIssueService.php
│ │ │ │ ├── IOutputSettingSectionService.php
│ │ │ │ ├── IPublicationService.php
│ │ │ │ ├── ISectionService.php
│ │ │ │ ├── ISyncResourceService.php
│ │ │ │ ├── ITemplateSearchService.php
│ │ │ │ ├── IThemeManagementService.php
│ │ │ │ ├── IThemeService.php
│ │ │ │ ├── Implementation/
│ │ │ │ │ ├── AEntityBaseServiceDoctrine.php
│ │ │ │ │ ├── AEntityServiceDoctrine.php
│ │ │ │ │ ├── ArticleTypeServiceDoctrine.php
│ │ │ │ │ ├── ErrorHandlerOnLog.php
│ │ │ │ │ ├── Exception/
│ │ │ │ │ │ ├── FailedException.php
│ │ │ │ │ │ └── XMLMissingAttribueException.php
│ │ │ │ │ ├── IssueServiceDoctrine.php
│ │ │ │ │ ├── LanguageServiceDoctrine.php
│ │ │ │ │ ├── OutputServiceDoctrine.php
│ │ │ │ │ ├── OutputSettingIssueServiceDoctrine.php
│ │ │ │ │ ├── OutputSettingSectionServiceDoctrine.php
│ │ │ │ │ ├── PublicationServiceDoctrine.php
│ │ │ │ │ ├── SectionServiceDoctrine.php
│ │ │ │ │ ├── SyncResourceServiceDoctrine.php
│ │ │ │ │ ├── TemplateSearchServiceDoctrine.php
│ │ │ │ │ ├── ThemeManagementServiceLocal.php
│ │ │ │ │ └── ThemeServiceLocalFileSystem.php
│ │ │ │ ├── Model/
│ │ │ │ │ ├── Search/
│ │ │ │ │ │ ├── Column.php
│ │ │ │ │ │ ├── ColumnOrder.php
│ │ │ │ │ │ ├── ColumnOrderLike.php
│ │ │ │ │ │ └── Search.php
│ │ │ │ │ ├── SearchIssue.php
│ │ │ │ │ ├── SearchLanguage.php
│ │ │ │ │ ├── SearchOutput.php
│ │ │ │ │ ├── SearchPublication.php
│ │ │ │ │ ├── SearchResource.php
│ │ │ │ │ ├── SearchSection.php
│ │ │ │ │ └── SearchTheme.php
│ │ │ │ ├── Resource/
│ │ │ │ │ ├── ResourceId.php
│ │ │ │ │ └── ResourceRepository.php
│ │ │ │ ├── Template.php
│ │ │ │ └── configs/
│ │ │ │ └── ResourceRepository.properties
│ │ │ ├── Services/
│ │ │ │ ├── ArticleService.php
│ │ │ │ ├── AttachmentService.php
│ │ │ │ ├── AuditMaintenanceService.php
│ │ │ │ ├── AuditService.php
│ │ │ │ ├── Auth/
│ │ │ │ │ ├── DoctrineAuthService.php
│ │ │ │ │ └── SocialAuthService.php
│ │ │ │ ├── AuthorService.php
│ │ │ │ ├── BlogService.php
│ │ │ │ ├── CacheService.php
│ │ │ │ ├── CommentNotificationService.php
│ │ │ │ ├── CommentService.php
│ │ │ │ ├── EditorService.php
│ │ │ │ ├── EmailService.php
│ │ │ │ ├── FilesystemService.php
│ │ │ │ ├── GarbageCollectionService.php
│ │ │ │ ├── InputManipulator.php
│ │ │ │ ├── IssueService.php
│ │ │ │ ├── ListPaginatorService.php
│ │ │ │ ├── ListUserService.php
│ │ │ │ ├── NotificationService.php
│ │ │ │ ├── PlaceholdersService.php
│ │ │ │ ├── PlaylistsService.php
│ │ │ │ ├── Plugins/
│ │ │ │ │ ├── ManagerService.php
│ │ │ │ │ └── PluginsService.php
│ │ │ │ ├── PublicationService.php
│ │ │ │ ├── RelatedArticlesService.php
│ │ │ │ ├── SchedulerService.php
│ │ │ │ ├── StatService.php
│ │ │ │ ├── SubscriptionService.php
│ │ │ │ ├── TemplatesService.php
│ │ │ │ ├── ThemesService.php
│ │ │ │ ├── UserAttributeService.php
│ │ │ │ ├── UserPointsService.php
│ │ │ │ ├── UserSearchService.php
│ │ │ │ ├── UserService.php
│ │ │ │ ├── UserTokenService.php
│ │ │ │ ├── UserTopicService.php
│ │ │ │ └── UserTypeService.php
│ │ │ ├── SmartyView.php
│ │ │ ├── Storage/
│ │ │ │ ├── Item.php
│ │ │ │ └── StorageService.php
│ │ │ ├── Storage.php
│ │ │ ├── Subscription/
│ │ │ │ ├── Article.php
│ │ │ │ ├── IpFacade.php
│ │ │ │ ├── Issue.php
│ │ │ │ ├── Section.php
│ │ │ │ ├── SectionFacade.php
│ │ │ │ ├── Subscription.php
│ │ │ │ ├── SubscriptionData.php
│ │ │ │ ├── SubscriptionFacade.php
│ │ │ │ └── SubscriptionRepository.php
│ │ │ ├── TemplateList/
│ │ │ │ ├── BaseList.php
│ │ │ │ ├── Meta/
│ │ │ │ │ ├── MetaBase.php
│ │ │ │ │ ├── SlideshowItemMeta.php
│ │ │ │ │ └── SlideshowsMeta.php
│ │ │ │ ├── PaginatedBaseList.php
│ │ │ │ ├── SlideshowItemsList.php
│ │ │ │ ├── SlideshowsList.php
│ │ │ │ └── UsersList.php
│ │ │ ├── ThemesServiceInterface.php
│ │ │ ├── Tools/
│ │ │ │ └── Console/
│ │ │ │ ├── Command/
│ │ │ │ │ ├── AbstractIndexCommand.php
│ │ │ │ │ ├── AssignThemeCommand.php
│ │ │ │ │ ├── AutopublishCommand.php
│ │ │ │ │ ├── ClearIndexCommand.php
│ │ │ │ │ ├── ClearOldStatisticsCommand.php
│ │ │ │ │ ├── CreateOAuthClientCommand.php
│ │ │ │ │ ├── CreateUserCommand.php
│ │ │ │ │ ├── DispatchEventForPluginCommand.php
│ │ │ │ │ ├── EventsNotifierCommand.php
│ │ │ │ │ ├── GenerateORMSchemaCommand.php
│ │ │ │ │ ├── GenerateWebcodeCommand.php
│ │ │ │ │ ├── IndexerCommand.php
│ │ │ │ │ ├── InstallNewscoopCommand.php
│ │ │ │ │ ├── InstallPluginCommand.php
│ │ │ │ │ ├── LogMaintenanceCommand.php
│ │ │ │ │ ├── ReloadRenditionsCommand.php
│ │ │ │ │ ├── RemovePluginCommand.php
│ │ │ │ │ ├── SchedulerManagerCommand.php
│ │ │ │ │ ├── SendStatsCommand.php
│ │ │ │ │ ├── SubscriptionsNotifierCommand.php
│ │ │ │ │ ├── UpdateAutoloadCommand.php
│ │ │ │ │ ├── UpdateImageStorageCommand.php
│ │ │ │ │ ├── UpdateIndexCommand.php
│ │ │ │ │ ├── UpdatePluginCommand.php
│ │ │ │ │ ├── UpgradePluginsCommand.php
│ │ │ │ │ └── UserGarbageCollectionCommand.php
│ │ │ │ └── Helper/
│ │ │ │ └── ServiceContainerHelper.php
│ │ │ ├── Topic/
│ │ │ │ └── SaveUserTopicsCommand.php
│ │ │ ├── User/
│ │ │ │ ├── SearchService.php
│ │ │ │ ├── UserCriteria.php
│ │ │ │ └── UserManager.php
│ │ │ ├── Utils/
│ │ │ │ ├── Exception.php
│ │ │ │ ├── PermissionToAcl.php
│ │ │ │ └── Validation.php
│ │ │ ├── ValueObject.php
│ │ │ ├── Version.php
│ │ │ ├── View/
│ │ │ │ ├── ArticleView.php
│ │ │ │ ├── AuthorView.php
│ │ │ │ ├── PackageView.php
│ │ │ │ ├── TopicView.php
│ │ │ │ ├── UserView.php
│ │ │ │ ├── View.php
│ │ │ │ ├── ViewCollection.php
│ │ │ │ └── ViewFactory.php
│ │ │ └── WebcodeFacade.php
│ │ ├── Proxy/
│ │ │ └── .gitignore
│ │ └── Resource/
│ │ ├── Acl/
│ │ │ ├── Annotation/
│ │ │ │ └── Acl.php
│ │ │ ├── RuleInterface.php
│ │ │ └── StorageInterface.php
│ │ └── Acl.php
│ ├── log/
│ │ ├── .gitignore
│ │ └── .htaccess
│ ├── plugins/
│ │ └── .gitignore
│ ├── public/
│ │ ├── .htaccess
│ │ ├── bundles/
│ │ │ └── .gitignore
│ │ ├── css/
│ │ │ ├── jquery.qtip.css
│ │ │ └── omnibox.css
│ │ ├── files/
│ │ │ └── .gitignore
│ │ ├── index.php
│ │ ├── js/
│ │ │ ├── fos_js_routes.js
│ │ │ ├── jquery.wobscalendar.js
│ │ │ └── user_profile.js
│ │ ├── pdf/
│ │ │ └── .gitignore
│ │ └── videos/
│ │ ├── example.flv
│ │ └── player.swf
│ ├── robots.txt
│ ├── scripts/
│ │ ├── doctrine.php
│ │ ├── file_processing.php
│ │ ├── fixer.php
│ │ └── newscoop.php
│ ├── src/
│ │ └── Newscoop/
│ │ ├── ArticlesBundle/
│ │ │ ├── DependencyInjection/
│ │ │ │ ├── Configuration.php
│ │ │ │ └── NewscoopArticlesExtension.php
│ │ │ ├── Entity/
│ │ │ │ ├── EditorialComment.php
│ │ │ │ └── Repository/
│ │ │ │ └── EditorialCommentRepository.php
│ │ │ ├── EventListener/
│ │ │ │ └── HookListener.php
│ │ │ ├── Form/
│ │ │ │ └── Type/
│ │ │ │ └── EditorialCommentType.php
│ │ │ ├── NewscoopArticlesBundle.php
│ │ │ ├── Resources/
│ │ │ │ ├── config/
│ │ │ │ │ └── services.yml
│ │ │ │ ├── public/
│ │ │ │ │ ├── app/
│ │ │ │ │ │ ├── app.js
│ │ │ │ │ │ ├── comments-ctrl.js
│ │ │ │ │ │ ├── loading-bar.css
│ │ │ │ │ │ ├── loading-bar.js
│ │ │ │ │ │ └── services/
│ │ │ │ │ │ └── comments.js
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── editorial-comments.css
│ │ │ │ │ └── views/
│ │ │ │ │ └── main.html
│ │ │ │ └── views/
│ │ │ │ └── Hook/
│ │ │ │ └── editorialComments.html.twig
│ │ │ └── Services/
│ │ │ └── EditorialCommentsService.php
│ │ ├── CommunityTickerBundle/
│ │ │ ├── Command/
│ │ │ │ └── MigrateTablesCommand.php
│ │ │ ├── DependencyInjection/
│ │ │ │ ├── Configuration.php
│ │ │ │ └── NewscoopCommunityTickerExtension.php
│ │ │ ├── Entity/
│ │ │ │ ├── CommunityTickerEvent.php
│ │ │ │ └── Repository/
│ │ │ │ └── CommunityTickerEventRepository.php
│ │ │ ├── EventListener/
│ │ │ │ ├── LifecycleSubscriber.php
│ │ │ │ └── ListObjectsListener.php
│ │ │ ├── Meta/
│ │ │ │ └── MetaCommunityTicker.php
│ │ │ ├── NewscoopCommunityTickerBundle.php
│ │ │ ├── Resources/
│ │ │ │ ├── config/
│ │ │ │ │ └── services.yml
│ │ │ │ └── smartyPlugins/
│ │ │ │ └── block.list_community_feeds.php
│ │ │ ├── Services/
│ │ │ │ └── CommunityFeedService.php
│ │ │ └── TemplateList/
│ │ │ ├── CommunityFeedsList.php
│ │ │ └── ListCriteria.php
│ │ ├── GimmeBundle/
│ │ │ ├── Controller/
│ │ │ │ ├── ArticleTypesController.php
│ │ │ │ ├── ArticlesController.php
│ │ │ │ ├── ArticlesListController.php
│ │ │ │ ├── AttachmentsController.php
│ │ │ │ ├── AuthorizeController.php
│ │ │ │ ├── AuthorsController.php
│ │ │ │ ├── CommentsController.php
│ │ │ │ ├── ConfigureApiController.php
│ │ │ │ ├── EditorialCommentsApiController.php
│ │ │ │ ├── ExceptionController.php
│ │ │ │ ├── ImagesController.php
│ │ │ │ ├── IssuesController.php
│ │ │ │ ├── OauthController.php
│ │ │ │ ├── PublicationsController.php
│ │ │ │ ├── SectionsController.php
│ │ │ │ ├── SlideshowsController.php
│ │ │ │ ├── SnippetTemplatesController.php
│ │ │ │ ├── SnippetsController.php
│ │ │ │ ├── TopicsController.php
│ │ │ │ ├── UserTopicsController.php
│ │ │ │ └── UsersController.php
│ │ │ ├── DependencyInjection/
│ │ │ │ ├── Configuration.php
│ │ │ │ └── NewscoopGimmeExtension.php
│ │ │ ├── Entity/
│ │ │ │ ├── AccessToken.php
│ │ │ │ ├── AuthCode.php
│ │ │ │ ├── Client.php
│ │ │ │ ├── PublicApiResource.php
│ │ │ │ └── RefreshToken.php
│ │ │ ├── EventListener/
│ │ │ │ ├── AllowOriginListener.php
│ │ │ │ ├── ExceptionListener.php
│ │ │ │ ├── FormatJsonResponseListener.php
│ │ │ │ ├── LinkRequestListener.php
│ │ │ │ ├── OAuthEventListener.php
│ │ │ │ ├── PaginationExtraDataSubscriber.php
│ │ │ │ ├── PaginationListener.php
│ │ │ │ ├── PublicResourcesListener.php
│ │ │ │ ├── QuerySubscriber.php
│ │ │ │ ├── Selectable/
│ │ │ │ │ └── Doctrine/
│ │ │ │ │ └── ORM/
│ │ │ │ │ └── Query/
│ │ │ │ │ └── SelectWalker.php
│ │ │ │ ├── SerializerSubscriber.php
│ │ │ │ └── Sortable/
│ │ │ │ └── Doctrine/
│ │ │ │ └── ORM/
│ │ │ │ └── Query/
│ │ │ │ └── OrderByWalker.php
│ │ │ ├── Form/
│ │ │ │ ├── DataTransformer/
│ │ │ │ │ └── StringToArrayTransformer.php
│ │ │ │ ├── Handler/
│ │ │ │ │ └── AuthorizeFormHandler.php
│ │ │ │ ├── Model/
│ │ │ │ │ └── Authorize.php
│ │ │ │ └── Type/
│ │ │ │ ├── ArticleFieldsType.php
│ │ │ │ ├── ArticleType.php
│ │ │ │ ├── AttachmentType.php
│ │ │ │ ├── AuthorizeFormType.php
│ │ │ │ ├── ClientType.php
│ │ │ │ ├── CommentType.php
│ │ │ │ ├── ImageType.php
│ │ │ │ ├── PlaylistType.php
│ │ │ │ ├── PublicResourcesType.php
│ │ │ │ ├── SnippetFieldType.php
│ │ │ │ ├── SnippetTemplateFieldType.php
│ │ │ │ ├── SnippetTemplateType.php
│ │ │ │ └── SnippetType.php
│ │ │ ├── NewscoopGimmeBundle.php
│ │ │ ├── Node/
│ │ │ │ ├── Node.php
│ │ │ │ └── NodeTree.php
│ │ │ ├── Resources/
│ │ │ │ ├── config/
│ │ │ │ │ ├── routing.yml
│ │ │ │ │ ├── serializer/
│ │ │ │ │ │ └── newscoop/
│ │ │ │ │ │ ├── Article.yml
│ │ │ │ │ │ ├── ArticleAuthor.yml
│ │ │ │ │ │ ├── ArticleType.yml
│ │ │ │ │ │ ├── ArticleTypeField.yml
│ │ │ │ │ │ ├── Attachment.yml
│ │ │ │ │ │ ├── Author.yml
│ │ │ │ │ │ ├── AuthorType.yml
│ │ │ │ │ │ ├── Comment.yml
│ │ │ │ │ │ ├── Commenter.yml
│ │ │ │ │ │ ├── EditorialComment.yml
│ │ │ │ │ │ ├── Issue.yml
│ │ │ │ │ │ ├── Item.yml
│ │ │ │ │ │ ├── Language.yml
│ │ │ │ │ │ ├── LocalImage.yml
│ │ │ │ │ │ ├── Package.yml
│ │ │ │ │ │ ├── Playlist.yml
│ │ │ │ │ │ ├── Publication.yml
│ │ │ │ │ │ ├── Section.yml
│ │ │ │ │ │ ├── Snippet.yml
│ │ │ │ │ │ ├── SnippetField.yml
│ │ │ │ │ │ ├── SnippetTemplate.yml
│ │ │ │ │ │ ├── SnippetTemplateField.yml
│ │ │ │ │ │ ├── Template.yml
│ │ │ │ │ │ ├── Topic.yml
│ │ │ │ │ │ ├── TopicTranslation.yml
│ │ │ │ │ │ ├── User.yml
│ │ │ │ │ │ └── UserTopic.yml
│ │ │ │ │ └── services.yml
│ │ │ │ ├── public/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ └── jquery.dynatable.css
│ │ │ │ │ └── js/
│ │ │ │ │ └── jquery.dynatable.js
│ │ │ │ └── views/
│ │ │ │ ├── ConfigureApi/
│ │ │ │ │ └── configure.html.twig
│ │ │ │ └── Oauth/
│ │ │ │ └── login.html.twig
│ │ │ └── Serializer/
│ │ │ ├── Article/
│ │ │ │ ├── AuthorHandler.php
│ │ │ │ ├── CommentsCountHandler.php
│ │ │ │ ├── CommentsLinkHandler.php
│ │ │ │ ├── FieldsHandler.php
│ │ │ │ ├── RenditionsHandler.php
│ │ │ │ ├── TranslationsHandler.php
│ │ │ │ └── UrlHandler.php
│ │ │ ├── Image/
│ │ │ │ ├── ImageUriHandler.php
│ │ │ │ └── ThumbnailUriHandler.php
│ │ │ ├── Package/
│ │ │ │ └── ItemsLinkHandler.php
│ │ │ └── Topic/
│ │ │ └── TopicPathHandler.php
│ │ ├── NewscoopBundle/
│ │ │ ├── Controller/
│ │ │ │ ├── AttachmentsController.php
│ │ │ │ ├── AuthorsController.php
│ │ │ │ ├── BackendArticleImagesController.php
│ │ │ │ ├── BackendJournalistDashboardController.php
│ │ │ │ ├── BackendPublicationsController.php
│ │ │ │ ├── CommentsController.php
│ │ │ │ ├── EmbedlyController.php
│ │ │ │ ├── FeedController.php
│ │ │ │ ├── ImagesController.php
│ │ │ │ ├── LanguageController.php
│ │ │ │ ├── PasswordRecoveryController.php
│ │ │ │ ├── PlaylistsController.php
│ │ │ │ ├── PluginsController.php
│ │ │ │ ├── SecurityController.php
│ │ │ │ ├── SnippetControllerInterface.php
│ │ │ │ ├── SystemPrefController.php
│ │ │ │ ├── TopicsController.php
│ │ │ │ ├── UsersController.php
│ │ │ │ └── WebcodeRedirectController.php
│ │ │ ├── DependencyInjection/
│ │ │ │ ├── Configuration.php
│ │ │ │ └── NewscoopNewscoopExtension.php
│ │ │ ├── Entity/
│ │ │ │ ├── CityLocations.php
│ │ │ │ ├── CityNames.php
│ │ │ │ ├── Repository/
│ │ │ │ │ └── TopicRepository.php
│ │ │ │ ├── SystemPreferences.php
│ │ │ │ ├── Topic.php
│ │ │ │ └── TopicTranslation.php
│ │ │ ├── Event/
│ │ │ │ └── ConfigureMenuEvent.php
│ │ │ ├── EventListener/
│ │ │ │ ├── AccessDeniedExceptionListener.php
│ │ │ │ ├── ArticleListener.php
│ │ │ │ ├── CaptchaUsernamePasswordFormAuthenticationListener.php
│ │ │ │ ├── IssueListener.php
│ │ │ │ ├── ListObjectsListener.php
│ │ │ │ ├── LocaleListener.php
│ │ │ │ ├── NoCacheListener.php
│ │ │ │ ├── OldPluginsTranslationListener.php
│ │ │ │ ├── PublicationListener.php
│ │ │ │ ├── RouteListener.php
│ │ │ │ └── UserIpListener.php
│ │ │ ├── Form/
│ │ │ │ └── Type/
│ │ │ │ ├── ArticleImageType.php
│ │ │ │ ├── CommentSearchType.php
│ │ │ │ ├── CommentsFilterType.php
│ │ │ │ ├── PasswordCheckType.php
│ │ │ │ ├── PasswordRecoveryType.php
│ │ │ │ ├── PreferencesType.php
│ │ │ │ ├── PrivatePluginUploadType.php
│ │ │ │ ├── PublicationType.php
│ │ │ │ ├── RecaptchaType.php
│ │ │ │ ├── RemovePublicationType.php
│ │ │ │ ├── TopicTranslationType.php
│ │ │ │ └── TopicType.php
│ │ │ ├── Menu/
│ │ │ │ └── Builder.php
│ │ │ ├── NewscoopNewscoopBundle.php
│ │ │ ├── ORM/
│ │ │ │ ├── Point.php
│ │ │ │ ├── PointType.php
│ │ │ │ └── UTCDateTimeType.php
│ │ │ ├── Resources/
│ │ │ │ ├── config/
│ │ │ │ │ ├── routing.yml
│ │ │ │ │ └── services.yml
│ │ │ │ ├── doc/
│ │ │ │ │ └── index.rst
│ │ │ │ ├── public/
│ │ │ │ │ ├── css/
│ │ │ │ │ │ ├── DT_bootstrap.css
│ │ │ │ │ │ ├── bootstrap-custom-comments.css
│ │ │ │ │ │ ├── bootstrap-custom.css
│ │ │ │ │ │ ├── bootstrap.css
│ │ │ │ │ │ ├── comments.css
│ │ │ │ │ │ ├── jquery.dynatable.css
│ │ │ │ │ │ ├── new-design.css
│ │ │ │ │ │ ├── playlists.css
│ │ │ │ │ │ └── plugin.css
│ │ │ │ │ ├── js/
│ │ │ │ │ │ ├── DT_bootstrap.js
│ │ │ │ │ │ ├── Sortable.js
│ │ │ │ │ │ ├── angular-moment.js
│ │ │ │ │ │ ├── angular-ui-tree.js
│ │ │ │ │ │ ├── checklist-model.js
│ │ │ │ │ │ ├── jquery.dynatable.js
│ │ │ │ │ │ ├── moment-with-locales.js
│ │ │ │ │ │ ├── ng-sortable.js
│ │ │ │ │ │ ├── playlists/
│ │ │ │ │ │ │ ├── app.js
│ │ │ │ │ │ │ ├── controllers/
│ │ │ │ │ │ │ │ ├── articles-filters.js
│ │ │ │ │ │ │ │ ├── featured-articles.js
│ │ │ │ │ │ │ │ └── playlists.js
│ │ │ │ │ │ │ ├── directives/
│ │ │ │ │ │ │ │ ├── loading-container.js
│ │ │ │ │ │ │ │ └── sf-iframe.js
│ │ │ │ │ │ │ ├── filters/
│ │ │ │ │ │ │ │ └── lists-search.js
│ │ │ │ │ │ │ └── services/
│ │ │ │ │ │ │ ├── auth-interceptor.js
│ │ │ │ │ │ │ ├── filters-service.js
│ │ │ │ │ │ │ ├── modal-factory.js
│ │ │ │ │ │ │ ├── playlists.js
│ │ │ │ │ │ │ └── user-auth.js
│ │ │ │ │ │ ├── popover.js
│ │ │ │ │ │ ├── sanitize.js
│ │ │ │ │ │ ├── tree.js
│ │ │ │ │ │ └── ui-bootstrap-modal.js
│ │ │ │ │ └── views/
│ │ │ │ │ ├── modal-confirm.html
│ │ │ │ │ ├── modal-danger.html
│ │ │ │ │ └── modal-login.html
│ │ │ │ ├── translations/
│ │ │ │ │ ├── api.ar.yml
│ │ │ │ │ ├── api.az.yml
│ │ │ │ │ ├── api.be.yml
│ │ │ │ │ ├── api.bn.yml
│ │ │ │ │ ├── api.cs.yml
│ │ │ │ │ ├── api.da.yml
│ │ │ │ │ ├── api.de.yml
│ │ │ │ │ ├── api.de_AT.yml
│ │ │ │ │ ├── api.el.yml
│ │ │ │ │ ├── api.en.yml
│ │ │ │ │ ├── api.en_GB.yml
│ │ │ │ │ ├── api.es.yml
│ │ │ │ │ ├── api.es_AR.yml
│ │ │ │ │ ├── api.fa.yml
│ │ │ │ │ ├── api.fa_AF.yml
│ │ │ │ │ ├── api.fr.yml
│ │ │ │ │ ├── api.he.yml
│ │ │ │ │ ├── api.hr.yml
│ │ │ │ │ ├── api.hu.yml
│ │ │ │ │ ├── api.hy.yml
│ │ │ │ │ ├── api.hy_AM.yml
│ │ │ │ │ ├── api.id.yml
│ │ │ │ │ ├── api.it.yml
│ │ │ │ │ ├── api.ka.yml
│ │ │ │ │ ├── api.ko.yml
│ │ │ │ │ ├── api.ku.yml
│ │ │ │ │ ├── api.lv.yml
│ │ │ │ │ ├── api.mr.yml
│ │ │ │ │ ├── api.nb_NO.yml
│ │ │ │ │ ├── api.nl.yml
│ │ │ │ │ ├── api.pa.yml
│ │ │ │ │ ├── api.pl.yml
│ │ │ │ │ ├── api.ps.yml
│ │ │ │ │ ├── api.pt.yml
│ │ │ │ │ ├── api.pt_BR.yml
│ │ │ │ │ ├── api.ro.yml
│ │ │ │ │ ├── api.ru.yml
│ │ │ │ │ ├── api.sh.yml
│ │ │ │ │ ├── api.sq.yml
│ │ │ │ │ ├── api.sr.yml
│ │ │ │ │ ├── api.sv.yml
│ │ │ │ │ ├── api.tr.yml
│ │ │ │ │ ├── api.uk.yml
│ │ │ │ │ ├── api.vi.yml
│ │ │ │ │ ├── api.zh.yml
│ │ │ │ │ ├── api.zh_TW.yml
│ │ │ │ │ ├── article_comments.ar.yml
│ │ │ │ │ ├── article_comments.az.yml
│ │ │ │ │ ├── article_comments.be.yml
│ │ │ │ │ ├── article_comments.bn.yml
│ │ │ │ │ ├── article_comments.cs.yml
│ │ │ │ │ ├── article_comments.da.yml
│ │ │ │ │ ├── article_comments.de.yml
│ │ │ │ │ ├── article_comments.de_AT.yml
│ │ │ │ │ ├── article_comments.el.yml
│ │ │ │ │ ├── article_comments.en.yml
│ │ │ │ │ ├── article_comments.en_GB.yml
│ │ │ │ │ ├── article_comments.es.yml
│ │ │ │ │ ├── article_comments.es_AR.yml
│ │ │ │ │ ├── article_comments.fa.yml
│ │ │ │ │ ├── article_comments.fa_AF.yml
│ │ │ │ │ ├── article_comments.fr.yml
│ │ │ │ │ ├── article_comments.he.yml
│ │ │ │ │ ├── article_comments.hr.yml
│ │ │ │ │ ├── article_comments.hu.yml
│ │ │ │ │ ├── article_comments.hy.yml
│ │ │ │ │ ├── article_comments.hy_AM.yml
│ │ │ │ │ ├── article_comments.id.yml
│ │ │ │ │ ├── article_comments.it.yml
│ │ │ │ │ ├── article_comments.ka.yml
│ │ │ │ │ ├── article_comments.ko.yml
│ │ │ │ │ ├── article_comments.ku.yml
│ │ │ │ │ ├── article_comments.lv.yml
│ │ │ │ │ ├── article_comments.mr.yml
│ │ │ │ │ ├── article_comments.nb_NO.yml
│ │ │ │ │ ├── article_comments.nl.yml
│ │ │ │ │ ├── article_comments.pa.yml
│ │ │ │ │ ├── article_comments.pl.yml
│ │ │ │ │ ├── article_comments.ps.yml
│ │ │ │ │ ├── article_comments.pt.yml
│ │ │ │ │ ├── article_comments.pt_BR.yml
│ │ │ │ │ ├── article_comments.ro.yml
│ │ │ │ │ ├── article_comments.ru.yml
│ │ │ │ │ ├── article_comments.sh.yml
│ │ │ │ │ ├── article_comments.sq.yml
│ │ │ │ │ ├── article_comments.sr.yml
│ │ │ │ │ ├── article_comments.sv.yml
│ │ │ │ │ ├── article_comments.tr.yml
│ │ │ │ │ ├── article_comments.uk.yml
│ │ │ │ │ ├── article_comments.vi.yml
│ │ │ │ │ ├── article_comments.zh.yml
│ │ │ │ │ ├── article_comments.zh_TW.yml
│ │ │ │ │ ├── article_files.ar.yml
│ │ │ │ │ ├── article_files.az.yml
│ │ │ │ │ ├── article_files.be.yml
│ │ │ │ │ ├── article_files.bn.yml
│ │ │ │ │ ├── article_files.cs.yml
│ │ │ │ │ ├── article_files.da.yml
│ │ │ │ │ ├── article_files.de.yml
│ │ │ │ │ ├── article_files.de_AT.yml
│ │ │ │ │ ├── article_files.el.yml
│ │ │ │ │ ├── article_files.en.yml
│ │ │ │ │ ├── article_files.en_GB.yml
│ │ │ │ │ ├── article_files.es.yml
│ │ │ │ │ ├── article_files.es_AR.yml
│ │ │ │ │ ├── article_files.fa.yml
│ │ │ │ │ ├── article_files.fa_AF.yml
│ │ │ │ │ ├── article_files.fr.yml
│ │ │ │ │ ├── article_files.he.yml
│ │ │ │ │ ├── article_files.hr.yml
│ │ │ │ │ ├── article_files.hu.yml
│ │ │ │ │ ├── article_files.hy.yml
│ │ │ │ │ ├── article_files.hy_AM.yml
│ │ │ │ │ ├── article_files.id.yml
│ │ │ │ │ ├── article_files.it.yml
│ │ │ │ │ ├── article_files.ka.yml
│ │ │ │ │ ├── article_files.ko.yml
│ │ │ │ │ ├── article_files.ku.yml
│ │ │ │ │ ├── article_files.lv.yml
│ │ │ │ │ ├── article_files.mr.yml
│ │ │ │ │ ├── article_files.nb_NO.yml
│ │ │ │ │ ├── article_files.nl.yml
│ │ │ │ │ ├── article_files.pa.yml
│ │ │ │ │ ├── article_files.pl.yml
│ │ │ │ │ ├── article_files.ps.yml
│ │ │ │ │ ├── article_files.pt.yml
│ │ │ │ │ ├── article_files.pt_BR.yml
│ │ │ │ │ ├── article_files.ro.yml
│ │ │ │ │ ├── article_files.ru.yml
│ │ │ │ │ ├── article_files.sh.yml
│ │ │ │ │ ├── article_files.sq.yml
│ │ │ │ │ ├── article_files.sr.yml
│ │ │ │ │ ├── article_files.sv.yml
│ │ │ │ │ ├── article_files.tr.yml
│ │ │ │ │ ├── article_files.uk.yml
│ │ │ │ │ ├── article_files.vi.yml
│ │ │ │ │ ├── article_files.zh.yml
│ │ │ │ │ ├── article_files.zh_TW.yml
│ │ │ │ │ ├── article_images.ar.yml
│ │ │ │ │ ├── article_images.az.yml
│ │ │ │ │ ├── article_images.be.yml
│ │ │ │ │ ├── article_images.bn.yml
│ │ │ │ │ ├── article_images.cs.yml
│ │ │ │ │ ├── article_images.da.yml
│ │ │ │ │ ├── article_images.de.yml
│ │ │ │ │ ├── article_images.de_AT.yml
│ │ │ │ │ ├── article_images.el.yml
│ │ │ │ │ ├── article_images.en.yml
│ │ │ │ │ ├── article_images.en_GB.yml
│ │ │ │ │ ├── article_images.es.yml
│ │ │ │ │ ├── article_images.es_AR.yml
│ │ │ │ │ ├── article_images.fa.yml
│ │ │ │ │ ├── article_images.fa_AF.yml
│ │ │ │ │ ├── article_images.fr.yml
│ │ │ │ │ ├── article_images.he.yml
│ │ │ │ │ ├── article_images.hr.yml
│ │ │ │ │ ├── article_images.hu.yml
│ │ │ │ │ ├── article_images.hy.yml
│ │ │ │ │ ├── article_images.hy_AM.yml
│ │ │ │ │ ├── article_images.id.yml
│ │ │ │ │ ├── article_images.it.yml
│ │ │ │ │ ├── article_images.ka.yml
│ │ │ │ │ ├── article_images.ko.yml
│ │ │ │ │ ├── article_images.ku.yml
│ │ │ │ │ ├── article_images.lv.yml
│ │ │ │ │ ├── article_images.mr.yml
│ │ │ │ │ ├── article_images.nb_NO.yml
│ │ │ │ │ ├── article_images.nl.yml
│ │ │ │ │ ├── article_images.pa.yml
│ │ │ │ │ ├── article_images.pl.yml
│ │ │ │ │ ├── article_images.ps.yml
│ │ │ │ │ ├── article_images.pt.yml
│ │ │ │ │ ├── article_images.pt_BR.yml
│ │ │ │ │ ├── article_images.ro.yml
│ │ │ │ │ ├── article_images.ru.yml
│ │ │ │ │ ├── article_images.sh.yml
│ │ │ │ │ ├── article_images.sq.yml
│ │ │ │ │ ├── article_images.sr.yml
│ │ │ │ │ ├── article_images.sv.yml
│ │ │ │ │ ├── article_images.tr.yml
│ │ │ │ │ ├── article_images.uk.yml
│ │ │ │ │ ├── article_images.vi.yml
│ │ │ │ │ ├── article_images.zh.yml
│ │ │ │ │ ├── article_images.zh_TW.yml
│ │ │ │ │ ├── article_topics.ar.yml
│ │ │ │ │ ├── article_topics.az.yml
│ │ │ │ │ ├── article_topics.be.yml
│ │ │ │ │ ├── article_topics.bn.yml
│ │ │ │ │ ├── article_topics.cs.yml
│ │ │ │ │ ├── article_topics.da.yml
│ │ │ │ │ ├── article_topics.de.yml
│ │ │ │ │ ├── article_topics.de_AT.yml
│ │ │ │ │ ├── article_topics.el.yml
│ │ │ │ │ ├── article_topics.en.yml
│ │ │ │ │ ├── article_topics.en_GB.yml
│ │ │ │ │ ├── article_topics.es.yml
│ │ │ │ │ ├── article_topics.es_AR.yml
│ │ │ │ │ ├── article_topics.fa.yml
│ │ │ │ │ ├── article_topics.fa_AF.yml
│ │ │ │ │ ├── article_topics.fr.yml
│ │ │ │ │ ├── article_topics.he.yml
│ │ │ │ │ ├── article_topics.hr.yml
│ │ │ │ │ ├── article_topics.hu.yml
│ │ │ │ │ ├── article_topics.hy.yml
│ │ │ │ │ ├── article_topics.hy_AM.yml
│ │ │ │ │ ├── article_topics.id.yml
│ │ │ │ │ ├── article_topics.it.yml
│ │ │ │ │ ├── article_topics.ka.yml
│ │ │ │ │ ├── article_topics.ko.yml
│ │ │ │ │ ├── article_topics.ku.yml
│ │ │ │ │ ├── article_topics.lv.yml
│ │ │ │ │ ├── article_topics.mr.yml
│ │ │ │ │ ├── article_topics.nb_NO.yml
│ │ │ │ │ ├── article_topics.nl.yml
│ │ │ │ │ ├── article_topics.pa.yml
│ │ │ │ │ ├── article_topics.pl.yml
│ │ │ │ │ ├── article_topics.ps.yml
│ │ │ │ │ ├── article_topics.pt.yml
│ │ │ │ │ ├── article_topics.pt_BR.yml
│ │ │ │ │ ├── article_topics.ro.yml
│ │ │ │ │ ├── article_topics.ru.yml
│ │ │ │ │ ├── article_topics.sh.yml
│ │ │ │ │ ├── article_topics.sq.yml
│ │ │ │ │ ├── article_topics.sr.yml
│ │ │ │ │ ├── article_topics.sv.yml
│ │ │ │ │ ├── article_topics.tr.yml
│ │ │ │ │ ├── article_topics.uk.yml
│ │ │ │ │ ├── article_topics.vi.yml
│ │ │ │ │ ├── article_topics.zh.yml
│ │ │ │ │ ├── article_topics.zh_TW.yml
│ │ │ │ │ ├── article_type_fields.ar.yml
│ │ │ │ │ ├── article_type_fields.az.yml
│ │ │ │ │ ├── article_type_fields.be.yml
│ │ │ │ │ ├── article_type_fields.bn.yml
│ │ │ │ │ ├── article_type_fields.cs.yml
│ │ │ │ │ ├── article_type_fields.da.yml
│ │ │ │ │ ├── article_type_fields.de.yml
│ │ │ │ │ ├── article_type_fields.de_AT.yml
│ │ │ │ │ ├── article_type_fields.el.yml
│ │ │ │ │ ├── article_type_fields.en.yml
│ │ │ │ │ ├── article_type_fields.en_GB.yml
│ │ │ │ │ ├── article_type_fields.es.yml
│ │ │ │ │ ├── article_type_fields.es_AR.yml
│ │ │ │ │ ├── article_type_fields.fa.yml
│ │ │ │ │ ├── article_type_fields.fa_AF.yml
│ │ │ │ │ ├── article_type_fields.fr.yml
│ │ │ │ │ ├── article_type_fields.he.yml
│ │ │ │ │ ├── article_type_fields.hr.yml
│ │ │ │ │ ├── article_type_fields.hu.yml
│ │ │ │ │ ├── article_type_fields.hy.yml
│ │ │ │ │ ├── article_type_fields.hy_AM.yml
│ │ │ │ │ ├── article_type_fields.id.yml
│ │ │ │ │ ├── article_type_fields.it.yml
│ │ │ │ │ ├── article_type_fields.ka.yml
│ │ │ │ │ ├── article_type_fields.ko.yml
│ │ │ │ │ ├── article_type_fields.ku.yml
│ │ │ │ │ ├── article_type_fields.lv.yml
│ │ │ │ │ ├── article_type_fields.mr.yml
│ │ │ │ │ ├── article_type_fields.nb_NO.yml
│ │ │ │ │ ├── article_type_fields.nl.yml
│ │ │ │ │ ├── article_type_fields.pa.yml
│ │ │ │ │ ├── article_type_fields.pl.yml
│ │ │ │ │ ├── article_type_fields.ps.yml
│ │ │ │ │ ├── article_type_fields.pt.yml
│ │ │ │ │ ├── article_type_fields.pt_BR.yml
│ │ │ │ │ ├── article_type_fields.ro.yml
│ │ │ │ │ ├── article_type_fields.ru.yml
│ │ │ │ │ ├── article_type_fields.sh.yml
│ │ │ │ │ ├── article_type_fields.sq.yml
│ │ │ │ │ ├── article_type_fields.sr.yml
│ │ │ │ │ ├── article_type_fields.sv.yml
│ │ │ │ │ ├── article_type_fields.tr.yml
│ │ │ │ │ ├── article_type_fields.uk.yml
│ │ │ │ │ ├── article_type_fields.vi.yml
│ │ │ │ │ ├── article_type_fields.zh.yml
│ │ │ │ │ ├── article_type_fields.zh_TW.yml
│ │ │ │ │ ├── article_types.ar.yml
│ │ │ │ │ ├── article_types.az.yml
│ │ │ │ │ ├── article_types.be.yml
│ │ │ │ │ ├── article_types.bn.yml
│ │ │ │ │ ├── article_types.cs.yml
│ │ │ │ │ ├── article_types.da.yml
│ │ │ │ │ ├── article_types.de.yml
│ │ │ │ │ ├── article_types.de_AT.yml
│ │ │ │ │ ├── article_types.el.yml
│ │ │ │ │ ├── article_types.en.yml
│ │ │ │ │ ├── article_types.en.yml~
│ │ │ │ │ ├── article_types.en_GB.yml
│ │ │ │ │ ├── article_types.es.yml
│ │ │ │ │ ├── article_types.es_AR.yml
│ │ │ │ │ ├── article_types.fa.yml
│ │ │ │ │ ├── article_types.fa_AF.yml
│ │ │ │ │ ├── article_types.fr.yml
│ │ │ │ │ ├── article_types.he.yml
│ │ │ │ │ ├── article_types.hr.yml
│ │ │ │ │ ├── article_types.hu.yml
│ │ │ │ │ ├── article_types.hy.yml
│ │ │ │ │ ├── article_types.hy_AM.yml
│ │ │ │ │ ├── article_types.id.yml
│ │ │ │ │ ├── article_types.it.yml
│ │ │ │ │ ├── article_types.ka.yml
│ │ │ │ │ ├── article_types.ko.yml
│ │ │ │ │ ├── article_types.ku.yml
│ │ │ │ │ ├── article_types.lv.yml
│ │ │ │ │ ├── article_types.mr.yml
│ │ │ │ │ ├── article_types.nb_NO.yml
│ │ │ │ │ ├── article_types.nl.yml
│ │ │ │ │ ├── article_types.pa.yml
│ │ │ │ │ ├── article_types.pl.yml
│ │ │ │ │ ├── article_types.ps.yml
│ │ │ │ │ ├── article_types.pt.yml
│ │ │ │ │ ├── article_types.pt_BR.yml
│ │ │ │ │ ├── article_types.ro.yml
│ │ │ │ │ ├── article_types.ru.yml
│ │ │ │ │ ├── article_types.sh.yml
│ │ │ │ │ ├── article_types.sq.yml
│ │ │ │ │ ├── article_types.sr.yml
│ │ │ │ │ ├── article_types.sv.yml
│ │ │ │ │ ├── article_types.tr.yml
│ │ │ │ │ ├── article_types.uk.yml
│ │ │ │ │ ├── article_types.vi.yml
│ │ │ │ │ ├── article_types.zh.yml
│ │ │ │ │ ├── article_types.zh_TW.yml
│ │ │ │ │ ├── articles.ar.yml
│ │ │ │ │ ├── articles.az.yml
│ │ │ │ │ ├── articles.be.yml
│ │ │ │ │ ├── articles.bn.yml
│ │ │ │ │ ├── articles.cs.yml
│ │ │ │ │ ├── articles.da.yml
│ │ │ │ │ ├── articles.de.yml
│ │ │ │ │ ├── articles.de_AT.yml
│ │ │ │ │ ├── articles.el.yml
│ │ │ │ │ ├── articles.en.yml
│ │ │ │ │ ├── articles.en_GB.yml
│ │ │ │ │ ├── articles.es.yml
│ │ │ │ │ ├── articles.es_AR.yml
│ │ │ │ │ ├── articles.fa.yml
│ │ │ │ │ ├── articles.fa_AF.yml
│ │ │ │ │ ├── articles.fr.yml
│ │ │ │ │ ├── articles.he.yml
│ │ │ │ │ ├── articles.hr.yml
│ │ │ │ │ ├── articles.hu.yml
│ │ │ │ │ ├── articles.hy.yml
│ │ │ │ │ ├── articles.hy_AM.yml
│ │ │ │ │ ├── articles.id.yml
│ │ │ │ │ ├── articles.it.yml
│ │ │ │ │ ├── articles.ka.yml
│ │ │ │ │ ├── articles.ko.yml
│ │ │ │ │ ├── articles.ku.yml
│ │ │ │ │ ├── articles.lv.yml
│ │ │ │ │ ├── articles.mr.yml
│ │ │ │ │ ├── articles.nb_NO.yml
│ │ │ │ │ ├── articles.nl.yml
│ │ │ │ │ ├── articles.pa.yml
│ │ │ │ │ ├── articles.pl.yml
│ │ │ │ │ ├── articles.ps.yml
│ │ │ │ │ ├── articles.pt.yml
│ │ │ │ │ ├── articles.pt_BR.yml
│ │ │ │ │ ├── articles.ro.yml
│ │ │ │ │ ├── articles.ru.yml
│ │ │ │ │ ├── articles.sh.yml
│ │ │ │ │ ├── articles.sq.yml
│ │ │ │ │ ├── articles.sr.yml
│ │ │ │ │ ├── articles.sv.yml
│ │ │ │ │ ├── articles.tr.yml
│ │ │ │ │ ├── articles.uk.yml
│ │ │ │ │ ├── articles.vi.yml
│ │ │ │ │ ├── articles.zh.yml
│ │ │ │ │ ├── articles.zh_TW.yml
│ │ │ │ │ ├── authors.ar.yml
│ │ │ │ │ ├── authors.az.yml
│ │ │ │ │ ├── authors.be.yml
│ │ │ │ │ ├── authors.bn.yml
│ │ │ │ │ ├── authors.cs.yml
│ │ │ │ │ ├── authors.da.yml
│ │ │ │ │ ├── authors.de.yml
│ │ │ │ │ ├── authors.de_AT.yml
│ │ │ │ │ ├── authors.el.yml
│ │ │ │ │ ├── authors.en.yml
│ │ │ │ │ ├── authors.en_GB.yml
│ │ │ │ │ ├── authors.es.yml
│ │ │ │ │ ├── authors.es_AR.yml
│ │ │ │ │ ├── authors.fa.yml
│ │ │ │ │ ├── authors.fa_AF.yml
│ │ │ │ │ ├── authors.fr.yml
│ │ │ │ │ ├── authors.he.yml
│ │ │ │ │ ├── authors.hr.yml
│ │ │ │ │ ├── authors.hu.yml
│ │ │ │ │ ├── authors.hy.yml
│ │ │ │ │ ├── authors.hy_AM.yml
│ │ │ │ │ ├── authors.id.yml
│ │ │ │ │ ├── authors.it.yml
│ │ │ │ │ ├── authors.ka.yml
│ │ │ │ │ ├── authors.ko.yml
│ │ │ │ │ ├── authors.ku.yml
│ │ │ │ │ ├── authors.lv.yml
│ │ │ │ │ ├── authors.mr.yml
│ │ │ │ │ ├── authors.nb_NO.yml
│ │ │ │ │ ├── authors.nl.yml
│ │ │ │ │ ├── authors.pa.yml
│ │ │ │ │ ├── authors.pl.yml
│ │ │ │ │ ├── authors.ps.yml
│ │ │ │ │ ├── authors.pt.yml
│ │ │ │ │ ├── authors.pt_BR.yml
│ │ │ │ │ ├── authors.ro.yml
│ │ │ │ │ ├── authors.ru.yml
│ │ │ │ │ ├── authors.sh.yml
│ │ │ │ │ ├── authors.sq.yml
│ │ │ │ │ ├── authors.sr.yml
│ │ │ │ │ ├── authors.sv.yml
│ │ │ │ │ ├── authors.tr.yml
│ │ │ │ │ ├── authors.uk.yml
│ │ │ │ │ ├── authors.vi.yml
│ │ │ │ │ ├── authors.zh.yml
│ │ │ │ │ ├── authors.zh_TW.yml
│ │ │ │ │ ├── bug_reporting.ar.yml
│ │ │ │ │ ├── bug_reporting.az.yml
│ │ │ │ │ ├── bug_reporting.be.yml
│ │ │ │ │ ├── bug_reporting.bn.yml
│ │ │ │ │ ├── bug_reporting.cs.yml
│ │ │ │ │ ├── bug_reporting.da.yml
│ │ │ │ │ ├── bug_reporting.de.yml
│ │ │ │ │ ├── bug_reporting.de_AT.yml
│ │ │ │ │ ├── bug_reporting.el.yml
│ │ │ │ │ ├── bug_reporting.en.yml
│ │ │ │ │ ├── bug_reporting.en_GB.yml
│ │ │ │ │ ├── bug_reporting.es.yml
│ │ │ │ │ ├── bug_reporting.es_AR.yml
│ │ │ │ │ ├── bug_reporting.fa.yml
│ │ │ │ │ ├── bug_reporting.fa_AF.yml
│ │ │ │ │ ├── bug_reporting.fr.yml
│ │ │ │ │ ├── bug_reporting.he.yml
│ │ │ │ │ ├── bug_reporting.hr.yml
│ │ │ │ │ ├── bug_reporting.hu.yml
│ │ │ │ │ ├── bug_reporting.hy.yml
│ │ │ │ │ ├── bug_reporting.hy_AM.yml
│ │ │ │ │ ├── bug_reporting.id.yml
│ │ │ │ │ ├── bug_reporting.it.yml
│ │ │ │ │ ├── bug_reporting.ka.yml
│ │ │ │ │ ├── bug_reporting.ko.yml
│ │ │ │ │ ├── bug_reporting.ku.yml
│ │ │ │ │ ├── bug_reporting.lv.yml
│ │ │ │ │ ├── bug_reporting.mr.yml
│ │ │ │ │ ├── bug_reporting.nb_NO.yml
│ │ │ │ │ ├── bug_reporting.nl.yml
│ │ │ │ │ ├── bug_reporting.pa.yml
│ │ │ │ │ ├── bug_reporting.pl.yml
│ │ │ │ │ ├── bug_reporting.ps.yml
│ │ │ │ │ ├── bug_reporting.pt.yml
│ │ │ │ │ ├── bug_reporting.pt_BR.yml
│ │ │ │ │ ├── bug_reporting.ro.yml
│ │ │ │ │ ├── bug_reporting.ru.yml
│ │ │ │ │ ├── bug_reporting.sh.yml
│ │ │ │ │ ├── bug_reporting.sq.yml
│ │ │ │ │ ├── bug_reporting.sr.yml
│ │ │ │ │ ├── bug_reporting.sv.yml
│ │ │ │ │ ├── bug_reporting.tr.yml
│ │ │ │ │ ├── bug_reporting.uk.yml
│ │ │ │ │ ├── bug_reporting.vi.yml
│ │ │ │ │ ├── bug_reporting.zh.yml
│ │ │ │ │ ├── bug_reporting.zh_TW.yml
│ │ │ │ │ ├── comments.ar.yml
│ │ │ │ │ ├── comments.az.yml
│ │ │ │ │ ├── comments.be.yml
│ │ │ │ │ ├── comments.bn.yml
│ │ │ │ │ ├── comments.cs.yml
│ │ │ │ │ ├── comments.da.yml
│ │ │ │ │ ├── comments.de.yml
│ │ │ │ │ ├── comments.de_AT.yml
│ │ │ │ │ ├── comments.el.yml
│ │ │ │ │ ├── comments.en.yml
│ │ │ │ │ ├── comments.en_GB.yml
│ │ │ │ │ ├── comments.es.yml
│ │ │ │ │ ├── comments.es_AR.yml
│ │ │ │ │ ├── comments.fa.yml
│ │ │ │ │ ├── comments.fa_AF.yml
│ │ │ │ │ ├── comments.fr.yml
│ │ │ │ │ ├── comments.he.yml
│ │ │ │ │ ├── comments.hr.yml
│ │ │ │ │ ├── comments.hu.yml
│ │ │ │ │ ├── comments.hy.yml
│ │ │ │ │ ├── comments.hy_AM.yml
│ │ │ │ │ ├── comments.id.yml
│ │ │ │ │ ├── comments.it.yml
│ │ │ │ │ ├── comments.ka.yml
│ │ │ │ │ ├── comments.ko.yml
│ │ │ │ │ ├── comments.ku.yml
│ │ │ │ │ ├── comments.lv.yml
│ │ │ │ │ ├── comments.mr.yml
│ │ │ │ │ ├── comments.nb_NO.yml
│ │ │ │ │ ├── comments.nl.yml
│ │ │ │ │ ├── comments.pa.yml
│ │ │ │ │ ├── comments.pl.yml
│ │ │ │ │ ├── comments.ps.yml
│ │ │ │ │ ├── comments.pt.yml
│ │ │ │ │ ├── comments.pt_BR.yml
│ │ │ │ │ ├── comments.ro.yml
│ │ │ │ │ ├── comments.ru.yml
│ │ │ │ │ ├── comments.sh.yml
│ │ │ │ │ ├── comments.sq.yml
│ │ │ │ │ ├── comments.sr.yml
│ │ │ │ │ ├── comments.sv.yml
│ │ │ │ │ ├── comments.tr.yml
│ │ │ │ │ ├── comments.uk.yml
│ │ │ │ │ ├── comments.vi.yml
│ │ │ │ │ ├── comments.zh.yml
│ │ │ │ │ ├── comments.zh_TW.yml
│ │ │ │ │ ├── country.ar.yml
│ │ │ │ │ ├── country.az.yml
│ │ │ │ │ ├── country.be.yml
│ │ │ │ │ ├── country.bn.yml
│ │ │ │ │ ├── country.cs.yml
│ │ │ │ │ ├── country.da.yml
│ │ │ │ │ ├── country.de.yml
│ │ │ │ │ ├── country.de_AT.yml
│ │ │ │ │ ├── country.el.yml
│ │ │ │ │ ├── country.en.yml
│ │ │ │ │ ├── country.en_GB.yml
│ │ │ │ │ ├── country.es.yml
│ │ │ │ │ ├── country.es_AR.yml
│ │ │ │ │ ├── country.fa.yml
│ │ │ │ │ ├── country.fa_AF.yml
│ │ │ │ │ ├── country.fr.yml
│ │ │ │ │ ├── country.he.yml
│ │ │ │ │ ├── country.hr.yml
│ │ │ │ │ ├── country.hu.yml
│ │ │ │ │ ├── country.hy.yml
│ │ │ │ │ ├── country.hy_AM.yml
│ │ │ │ │ ├── country.id.yml
│ │ │ │ │ ├── country.it.yml
│ │ │ │ │ ├── country.ka.yml
│ │ │ │ │ ├── country.ko.yml
│ │ │ │ │ ├── country.ku.yml
│ │ │ │ │ ├── country.lv.yml
│ │ │ │ │ ├── country.mr.yml
│ │ │ │ │ ├── country.nb_NO.yml
│ │ │ │ │ ├── country.nl.yml
│ │ │ │ │ ├── country.pa.yml
│ │ │ │ │ ├── country.pl.yml
│ │ │ │ │ ├── country.ps.yml
│ │ │ │ │ ├── country.pt.yml
│ │ │ │ │ ├── country.pt_BR.yml
│ │ │ │ │ ├── country.ro.yml
│ │ │ │ │ ├── country.ru.yml
│ │ │ │ │ ├── country.sh.yml
│ │ │ │ │ ├── country.sq.yml
│ │ │ │ │ ├── country.sr.yml
│ │ │ │ │ ├── country.sv.yml
│ │ │ │ │ ├── country.tr.yml
│ │ │ │ │ ├── country.uk.yml
│ │ │ │ │ ├── country.vi.yml
│ │ │ │ │ ├── country.zh.yml
│ │ │ │ │ ├── country.zh_TW.yml
│ │ │ │ │ ├── extensions.ar.yml
│ │ │ │ │ ├── extensions.az.yml
│ │ │ │ │ ├── extensions.be.yml
│ │ │ │ │ ├── extensions.bn.yml
│ │ │ │ │ ├── extensions.cs.yml
│ │ │ │ │ ├── extensions.da.yml
│ │ │ │ │ ├── extensions.de.yml
│ │ │ │ │ ├── extensions.de_AT.yml
│ │ │ │ │ ├── extensions.el.yml
│ │ │ │ │ ├── extensions.en.yml
│ │ │ │ │ ├── extensions.en_GB.yml
│ │ │ │ │ ├── extensions.es.yml
│ │ │ │ │ ├── extensions.es_AR.yml
│ │ │ │ │ ├── extensions.fa.yml
│ │ │ │ │ ├── extensions.fa_AF.yml
│ │ │ │ │ ├── extensions.fr.yml
│ │ │ │ │ ├── extensions.he.yml
│ │ │ │ │ ├── extensions.hr.yml
│ │ │ │ │ ├── extensions.hu.yml
│ │ │ │ │ ├── extensions.hy.yml
│ │ │ │ │ ├── extensions.hy_AM.yml
│ │ │ │ │ ├── extensions.id.yml
│ │ │ │ │ ├── extensions.it.yml
│ │ │ │ │ ├── extensions.ka.yml
│ │ │ │ │ ├── extensions.ko.yml
│ │ │ │ │ ├── extensions.ku.yml
│ │ │ │ │ ├── extensions.lv.yml
│ │ │ │ │ ├── extensions.mr.yml
│ │ │ │ │ ├── extensions.nb_NO.yml
│ │ │ │ │ ├── extensions.nl.yml
│ │ │ │ │ ├── extensions.pa.yml
│ │ │ │ │ ├── extensions.pl.yml
│ │ │ │ │ ├── extensions.ps.yml
│ │ │ │ │ ├── extensions.pt.yml
│ │ │ │ │ ├── extensions.pt_BR.yml
│ │ │ │ │ ├── extensions.ro.yml
│ │ │ │ │ ├── extensions.ru.yml
│ │ │ │ │ ├── extensions.sh.yml
│ │ │ │ │ ├── extensions.sq.yml
│ │ │ │ │ ├── extensions.sr.yml
│ │ │ │ │ ├── extensions.sv.yml
│ │ │ │ │ ├── extensions.tr.yml
│ │ │ │ │ ├── extensions.uk.yml
│ │ │ │ │ ├── extensions.vi.yml
│ │ │ │ │ ├── extensions.zh.yml
│ │ │ │ │ ├── extensions.zh_TW.yml
│ │ │ │ │ ├── feedback.ar.yml
│ │ │ │ │ ├── feedback.az.yml
│ │ │ │ │ ├── feedback.be.yml
│ │ │ │ │ ├── feedback.bn.yml
│ │ │ │ │ ├── feedback.cs.yml
│ │ │ │ │ ├── feedback.da.yml
│ │ │ │ │ ├── feedback.de.yml
│ │ │ │ │ ├── feedback.de_AT.yml
│ │ │ │ │ ├── feedback.el.yml
│ │ │ │ │ ├── feedback.en.yml
│ │ │ │ │ ├── feedback.en_GB.yml
│ │ │ │ │ ├── feedback.es.yml
│ │ │ │ │ ├── feedback.es_AR.yml
│ │ │ │ │ ├── feedback.fa.yml
│ │ │ │ │ ├── feedback.fa_AF.yml
│ │ │ │ │ ├── feedback.fr.yml
│ │ │ │ │ ├── feedback.he.yml
│ │ │ │ │ ├── feedback.hr.yml
│ │ │ │ │ ├── feedback.hu.yml
│ │ │ │ │ ├── feedback.hy.yml
│ │ │ │ │ ├── feedback.hy_AM.yml
│ │ │ │ │ ├── feedback.id.yml
│ │ │ │ │ ├── feedback.it.yml
│ │ │ │ │ ├── feedback.ka.yml
│ │ │ │ │ ├── feedback.ko.yml
│ │ │ │ │ ├── feedback.ku.yml
│ │ │ │ │ ├── feedback.lv.yml
│ │ │ │ │ ├── feedback.mr.yml
│ │ │ │ │ ├── feedback.nb_NO.yml
│ │ │ │ │ ├── feedback.nl.yml
│ │ │ │ │ ├── feedback.pa.yml
│ │ │ │ │ ├── feedback.pl.yml
│ │ │ │ │ ├── feedback.ps.yml
│ │ │ │ │ ├── feedback.pt.yml
│ │ │ │ │ ├── feedback.pt_BR.yml
│ │ │ │ │ ├── feedback.ro.yml
│ │ │ │ │ ├── feedback.ru.yml
│ │ │ │ │ ├── feedback.sh.yml
│ │ │ │ │ ├── feedback.sq.yml
│ │ │ │ │ ├── feedback.sr.yml
│ │ │ │ │ ├── feedback.sv.yml
│ │ │ │ │ ├── feedback.tr.yml
│ │ │ │ │ ├── feedback.uk.yml
│ │ │ │ │ ├── feedback.vi.yml
│ │ │ │ │ ├── feedback.zh.yml
│ │ │ │ │ ├── feedback.zh_TW.yml
│ │ │ │ │ ├── geolocation.ar.yml
│ │ │ │ │ ├── geolocation.az.yml
│ │ │ │ │ ├── geolocation.be.yml
│ │ │ │ │ ├── geolocation.bn.yml
│ │ │ │ │ ├── geolocation.cs.yml
│ │ │ │ │ ├── geolocation.da.yml
│ │ │ │ │ ├── geolocation.de.yml
│ │ │ │ │ ├── geolocation.de_AT.yml
│ │ │ │ │ ├── geolocation.el.yml
│ │ │ │ │ ├── geolocation.en.yml
│ │ │ │ │ ├── geolocation.en_GB.yml
│ │ │ │ │ ├── geolocation.es.yml
│ │ │ │ │ ├── geolocation.es_AR.yml
│ │ │ │ │ ├── geolocation.fa.yml
│ │ │ │ │ ├── geolocation.fa_AF.yml
│ │ │ │ │ ├── geolocation.fr.yml
│ │ │ │ │ ├── geolocation.he.yml
│ │ │ │ │ ├── geolocation.hr.yml
│ │ │ │ │ ├── geolocation.hu.yml
│ │ │ │ │ ├── geolocation.hy.yml
│ │ │ │ │ ├── geolocation.hy_AM.yml
│ │ │ │ │ ├── geolocation.id.yml
│ │ │ │ │ ├── geolocation.it.yml
│ │ │ │ │ ├── geolocation.ka.yml
│ │ │ │ │ ├── geolocation.ko.yml
│ │ │ │ │ ├── geolocation.ku.yml
│ │ │ │ │ ├── geolocation.lv.yml
│ │ │ │ │ ├── geolocation.mr.yml
│ │ │ │ │ ├── geolocation.nb_NO.yml
│ │ │ │ │ ├── geolocation.nl.yml
│ │ │ │ │ ├── geolocation.pa.yml
│ │ │ │ │ ├── geolocation.pl.yml
│ │ │ │ │ ├── geolocation.ps.yml
│ │ │ │ │ ├── geolocation.pt.yml
│ │ │ │ │ ├── geolocation.pt_BR.yml
│ │ │ │ │ ├── geolocation.ro.yml
│ │ │ │ │ ├── geolocation.ru.yml
│ │ │ │ │ ├── geolocation.sh.yml
│ │ │ │ │ ├── geolocation.sq.yml
│ │ │ │ │ ├── geolocation.sr.yml
│ │ │ │ │ ├── geolocation.sv.yml
│ │ │ │ │ ├── geolocation.tr.yml
│ │ │ │ │ ├── geolocation.uk.yml
│ │ │ │ │ ├── geolocation.vi.yml
│ │ │ │ │ ├── geolocation.zh.yml
│ │ │ │ │ ├── geolocation.zh_TW.yml
│ │ │ │ │ ├── help.ar.yml
│ │ │ │ │ ├── help.az.yml
│ │ │ │ │ ├── help.be.yml
│ │ │ │ │ ├── help.bn.yml
│ │ │ │ │ ├── help.cs.yml
│ │ │ │ │ ├── help.da.yml
│ │ │ │ │ ├── help.de.yml
│ │ │ │ │ ├── help.de_AT.yml
│ │ │ │ │ ├── help.el.yml
│ │ │ │ │ ├── help.en.yml
│ │ │ │ │ ├── help.en_GB.yml
│ │ │ │ │ ├── help.es.yml
│ │ │ │ │ ├── help.es_AR.yml
│ │ │ │ │ ├── help.fa.yml
│ │ │ │ │ ├── help.fa_AF.yml
│ │ │ │ │ ├── help.fr.yml
│ │ │ │ │ ├── help.he.yml
│ │ │ │ │ ├── help.hr.yml
│ │ │ │ │ ├── help.hu.yml
│ │ │ │ │ ├── help.hy.yml
│ │ │ │ │ ├── help.hy_AM.yml
│ │ │ │ │ ├── help.id.yml
│ │ │ │ │ ├── help.it.yml
│ │ │ │ │ ├── help.ka.yml
│ │ │ │ │ ├── help.ko.yml
│ │ │ │ │ ├── help.ku.yml
│ │ │ │ │ ├── help.lv.yml
│ │ │ │ │ ├── help.mr.yml
│ │ │ │ │ ├── help.nb_NO.yml
│ │ │ │ │ ├── help.nl.yml
│ │ │ │ │ ├── help.pa.yml
│ │ │ │ │ ├── help.pl.yml
│ │ │ │ │ ├── help.ps.yml
│ │ │ │ │ ├── help.pt.yml
│ │ │ │ │ ├── help.pt_BR.yml
│ │ │ │ │ ├── help.ro.yml
│ │ │ │ │ ├── help.ru.yml
│ │ │ │ │ ├── help.sh.yml
│ │ │ │ │ ├── help.sq.yml
│ │ │ │ │ ├── help.sr.yml
│ │ │ │ │ ├── help.sv.yml
│ │ │ │ │ ├── help.tr.yml
│ │ │ │ │ ├── help.uk.yml
│ │ │ │ │ ├── help.vi.yml
│ │ │ │ │ ├── help.zh.yml
│ │ │ │ │ ├── help.zh_TW.yml
│ │ │ │ │ ├── helpers.ar.yml
│ │ │ │ │ ├── helpers.az.yml
│ │ │ │ │ ├── helpers.be.yml
│ │ │ │ │ ├── helpers.bn.yml
│ │ │ │ │ ├── helpers.cs.yml
│ │ │ │ │ ├── helpers.da.yml
│ │ │ │ │ ├── helpers.de.yml
│ │ │ │ │ ├── helpers.de_AT.yml
│ │ │ │ │ ├── helpers.el.yml
│ │ │ │ │ ├── helpers.en.yml
│ │ │ │ │ ├── helpers.en_GB.yml
│ │ │ │ │ ├── helpers.es.yml
│ │ │ │ │ ├── helpers.es_AR.yml
│ │ │ │ │ ├── helpers.fa.yml
│ │ │ │ │ ├── helpers.fa_AF.yml
│ │ │ │ │ ├── helpers.fr.yml
│ │ │ │ │ ├── helpers.he.yml
│ │ │ │ │ ├── helpers.hr.yml
│ │ │ │ │ ├── helpers.hu.yml
│ │ │ │ │ ├── helpers.hy.yml
│ │ │ │ │ ├── helpers.hy_AM.yml
│ │ │ │ │ ├── helpers.id.yml
│ │ │ │ │ ├── helpers.it.yml
│ │ │ │ │ ├── helpers.ka.yml
│ │ │ │ │ ├── helpers.ko.yml
│ │ │ │ │ ├── helpers.ku.yml
│ │ │ │ │ ├── helpers.lv.yml
│ │ │ │ │ ├── helpers.mr.yml
│ │ │ │ │ ├── helpers.nb_NO.yml
│ │ │ │ │ ├── helpers.nl.yml
│ │ │ │ │ ├── helpers.pa.yml
│ │ │ │ │ ├── helpers.pl.yml
│ │ │ │ │ ├── helpers.ps.yml
│ │ │ │ │ ├── helpers.pt.yml
│ │ │ │ │ ├── helpers.pt_BR.yml
│ │ │ │ │ ├── helpers.ro.yml
│ │ │ │ │ ├── helpers.ru.yml
│ │ │ │ │ ├── helpers.sh.yml
│ │ │ │ │ ├── helpers.sq.yml
│ │ │ │ │ ├── helpers.sr.yml
│ │ │ │ │ ├── helpers.sv.yml
│ │ │ │ │ ├── helpers.tr.yml
│ │ │ │ │ ├── helpers.uk.yml
│ │ │ │ │ ├── helpers.vi.yml
│ │ │ │ │ ├── helpers.zh.yml
│ │ │ │ │ ├── helpers.zh_TW.yml
│ │ │ │ │ ├── home.ar.yml
│ │ │ │ │ ├── home.az.yml
│ │ │ │ │ ├── home.be.yml
│ │ │ │ │ ├── home.bn.yml
│ │ │ │ │ ├── home.cs.yml
│ │ │ │ │ ├── home.da.yml
│ │ │ │ │ ├── home.de.yml
│ │ │ │ │ ├── home.de_AT.yml
│ │ │ │ │ ├── home.el.yml
│ │ │ │ │ ├── home.en.yml
│ │ │ │ │ ├── home.en.yml~
│ │ │ │ │ ├── home.en_GB.yml
│ │ │ │ │ ├── home.es.yml
│ │ │ │ │ ├── home.es_AR.yml
│ │ │ │ │ ├── home.fa.yml
│ │ │ │ │ ├── home.fa_AF.yml
│ │ │ │ │ ├── home.fr.yml
│ │ │ │ │ ├── home.he.yml
│ │ │ │ │ ├── home.hr.yml
│ │ │ │ │ ├── home.hu.yml
│ │ │ │ │ ├── home.hy.yml
│ │ │ │ │ ├── home.hy_AM.yml
│ │ │ │ │ ├── home.id.yml
│ │ │ │ │ ├── home.it.yml
│ │ │ │ │ ├── home.ka.yml
│ │ │ │ │ ├── home.ko.yml
│ │ │ │ │ ├── home.ku.yml
│ │ │ │ │ ├── home.lv.yml
│ │ │ │ │ ├── home.mr.yml
│ │ │ │ │ ├── home.nb_NO.yml
│ │ │ │ │ ├── home.nl.yml
│ │ │ │ │ ├── home.pa.yml
│ │ │ │ │ ├── home.pl.yml
│ │ │ │ │ ├── home.ps.yml
│ │ │ │ │ ├── home.pt.yml
│ │ │ │ │ ├── home.pt_BR.yml
│ │ │ │ │ ├── home.ro.yml
│ │ │ │ │ ├── home.ru.yml
│ │ │ │ │ ├── home.sh.yml
│ │ │ │ │ ├── home.sq.yml
│ │ │ │ │ ├── home.sr.yml
│ │ │ │ │ ├── home.sv.yml
│ │ │ │ │ ├── home.tr.yml
│ │ │ │ │ ├── home.uk.yml
│ │ │ │ │ ├── home.vi.yml
│ │ │ │ │ ├── home.zh.yml
│ │ │ │ │ ├── home.zh_TW.yml
│ │ │ │ │ ├── issues.ar.yml
│ │ │ │ │ ├── issues.az.yml
│ │ │ │ │ ├── issues.be.yml
│ │ │ │ │ ├── issues.bn.yml
│ │ │ │ │ ├── issues.cs.yml
│ │ │ │ │ ├── issues.da.yml
│ │ │ │ │ ├── issues.de.yml
│ │ │ │ │ ├── issues.de_AT.yml
│ │ │ │ │ ├── issues.el.yml
│ │ │ │ │ ├── issues.en.yml
│ │ │ │ │ ├── issues.en_GB.yml
│ │ │ │ │ ├── issues.es.yml
│ │ │ │ │ ├── issues.es_AR.yml
│ │ │ │ │ ├── issues.fa.yml
│ │ │ │ │ ├── issues.fa_AF.yml
│ │ │ │ │ ├── issues.fr.yml
│ │ │ │ │ ├── issues.he.yml
│ │ │ │ │ ├── issues.hr.yml
│ │ │ │ │ ├── issues.hu.yml
│ │ │ │ │ ├── issues.hy.yml
│ │ │ │ │ ├── issues.hy_AM.yml
│ │ │ │ │ ├── issues.id.yml
│ │ │ │ │ ├── issues.it.yml
│ │ │ │ │ ├── issues.ka.yml
│ │ │ │ │ ├── issues.ko.yml
│ │ │ │ │ ├── issues.ku.yml
│ │ │ │ │ ├── issues.lv.yml
│ │ │ │ │ ├── issues.mr.yml
│ │ │ │ │ ├── issues.nb_NO.yml
│ │ │ │ │ ├── issues.nl.yml
│ │ │ │ │ ├── issues.pa.yml
│ │ │ │ │ ├── issues.pl.yml
│ │ │ │ │ ├── issues.ps.yml
│ │ │ │ │ ├── issues.pt.yml
│ │ │ │ │ ├── issues.pt_BR.yml
│ │ │ │ │ ├── issues.ro.yml
│ │ │ │ │ ├── issues.ru.yml
│ │ │ │ │ ├── issues.sh.yml
│ │ │ │ │ ├── issues.sq.yml
│ │ │ │ │ ├── issues.sr.yml
│ │ │ │ │ ├── issues.sv.yml
│ │ │ │ │ ├── issues.tr.yml
│ │ │ │ │ ├── issues.uk.yml
│ │ │ │ │ ├── issues.vi.yml
│ │ │ │ │ ├── issues.zh.yml
│ │ │ │ │ ├── issues.zh_TW.yml
│ │ │ │ │ ├── languages.ar.yml
│ │ │ │ │ ├── languages.az.yml
│ │ │ │ │ ├── languages.be.yml
│ │ │ │ │ ├── languages.bn.yml
│ │ │ │ │ ├── languages.cs.yml
│ │ │ │ │ ├── languages.da.yml
│ │ │ │ │ ├── languages.de.yml
│ │ │ │ │ ├── languages.de_AT.yml
│ │ │ │ │ ├── languages.el.yml
│ │ │ │ │ ├── languages.en.yml
│ │ │ │ │ ├── languages.en_GB.yml
│ │ │ │ │ ├── languages.es.yml
│ │ │ │ │ ├── languages.es_AR.yml
│ │ │ │ │ ├── languages.fa.yml
│ │ │ │ │ ├── languages.fa_AF.yml
│ │ │ │ │ ├── languages.fr.yml
│ │ │ │ │ ├── languages.he.yml
│ │ │ │ │ ├── languages.hr.yml
│ │ │ │ │ ├── languages.hu.yml
│ │ │ │ │ ├── languages.hy.yml
│ │ │ │ │ ├── languages.hy_AM.yml
│ │ │ │ │ ├── languages.id.yml
│ │ │ │ │ ├── languages.it.yml
│ │ │ │ │ ├── languages.ka.yml
│ │ │ │ │ ├── languages.ko.yml
│ │ │ │ │ ├── languages.ku.yml
│ │ │ │ │ ├── languages.lv.yml
│ │ │ │ │ ├── languages.mr.yml
│ │ │ │ │ ├── languages.nb_NO.yml
│ │ │ │ │ ├── languages.nl.yml
│ │ │ │ │ ├── languages.pa.yml
│ │ │ │ │ ├── languages.pl.yml
│ │ │ │ │ ├── languages.ps.yml
│ │ │ │ │ ├── languages.pt.yml
│ │ │ │ │ ├── languages.pt_BR.yml
│ │ │ │ │ ├── languages.ro.yml
│ │ │ │ │ ├── languages.ru.yml
│ │ │ │ │ ├── languages.sh.yml
│ │ │ │ │ ├── languages.sq.yml
│ │ │ │ │ ├── languages.sr.yml
│ │ │ │ │ ├── languages.sv.yml
│ │ │ │ │ ├── languages.tr.yml
│ │ │ │ │ ├── languages.uk.yml
│ │ │ │ │ ├── languages.vi.yml
│ │ │ │ │ ├── languages.zh.yml
│ │ │ │ │ ├── languages.zh_TW.yml
│ │ │ │ │ ├── library.ar.yml
│ │ │ │ │ ├── library.az.yml
│ │ │ │ │ ├── library.be.yml
│ │ │ │ │ ├── library.bn.yml
│ │ │ │ │ ├── library.cs.yml
│ │ │ │ │ ├── library.da.yml
│ │ │ │ │ ├── library.de.yml
│ │ │ │ │ ├── library.de_AT.yml
│ │ │ │ │ ├── library.el.yml
│ │ │ │ │ ├── library.en.yml
│ │ │ │ │ ├── library.en_GB.yml
│ │ │ │ │ ├── library.es.yml
│ │ │ │ │ ├── library.es_AR.yml
│ │ │ │ │ ├── library.fa.yml
│ │ │ │ │ ├── library.fa_AF.yml
│ │ │ │ │ ├── library.fr.yml
│ │ │ │ │ ├── library.he.yml
│ │ │ │ │ ├── library.hr.yml
│ │ │ │ │ ├── library.hu.yml
│ │ │ │ │ ├── library.hy.yml
│ │ │ │ │ ├── library.hy_AM.yml
│ │ │ │ │ ├── library.id.yml
│ │ │ │ │ ├── library.it.yml
│ │ │ │ │ ├── library.ka.yml
│ │ │ │ │ ├── library.ko.yml
│ │ │ │ │ ├── library.ku.yml
│ │ │ │ │ ├── library.lv.yml
│ │ │ │ │ ├── library.mr.yml
│ │ │ │ │ ├── library.nb_NO.yml
│ │ │ │ │ ├── library.nl.yml
│ │ │ │ │ ├── library.pa.yml
│ │ │ │ │ ├── library.pl.yml
│ │ │ │ │ ├── library.ps.yml
│ │ │ │ │ ├── library.pt.yml
│ │ │ │ │ ├── library.pt_BR.yml
│ │ │ │ │ ├── library.ro.yml
│ │ │ │ │ ├── library.ru.yml
│ │ │ │ │ ├── library.sh.yml
│ │ │ │ │ ├── library.sq.yml
│ │ │ │ │ ├── library.sr.yml
│ │ │ │ │ ├── library.sv.yml
│ │ │ │ │ ├── library.tr.yml
│ │ │ │ │ ├── library.uk.yml
│ │ │ │ │ ├── library.vi.yml
│ │ │ │ │ ├── library.zh.yml
│ │ │ │ │ ├── library.zh_TW.yml
│ │ │ │ │ ├── logs.ar.yml
│ │ │ │ │ ├── logs.az.yml
│ │ │ │ │ ├── logs.be.yml
│ │ │ │ │ ├── logs.bn.yml
│ │ │ │ │ ├── logs.cs.yml
│ │ │ │ │ ├── logs.da.yml
│ │ │ │ │ ├── logs.de.yml
│ │ │ │ │ ├── logs.de_AT.yml
│ │ │ │ │ ├── logs.el.yml
│ │ │ │ │ ├── logs.en.yml
│ │ │ │ │ ├── logs.en_GB.yml
│ │ │ │ │ ├── logs.es.yml
│ │ │ │ │ ├── logs.es_AR.yml
│ │ │ │ │ ├── logs.fa.yml
│ │ │ │ │ ├── logs.fa_AF.yml
│ │ │ │ │ ├── logs.fr.yml
│ │ │ │ │ ├── logs.he.yml
│ │ │ │ │ ├── logs.hr.yml
│ │ │ │ │ ├── logs.hu.yml
│ │ │ │ │ ├── logs.hy.yml
│ │ │ │ │ ├── logs.hy_AM.yml
│ │ │ │ │ ├── logs.id.yml
│ │ │ │ │ ├── logs.it.yml
│ │ │ │ │ ├── logs.ka.yml
│ │ │ │ │ ├── logs.ko.yml
│ │ │ │ │ ├── logs.ku.yml
│ │ │ │ │ ├── logs.lv.yml
│ │ │ │ │ ├── logs.mr.yml
│ │ │ │ │ ├── logs.nb_NO.yml
│ │ │ │ │ ├── logs.nl.yml
│ │ │ │ │ ├── logs.pa.yml
│ │ │ │ │ ├── logs.pl.yml
│ │ │ │ │ ├── logs.ps.yml
│ │ │ │ │ ├── logs.pt.yml
│ │ │ │ │ ├── logs.pt_BR.yml
│ │ │ │ │ ├── logs.ro.yml
│ │ │ │ │ ├── logs.ru.yml
│ │ │ │ │ ├── logs.sh.yml
│ │ │ │ │ ├── logs.sq.yml
│ │ │ │ │ ├── logs.sr.yml
│ │ │ │ │ ├── logs.sv.yml
│ │ │ │ │ ├── logs.tr.yml
│ │ │ │ │ ├── logs.uk.yml
│ │ │ │ │ ├── logs.vi.yml
│ │ │ │ │ ├── logs.zh.yml
│ │ │ │ │ ├── logs.zh_TW.yml
│ │ │ │ │ ├── media_archive.ar.yml
│ │ │ │ │ ├── media_archive.az.yml
│ │ │ │ │ ├── media_archive.be.yml
│ │ │ │ │ ├── media_archive.bn.yml
│ │ │ │ │ ├── media_archive.cs.yml
│ │ │ │ │ ├── media_archive.da.yml
│ │ │ │ │ ├── media_archive.de.yml
│ │ │ │ │ ├── media_archive.de_AT.yml
│ │ │ │ │ ├── media_archive.el.yml
│ │ │ │ │ ├── media_archive.en.yml
│ │ │ │ │ ├── media_archive.en_GB.yml
│ │ │ │ │ ├── media_archive.es.yml
│ │ │ │ │ ├── media_archive.es_AR.yml
│ │ │ │ │ ├── media_archive.fa.yml
│ │ │ │ │ ├── media_archive.fa_AF.yml
│ │ │ │ │ ├── media_archive.fr.yml
│ │ │ │ │ ├── media_archive.he.yml
│ │ │ │ │ ├── media_archive.hr.yml
│ │ │ │ │ ├── media_archive.hu.yml
│ │ │ │ │ ├── media_archive.hy.yml
│ │ │ │ │ ├── media_archive.hy_AM.yml
│ │ │ │ │ ├── media_archive.id.yml
│ │ │ │ │ ├── media_archive.it.yml
│ │ │ │ │ ├── media_archive.ka.yml
│ │ │ │ │ ├── media_archive.ko.yml
│ │ │ │ │ ├── media_archive.ku.yml
│ │ │ │ │ ├── media_archive.lv.yml
│ │ │ │ │ ├── media_archive.mr.yml
│ │ │ │ │ ├── media_archive.nb_NO.yml
│ │ │ │ │ ├── media_archive.nl.yml
│ │ │ │ │ ├── media_archive.pa.yml
│ │ │ │ │ ├── media_archive.pl.yml
│ │ │ │ │ ├── media_archive.ps.yml
│ │ │ │ │ ├── media_archive.pt.yml
│ │ │ │ │ ├── media_archive.pt_BR.yml
│ │ │ │ │ ├── media_archive.ro.yml
│ │ │ │ │ ├── media_archive.ru.yml
│ │ │ │ │ ├── media_archive.sh.yml
│ │ │ │ │ ├── media_archive.sq.yml
│ │ │ │ │ ├── media_archive.sr.yml
│ │ │ │ │ ├── media_archive.sv.yml
│ │ │ │ │ ├── media_archive.tr.yml
│ │ │ │ │ ├── media_archive.uk.yml
│ │ │ │ │ ├── media_archive.vi.yml
│ │ │ │ │ ├── media_archive.zh.yml
│ │ │ │ │ ├── media_archive.zh_TW.yml
│ │ │ │ │ ├── messages.ar.yml
│ │ │ │ │ ├── messages.az.yml
│ │ │ │ │ ├── messages.be.yml
│ │ │ │ │ ├── messages.bn.yml
│ │ │ │ │ ├── messages.cs.yml
│ │ │ │ │ ├── messages.da.yml
│ │ │ │ │ ├── messages.de.yml
│ │ │ │ │ ├── messages.de_AT.yml
│ │ │ │ │ ├── messages.el.yml
│ │ │ │ │ ├── messages.en.yml
│ │ │ │ │ ├── messages.en.yml~
│ │ │ │ │ ├── messages.en_GB.yml
│ │ │ │ │ ├── messages.es.yml
│ │ │ │ │ ├── messages.es_AR.yml
│ │ │ │ │ ├── messages.fa.yml
│ │ │ │ │ ├── messages.fa_AF.yml
│ │ │ │ │ ├── messages.fr.yml
│ │ │ │ │ ├── messages.he.yml
│ │ │ │ │ ├── messages.hr.yml
│ │ │ │ │ ├── messages.hu.yml
│ │ │ │ │ ├── messages.hy.yml
│ │ │ │ │ ├── messages.hy_AM.yml
│ │ │ │ │ ├── messages.id.yml
│ │ │ │ │ ├── messages.it.yml
│ │ │ │ │ ├── messages.ka.yml
│ │ │ │ │ ├── messages.ko.yml
│ │ │ │ │ ├── messages.ku.yml
│ │ │ │ │ ├── messages.lv.yml
│ │ │ │ │ ├── messages.mr.yml
│ │ │ │ │ ├── messages.nb_NO.yml
│ │ │ │ │ ├── messages.nl.yml
│ │ │ │ │ ├── messages.pa.yml
│ │ │ │ │ ├── messages.pl.yml
│ │ │ │ │ ├── messages.pl.yml~
│ │ │ │ │ ├── messages.ps.yml
│ │ │ │ │ ├── messages.pt.yml
│ │ │ │ │ ├── messages.pt_BR.yml
│ │ │ │ │ ├── messages.ro.yml
│ │ │ │ │ ├── messages.ru.yml
│ │ │ │ │ ├── messages.sh.yml
│ │ │ │ │ ├── messages.sq.yml
│ │ │ │ │ ├── messages.sr.yml
│ │ │ │ │ ├── messages.sv.yml
│ │ │ │ │ ├── messages.tr.yml
│ │ │ │ │ ├── messages.uk.yml
│ │ │ │ │ ├── messages.vi.yml
│ │ │ │ │ ├── messages.zh.yml
│ │ │ │ │ ├── messages.zh_TW.yml
│ │ │ │ │ ├── new_comments.ar.yml
│ │ │ │ │ ├── new_comments.az.yml
│ │ │ │ │ ├── new_comments.be.yml
│ │ │ │ │ ├── new_comments.bn.yml
│ │ │ │ │ ├── new_comments.cs.yml
│ │ │ │ │ ├── new_comments.da.yml
│ │ │ │ │ ├── new_comments.de.yml
│ │ │ │ │ ├── new_comments.de_AT.yml
│ │ │ │ │ ├── new_comments.el.yml
│ │ │ │ │ ├── new_comments.en.yml
│ │ │ │ │ ├── new_comments.en_GB.yml
│ │ │ │ │ ├── new_comments.es.yml
│ │ │ │ │ ├── new_comments.es_AR.yml
│ │ │ │ │ ├── new_comments.fa.yml
│ │ │ │ │ ├── new_comments.fa_AF.yml
│ │ │ │ │ ├── new_comments.fr.yml
│ │ │ │ │ ├── new_comments.he.yml
│ │ │ │ │ ├── new_comments.hr.yml
│ │ │ │ │ ├── new_comments.hu.yml
│ │ │ │ │ ├── new_comments.hy.yml
│ │ │ │ │ ├── new_comments.hy_AM.yml
│ │ │ │ │ ├── new_comments.id.yml
│ │ │ │ │ ├── new_comments.it.yml
│ │ │ │ │ ├── new_comments.ka.yml
│ │ │ │ │ ├── new_comments.ko.yml
│ │ │ │ │ ├── new_comments.ku.yml
│ │ │ │ │ ├── new_comments.lv.yml
│ │ │ │ │ ├── new_comments.mr.yml
│ │ │ │ │ ├── new_comments.nb_NO.yml
│ │ │ │ │ ├── new_comments.nl.yml
│ │ │ │ │ ├── new_comments.pa.yml
│ │ │ │ │ ├── new_comments.pl.yml
│ │ │ │ │ ├── new_comments.ps.yml
│ │ │ │ │ ├── new_comments.pt.yml
│ │ │ │ │ ├── new_comments.pt_BR.yml
│ │ │ │ │ ├── new_comments.ro.yml
│ │ │ │ │ ├── new_comments.ru.yml
│ │ │ │ │ ├── new_comments.sh.yml
│ │ │ │ │ ├── new_comments.sq.yml
│ │ │ │ │ ├── new_comments.sr.yml
│ │ │ │ │ ├── new_comments.sv.yml
│ │ │ │ │ ├── new_comments.tr.yml
│ │ │ │ │ ├── new_comments.uk.yml
│ │ │ │ │ ├── new_comments.vi.yml
│ │ │ │ │ ├── new_comments.zh.yml
│ │ │ │ │ ├── new_comments.zh_TW.yml
│ │ │ │ │ ├── plugins.ar.yml
│ │ │ │ │ ├── plugins.az.yml
│ │ │ │ │ ├── plugins.be.yml
│ │ │ │ │ ├── plugins.bn.yml
│ │ │ │ │ ├── plugins.cs.yml
│ │ │ │ │ ├── plugins.da.yml
│ │ │ │ │ ├── plugins.de.yml
│ │ │ │ │ ├── plugins.de_AT.yml
│ │ │ │ │ ├── plugins.el.yml
│ │ │ │ │ ├── plugins.en.yml
│ │ │ │ │ ├── plugins.en_GB.yml
│ │ │ │ │ ├── plugins.es.yml
│ │ │ │ │ ├── plugins.es_AR.yml
│ │ │ │ │ ├── plugins.fa.yml
│ │ │ │ │ ├── plugins.fa_AF.yml
│ │ │ │ │ ├── plugins.fr.yml
│ │ │ │ │ ├── plugins.he.yml
│ │ │ │ │ ├── plugins.hr.yml
│ │ │ │ │ ├── plugins.hu.yml
│ │ │ │ │ ├── plugins.hy.yml
│ │ │ │ │ ├── plugins.hy_AM.yml
│ │ │ │ │ ├── plugins.id.yml
│ │ │ │ │ ├── plugins.it.yml
│ │ │ │ │ ├── plugins.ka.yml
│ │ │ │ │ ├── plugins.ko.yml
│ │ │ │ │ ├── plugins.ku.yml
│ │ │ │ │ ├── plugins.lv.yml
│ │ │ │ │ ├── plugins.mr.yml
│ │ │ │ │ ├── plugins.nb_NO.yml
│ │ │ │ │ ├── plugins.nl.yml
│ │ │ │ │ ├── plugins.pa.yml
│ │ │ │ │ ├── plugins.pl.yml
│ │ │ │ │ ├── plugins.ps.yml
│ │ │ │ │ ├── plugins.pt.yml
│ │ │ │ │ ├── plugins.pt_BR.yml
│ │ │ │ │ ├── plugins.ro.yml
│ │ │ │ │ ├── plugins.ru.yml
│ │ │ │ │ ├── plugins.sh.yml
│ │ │ │ │ ├── plugins.sq.yml
│ │ │ │ │ ├── plugins.sr.yml
│ │ │ │ │ ├── plugins.sv.yml
│ │ │ │ │ ├── plugins.tr.yml
│ │ │ │ │ ├── plugins.uk.yml
│ │ │ │ │ ├── plugins.vi.yml
│ │ │ │ │ ├── plugins.zh.yml
│ │ │ │ │ ├── plugins.zh_TW.yml
│ │ │ │ │ ├── plugins_manager.ar.yml
│ │ │ │ │ ├── plugins_manager.az.yml
│ │ │ │ │ ├── plugins_manager.be.yml
│ │ │ │ │ ├── plugins_manager.bn.yml
│ │ │ │ │ ├── plugins_manager.cs.yml
│ │ │ │ │ ├── plugins_manager.da.yml
│ │ │ │ │ ├── plugins_manager.de.yml
│ │ │ │ │ ├── plugins_manager.de_AT.yml
│ │ │ │ │ ├── plugins_manager.el.yml
│ │ │ │ │ ├── plugins_manager.en.yml
│ │ │ │ │ ├── plugins_manager.en_GB.yml
│ │ │ │ │ ├── plugins_manager.es.yml
│ │ │ │ │ ├── plugins_manager.es_AR.yml
│ │ │ │ │ ├── plugins_manager.fa.yml
│ │ │ │ │ ├── plugins_manager.fa_AF.yml
│ │ │ │ │ ├── plugins_manager.fr.yml
│ │ │ │ │ ├── plugins_manager.he.yml
│ │ │ │ │ ├── plugins_manager.hr.yml
│ │ │ │ │ ├── plugins_manager.hu.yml
│ │ │ │ │ ├── plugins_manager.hy.yml
│ │ │ │ │ ├── plugins_manager.hy_AM.yml
│ │ │ │ │ ├── plugins_manager.id.yml
│ │ │ │ │ ├── plugins_manager.it.yml
│ │ │ │ │ ├── plugins_manager.ka.yml
│ │ │ │ │ ├── plugins_manager.ko.yml
│ │ │ │ │ ├── plugins_manager.ku.yml
│ │ │ │ │ ├── plugins_manager.lv.yml
│ │ │ │ │ ├── plugins_manager.mr.yml
│ │ │ │ │ ├── plugins_manager.nb_NO.yml
│ │ │ │ │ ├── plugins_manager.nl.yml
│ │ │ │ │ ├── plugins_manager.pa.yml
│ │ │ │ │ ├── plugins_manager.pl.yml
│ │ │ │ │ ├── plugins_manager.ps.yml
│ │ │ │ │ ├── plugins_manager.pt.yml
│ │ │ │ │ ├── plugins_manager.pt_BR.yml
│ │ │ │ │ ├── plugins_manager.ro.yml
│ │ │ │ │ ├── plugins_manager.ru.yml
│ │ │ │ │ ├── plugins_manager.sh.yml
│ │ │ │ │ ├── plugins_manager.sq.yml
│ │ │ │ │ ├── plugins_manager.sr.yml
│ │ │ │ │ ├── plugins_manager.sv.yml
│ │ │ │ │ ├── plugins_manager.tr.yml
│ │ │ │ │ ├── plugins_manager.uk.yml
│ │ │ │ │ ├── plugins_manager.vi.yml
│ │ │ │ │ ├── plugins_manager.zh.yml
│ │ │ │ │ ├── plugins_manager.zh_TW.yml
│ │ │ │ │ ├── preview.ar.yml
│ │ │ │ │ ├── preview.az.yml
│ │ │ │ │ ├── preview.be.yml
│ │ │ │ │ ├── preview.bn.yml
│ │ │ │ │ ├── preview.cs.yml
│ │ │ │ │ ├── preview.da.yml
│ │ │ │ │ ├── preview.de.yml
│ │ │ │ │ ├── preview.de_AT.yml
│ │ │ │ │ ├── preview.el.yml
│ │ │ │ │ ├── preview.en.yml
│ │ │ │ │ ├── preview.en_GB.yml
│ │ │ │ │ ├── preview.es.yml
│ │ │ │ │ ├── preview.es_AR.yml
│ │ │ │ │ ├── preview.fa.yml
│ │ │ │ │ ├── preview.fa_AF.yml
│ │ │ │ │ ├── preview.fr.yml
│ │ │ │ │ ├── preview.he.yml
│ │ │ │ │ ├── preview.hr.yml
│ │ │ │ │ ├── preview.hu.yml
│ │ │ │ │ ├── preview.hy.yml
│ │ │ │ │ ├── preview.hy_AM.yml
│ │ │ │ │ ├── preview.id.yml
│ │ │ │ │ ├── preview.it.yml
│ │ │ │ │ ├── preview.ka.yml
│ │ │ │ │ ├── preview.ko.yml
│ │ │ │ │ ├── preview.ku.yml
│ │ │ │ │ ├── preview.lv.yml
│ │ │ │ │ ├── preview.mr.yml
│ │ │ │ │ ├── preview.nb_NO.yml
│ │ │ │ │ ├── preview.nl.yml
│ │ │ │ │ ├── preview.pa.yml
│ │ │ │ │ ├── preview.pl.yml
│ │ │ │ │ ├── preview.ps.yml
│ │ │ │ │ ├── preview.pt.yml
│ │ │ │ │ ├── preview.pt_BR.yml
│ │ │ │ │ ├── preview.ro.yml
│ │ │ │ │ ├── preview.ru.yml
│ │ │ │ │ ├── preview.sh.yml
│ │ │ │ │ ├── preview.sq.yml
│ │ │ │ │ ├── preview.sr.yml
│ │ │ │ │ ├── preview.sv.yml
│ │ │ │ │ ├── preview.tr.yml
│ │ │ │ │ ├── preview.uk.yml
│ │ │ │ │ ├── preview.vi.yml
│ │ │ │ │ ├── preview.zh.yml
│ │ │ │ │ ├── preview.zh_TW.yml
│ │ │ │ │ ├── pub.ar.yml
│ │ │ │ │ ├── pub.az.yml
│ │ │ │ │ ├── pub.be.yml
│ │ │ │ │ ├── pub.bn.yml
│ │ │ │ │ ├── pub.cs.yml
│ │ │ │ │ ├── pub.da.yml
│ │ │ │ │ ├── pub.de.yml
│ │ │ │ │ ├── pub.de_AT.yml
│ │ │ │ │ ├── pub.el.yml
│ │ │ │ │ ├── pub.en.yml
│ │ │ │ │ ├── pub.en_GB.yml
│ │ │ │ │ ├── pub.es.yml
│ │ │ │ │ ├── pub.es_AR.yml
│ │ │ │ │ ├── pub.fa.yml
│ │ │ │ │ ├── pub.fa_AF.yml
│ │ │ │ │ ├── pub.fr.yml
│ │ │ │ │ ├── pub.he.yml
│ │ │ │ │ ├── pub.hr.yml
│ │ │ │ │ ├── pub.hu.yml
│ │ │ │ │ ├── pub.hy.yml
│ │ │ │ │ ├── pub.hy_AM.yml
│ │ │ │ │ ├── pub.id.yml
│ │ │ │ │ ├── pub.it.yml
│ │ │ │ │ ├── pub.ka.yml
│ │ │ │ │ ├── pub.ko.yml
│ │ │ │ │ ├── pub.ku.yml
│ │ │ │ │ ├── pub.lv.yml
│ │ │ │ │ ├── pub.mr.yml
│ │ │ │ │ ├── pub.nb_NO.yml
│ │ │ │ │ ├── pub.nl.yml
│ │ │ │ │ ├── pub.pa.yml
│ │ │ │ │ ├── pub.pl.yml
│ │ │ │ │ ├── pub.ps.yml
│ │ │ │ │ ├── pub.pt.yml
│ │ │ │ │ ├── pub.pt_BR.yml
│ │ │ │ │ ├── pub.ro.yml
│ │ │ │ │ ├── pub.ru.yml
│ │ │ │ │ ├── pub.sh.yml
│ │ │ │ │ ├── pub.sq.yml
│ │ │ │ │ ├── pub.sr.yml
│ │ │ │ │ ├── pub.sv.yml
│ │ │ │ │ ├── pub.tr.yml
│ │ │ │ │ ├── pub.uk.yml
│ │ │ │ │ ├── pub.vi.yml
│ │ │ │ │ ├── pub.zh.yml
│ │ │ │ │ ├── pub.zh_TW.yml
│ │ │ │ │ ├── sections.ar.yml
│ │ │ │ │ ├── sections.az.yml
│ │ │ │ │ ├── sections.be.yml
│ │ │ │ │ ├── sections.bn.yml
│ │ │ │ │ ├── sections.cs.yml
│ │ │ │ │ ├── sections.da.yml
│ │ │ │ │ ├── sections.de.yml
│ │ │ │ │ ├── sections.de_AT.yml
│ │ │ │ │ ├── sections.el.yml
│ │ │ │ │ ├── sections.en.yml
│ │ │ │ │ ├── sections.en_GB.yml
│ │ │ │ │ ├── sections.es.yml
│ │ │ │ │ ├── sections.es_AR.yml
│ │ │ │ │ ├── sections.fa.yml
│ │ │ │ │ ├── sections.fa_AF.yml
│ │ │ │ │ ├── sections.fr.yml
│ │ │ │ │ ├── sections.he.yml
│ │ │ │ │ ├── sections.hr.yml
│ │ │ │ │ ├── sections.hu.yml
│ │ │ │ │ ├── sections.hy.yml
│ │ │ │ │ ├── sections.hy_AM.yml
│ │ │ │ │ ├── sections.id.yml
│ │ │ │ │ ├── sections.it.yml
│ │ │ │ │ ├── sections.ka.yml
│ │ │ │ │ ├── sections.ko.yml
│ │ │ │ │ ├── sections.ku.yml
│ │ │ │ │ ├── sections.lv.yml
│ │ │ │ │ ├── sections.mr.yml
│ │ │ │ │ ├── sections.nb_NO.yml
│ │ │ │ │ ├── sections.nl.yml
│ │ │ │ │ ├── sections.pa.yml
│ │ │ │ │ ├── sections.pl.yml
│ │ │ │ │ ├── sections.ps.yml
│ │ │ │ │ ├── sections.pt.yml
│ │ │ │ │ ├── sections.pt_BR.yml
│ │ │ │ │ ├── sections.ro.yml
│ │ │ │ │ ├── sections.ru.yml
│ │ │ │ │ ├── sections.sh.yml
│ │ │ │ │ ├── sections.sq.yml
│ │ │ │ │ ├── sections.sr.yml
│ │ │ │ │ ├── sections.sv.yml
│ │ │ │ │ ├── sections.tr.yml
│ │ │ │ │ ├── sections.uk.yml
│ │ │ │ │ ├── sections.vi.yml
│ │ │ │ │ ├── sections.zh.yml
│ │ │ │ │ ├── sections.zh_TW.yml
│ │ │ │ │ ├── support.ar.yml
│ │ │ │ │ ├── support.az.yml
│ │ │ │ │ ├── support.be.yml
│ │ │ │ │ ├── support.bn.yml
│ │ │ │ │ ├── support.cs.yml
│ │ │ │ │ ├── support.da.yml
│ │ │ │ │ ├── support.de.yml
│ │ │ │ │ ├── support.de_AT.yml
│ │ │ │ │ ├── support.el.yml
│ │ │ │ │ ├── support.en.yml
│ │ │ │ │ ├── support.en_GB.yml
│ │ │ │ │ ├── support.es.yml
│ │ │ │ │ ├── support.es_AR.yml
│ │ │ │ │ ├── support.fa.yml
│ │ │ │ │ ├── support.fa_AF.yml
│ │ │ │ │ ├── support.fr.yml
│ │ │ │ │ ├── support.he.yml
│ │ │ │ │ ├── support.hr.yml
│ │ │ │ │ ├── support.hu.yml
│ │ │ │ │ ├── support.hy.yml
│ │ │ │ │ ├── support.hy_AM.yml
│ │ │ │ │ ├── support.id.yml
│ │ │ │ │ ├── support.it.yml
│ │ │ │ │ ├── support.ka.yml
│ │ │ │ │ ├── support.ko.yml
│ │ │ │ │ ├── support.ku.yml
│ │ │ │ │ ├── support.lv.yml
│ │ │ │ │ ├── support.mr.yml
│ │ │ │ │ ├── support.nb_NO.yml
│ │ │ │ │ ├── support.nl.yml
│ │ │ │ │ ├── support.pa.yml
│ │ │ │ │ ├── support.pl.yml
│ │ │ │ │ ├── support.ps.yml
│ │ │ │ │ ├── support.pt.yml
│ │ │ │ │ ├── support.pt_BR.yml
│ │ │ │ │ ├── support.ro.yml
│ │ │ │ │ ├── support.ru.yml
│ │ │ │ │ ├── support.sh.yml
│ │ │ │ │ ├── support.sq.yml
│ │ │ │ │ ├── support.sr.yml
│ │ │ │ │ ├── support.sv.yml
│ │ │ │ │ ├── support.tr.yml
│ │ │ │ │ ├── support.uk.yml
│ │ │ │ │ ├── support.vi.yml
│ │ │ │ │ ├── support.zh.yml
│ │ │ │ │ ├── support.zh_TW.yml
│ │ │ │ │ ├── system_pref.ar.yml
│ │ │ │ │ ├── system_pref.az.yml
│ │ │ │ │ ├── system_pref.be.yml
│ │ │ │ │ ├── system_pref.bn.yml
│ │ │ │ │ ├── system_pref.cs.yml
│ │ │ │ │ ├── system_pref.da.yml
│ │ │ │ │ ├── system_pref.de.yml
│ │ │ │ │ ├── system_pref.de_AT.yml
│ │ │ │ │ ├── system_pref.el.yml
│ │ │ │ │ ├── system_pref.en.yml
│ │ │ │ │ ├── system_pref.en_GB.yml
│ │ │ │ │ ├── system_pref.es.yml
│ │ │ │ │ ├── system_pref.es_AR.yml
│ │ │ │ │ ├── system_pref.fa.yml
│ │ │ │ │ ├── system_pref.fa_AF.yml
│ │ │ │ │ ├── system_pref.fr.yml
│ │ │ │ │ ├── system_pref.he.yml
│ │ │ │ │ ├── system_pref.hr.yml
│ │ │ │ │ ├── system_pref.hu.yml
│ │ │ │ │ ├── system_pref.hy.yml
│ │ │ │ │ ├── system_pref.hy_AM.yml
│ │ │ │ │ ├── system_pref.id.yml
│ │ │ │ │ ├── system_pref.it.yml
│ │ │ │ │ ├── system_pref.ka.yml
│ │ │ │ │ ├── system_pref.ko.yml
│ │ │ │ │ ├── system_pref.ku.yml
│ │ │ │ │ ├── system_pref.lv.yml
│ │ │ │ │ ├── system_pref.mr.yml
│ │ │ │ │ ├── system_pref.nb_NO.yml
│ │ │ │ │ ├── system_pref.nl.yml
│ │ │ │ │ ├── system_pref.pa.yml
│ │ │ │ │ ├── system_pref.pl.yml
│ │ │ │ │ ├── system_pref.ps.yml
│ │ │ │ │ ├── system_pref.pt.yml
│ │ │ │ │ ├── system_pref.pt_BR.yml
│ │ │ │ │ ├── system_pref.ro.yml
│ │ │ │ │ ├── system_pref.ru.yml
│ │ │ │ │ ├── system_pref.sh.yml
│ │ │ │ │ ├── system_pref.sq.yml
│ │ │ │ │ ├── system_pref.sr.yml
│ │ │ │ │ ├── system_pref.sv.yml
│ │ │ │ │ ├── system_pref.tr.yml
│ │ │ │ │ ├── system_pref.uk.yml
│ │ │ │ │ ├── system_pref.vi.yml
│ │ │ │ │ ├── system_pref.zh.yml
│ │ │ │ │ ├── system_pref.zh_TW.yml
│ │ │ │ │ ├── themes.ar.yml
│ │ │ │ │ ├── themes.az.yml
│ │ │ │ │ ├── themes.be.yml
│ │ │ │ │ ├── themes.bn.yml
│ │ │ │ │ ├── themes.cs.yml
│ │ │ │ │ ├── themes.da.yml
│ │ │ │ │ ├── themes.de.yml
│ │ │ │ │ ├── themes.de_AT.yml
│ │ │ │ │ ├── themes.el.yml
│ │ │ │ │ ├── themes.en.yml
│ │ │ │ │ ├── themes.en_GB.yml
│ │ │ │ │ ├── themes.es.yml
│ │ │ │ │ ├── themes.es_AR.yml
│ │ │ │ │ ├── themes.fa.yml
│ │ │ │ │ ├── themes.fa_AF.yml
│ │ │ │ │ ├── themes.fr.yml
│ │ │ │ │ ├── themes.he.yml
│ │ │ │ │ ├── themes.hr.yml
│ │ │ │ │ ├── themes.hu.yml
│ │ │ │ │ ├── themes.hy.yml
│ │ │ │ │ ├── themes.hy_AM.yml
│ │ │ │ │ ├── themes.id.yml
│ │ │ │ │ ├── themes.it.yml
│ │ │ │ │ ├── themes.ka.yml
│ │ │ │ │ ├── themes.ko.yml
│ │ │ │ │ ├── themes.ku.yml
│ │ │ │ │ ├── themes.lv.yml
│ │ │ │ │ ├── themes.mr.yml
│ │ │ │ │ ├── themes.nb_NO.yml
│ │ │ │ │ ├── themes.nl.yml
│ │ │ │ │ ├── themes.pa.yml
│ │ │ │ │ ├── themes.pl.yml
│ │ │ │ │ ├── themes.ps.yml
│ │ │ │ │ ├── themes.pt.yml
│ │ │ │ │ ├── themes.pt_BR.yml
│ │ │ │ │ ├── themes.ro.yml
│ │ │ │ │ ├── themes.ru.yml
│ │ │ │ │ ├── themes.sh.yml
│ │ │ │ │ ├── themes.sq.yml
│ │ │ │ │ ├── themes.sr.yml
│ │ │ │ │ ├── themes.sv.yml
│ │ │ │ │ ├── themes.tr.yml
│ │ │ │ │ ├── themes.uk.yml
│ │ │ │ │ ├── themes.vi.yml
│ │ │ │ │ ├── themes.zh.yml
│ │ │ │ │ ├── themes.zh_TW.yml
│ │ │ │ │ ├── tiny_media_plugin.ar.yml
│ │ │ │ │ ├── tiny_media_plugin.az.yml
│ │ │ │ │ ├── tiny_media_plugin.be.yml
│ │ │ │ │ ├── tiny_media_plugin.bn.yml
│ │ │ │ │ ├── tiny_media_plugin.cs.yml
│ │ │ │ │ ├── tiny_media_plugin.da.yml
│ │ │ │ │ ├── tiny_media_plugin.de.yml
│ │ │ │ │ ├── tiny_media_plugin.de_AT.yml
│ │ │ │ │ ├── tiny_media_plugin.el.yml
│ │ │ │ │ ├── tiny_media_plugin.en.yml
│ │ │ │ │ ├── tiny_media_plugin.en_GB.yml
│ │ │ │ │ ├── tiny_media_plugin.es.yml
│ │ │ │ │ ├── tiny_media_plugin.es_AR.yml
│ │ │ │ │ ├── tiny_media_plugin.fa.yml
│ │ │ │ │ ├── tiny_media_plugin.fa_AF.yml
│ │ │ │ │ ├── tiny_media_plugin.fr.yml
│ │ │ │ │ ├── tiny_media_plugin.he.yml
│ │ │ │ │ ├── tiny_media_plugin.hr.yml
│ │ │ │ │ ├── tiny_media_plugin.hu.yml
│ │ │ │ │ ├── tiny_media_plugin.hy.yml
│ │ │ │ │ ├── tiny_media_plugin.hy_AM.yml
│ │ │ │ │ ├── tiny_media_plugin.id.yml
│ │ │ │ │ ├── tiny_media_plugin.it.yml
│ │ │ │ │ ├── tiny_media_plugin.ka.yml
│ │ │ │ │ ├── tiny_media_plugin.ko.yml
│ │ │ │ │ ├── tiny_media_plugin.ku.yml
│ │ │ │ │ ├── tiny_media_plugin.lv.yml
│ │ │ │ │ ├── tiny_media_plugin.mr.yml
│ │ │ │ │ ├── tiny_media_plugin.nb_NO.yml
│ │ │ │ │ ├── tiny_media_plugin.nl.yml
│ │ │ │ │ ├── tiny_media_plugin.pa.yml
│ │ │ │ │ ├── tiny_media_plugin.pl.yml
│ │ │ │ │ ├── tiny_media_plugin.ps.yml
│ │ │ │ │ ├── tiny_media_plugin.pt.yml
│ │ │ │ │ ├── tiny_media_plugin.pt_BR.yml
│ │ │ │ │ ├── tiny_media_plugin.ro.yml
│ │ │ │ │ ├── tiny_media_plugin.ru.yml
│ │ │ │ │ ├── tiny_media_plugin.sh.yml
│ │ │ │ │ ├── tiny_media_plugin.sq.yml
│ │ │ │ │ ├── tiny_media_plugin.sr.yml
│ │ │ │ │ ├── tiny_media_plugin.sv.yml
│ │ │ │ │ ├── tiny_media_plugin.tr.yml
│ │ │ │ │ ├── tiny_media_plugin.uk.yml
│ │ │ │ │ ├── tiny_media_plugin.vi.yml
│ │ │ │ │ ├── tiny_media_plugin.zh.yml
│ │ │ │ │ ├── tiny_media_plugin.zh_TW.yml
│ │ │ │ │ ├── topics.ar.yml
│ │ │ │ │ ├── topics.az.yml
│ │ │ │ │ ├── topics.be.yml
│ │ │ │ │ ├── topics.bn.yml
│ │ │ │ │ ├── topics.cs.yml
│ │ │ │ │ ├── topics.da.yml
│ │ │ │ │ ├── topics.de.yml
│ │ │ │ │ ├── topics.de_AT.yml
│ │ │ │ │ ├── topics.el.yml
│ │ │ │ │ ├── topics.en.yml
│ │ │ │ │ ├── topics.en_GB.yml
│ │ │ │ │ ├── topics.es.yml
│ │ │ │ │ ├── topics.es_AR.yml
│ │ │ │ │ ├── topics.fa.yml
│ │ │ │ │ ├── topics.fa_AF.yml
│ │ │ │ │ ├── topics.fr.yml
│ │ │ │ │ ├── topics.he.yml
│ │ │ │ │ ├── topics.hr.yml
│ │ │ │ │ ├── topics.hu.yml
│ │ │ │ │ ├── topics.hy.yml
│ │ │ │ │ ├── topics.hy_AM.yml
│ │ │ │ │ ├── topics.id.yml
│ │ │ │ │ ├── topics.it.yml
│ │ │ │ │ ├── topics.ka.yml
│ │ │ │ │ ├── topics.ko.yml
│ │ │ │ │ ├── topics.ku.yml
│ │ │ │ │ ├── topics.lv.yml
│ │ │ │ │ ├── topics.mr.yml
│ │ │ │ │ ├── topics.nb_NO.yml
│ │ │ │ │ ├── topics.nl.yml
│ │ │ │ │ ├── topics.pa.yml
│ │ │ │ │ ├── topics.pl.yml
│ │ │ │ │ ├── topics.ps.yml
│ │ │ │ │ ├── topics.pt.yml
│ │ │ │ │ ├── topics.pt_BR.yml
│ │ │ │ │ ├── topics.ro.yml
│ │ │ │ │ ├── topics.ru.yml
│ │ │ │ │ ├── topics.sh.yml
│ │ │ │ │ ├── topics.sq.yml
│ │ │ │ │ ├── topics.sr.yml
│ │ │ │ │ ├── topics.sv.yml
│ │ │ │ │ ├── topics.tr.yml
│ │ │ │ │ ├── topics.uk.yml
│ │ │ │ │ ├── topics.vi.yml
│ │ │ │ │ ├── topics.zh.yml
│ │ │ │ │ ├── topics.zh_TW.yml
│ │ │ │ │ ├── user_subscription_sections.ar.yml
│ │ │ │ │ ├── user_subscription_sections.az.yml
│ │ │ │ │ ├── user_subscription_sections.be.yml
│ │ │ │ │ ├── user_subscription_sections.bn.yml
│ │ │ │ │ ├── user_subscription_sections.cs.yml
│ │ │ │ │ ├── user_subscription_sections.da.yml
│ │ │ │ │ ├── user_subscription_sections.de.yml
│ │ │ │ │ ├── user_subscription_sections.de_AT.yml
│ │ │ │ │ ├── user_subscription_sections.el.yml
│ │ │ │ │ ├── user_subscription_sections.en.yml
│ │ │ │ │ ├── user_subscription_sections.en_GB.yml
│ │ │ │ │ ├── user_subscription_sections.es.yml
│ │ │ │ │ ├── user_subscription_sections.es_AR.yml
│ │ │ │ │ ├── user_subscription_sections.fa.yml
│ │ │ │ │ ├── user_subscription_sections.fa_AF.yml
│ │ │ │ │ ├── user_subscription_sections.fr.yml
│ │ │ │ │ ├── user_subscription_sections.he.yml
│ │ │ │ │ ├── user_subscription_sections.hr.yml
│ │ │ │ │ ├── user_subscription_sections.hu.yml
│ │ │ │ │ ├── user_subscription_sections.hy.yml
│ │ │ │ │ ├── user_subscription_sections.hy_AM.yml
│ │ │ │ │ ├── user_subscription_sections.id.yml
│ │ │ │ │ ├── user_subscription_sections.it.yml
│ │ │ │ │ ├── user_subscription_sections.ka.yml
│ │ │ │ │ ├── user_subscription_sections.ko.yml
│ │ │ │ │ ├── user_subscription_sections.ku.yml
│ │ │ │ │ ├── user_subscription_sections.lv.yml
│ │ │ │ │ ├── user_subscription_sections.mr.yml
│ │ │ │ │ ├── user_subscription_sections.nb_NO.yml
│ │ │ │ │ ├── user_subscription_sections.nl.yml
│ │ │ │ │ ├── user_subscription_sections.pa.yml
│ │ │ │ │ ├── user_subscription_sections.pl.yml
│ │ │ │ │ ├── user_subscription_sections.ps.yml
│ │ │ │ │ ├── user_subscription_sections.pt.yml
│ │ │ │ │ ├── user_subscription_sections.pt_BR.yml
│ │ │ │ │ ├── user_subscription_sections.ro.yml
│ │ │ │ │ ├── user_subscription_sections.ru.yml
│ │ │ │ │ ├── user_subscription_sections.sh.yml
│ │ │ │ │ ├── user_subscription_sections.sq.yml
│ │ │ │ │ ├── user_subscription_sections.sr.yml
│ │ │ │ │ ├── user_subscription_sections.sv.yml
│ │ │ │ │ ├── user_subscription_sections.tr.yml
│ │ │ │ │ ├── user_subscription_sections.uk.yml
│ │ │ │ │ ├── user_subscription_sections.vi.yml
│ │ │ │ │ ├── user_subscription_sections.zh.yml
│ │ │ │ │ ├── user_subscription_sections.zh_TW.yml
│ │ │ │ │ ├── user_subscriptions.ar.yml
│ │ │ │ │ ├── user_subscriptions.az.yml
│ │ │ │ │ ├── user_subscriptions.be.yml
│ │ │ │ │ ├── user_subscriptions.bn.yml
│ │ │ │ │ ├── user_subscriptions.cs.yml
│ │ │ │ │ ├── user_subscriptions.da.yml
│ │ │ │ │ ├── user_subscriptions.de.yml
│ │ │ │ │ ├── user_subscriptions.de_AT.yml
│ │ │ │ │ ├── user_subscriptions.el.yml
│ │ │ │ │ ├── user_subscriptions.en.yml
│ │ │ │ │ ├── user_subscriptions.en_GB.yml
│ │ │ │ │ ├── user_subscriptions.es.yml
│ │ │ │ │ ├── user_subscriptions.es_AR.yml
│ │ │ │ │ ├── user_subscriptions.fa.yml
│ │ │ │ │ ├── user_subscriptions.fa_AF.yml
│ │ │ │ │ ├── user_subscriptions.fr.yml
│ │ │ │ │ ├── user_subscriptions.he.yml
│ │ │ │ │ ├── user_subscriptions.hr.yml
│ │ │ │ │ ├── user_subscriptions.hu.yml
│ │ │ │ │ ├── user_subscriptions.hy.yml
│ │ │ │ │ ├── user_subscriptions.hy_AM.yml
│ │ │ │ │ ├── user_subscriptions.id.yml
│ │ │ │ │ ├── user_subscriptions.it.yml
│ │ │ │ │ ├── user_subscriptions.ka.yml
│ │ │ │ │ ├── user_subscriptions.ko.yml
│ │ │ │ │ ├── user_subscriptions.ku.yml
│ │ │ │ │ ├── user_subscriptions.lv.yml
│ │ │ │ │ ├── user_subscriptions.mr.yml
│ │ │ │ │ ├── user_subscriptions.nb_NO.yml
│ │ │ │ │ ├── user_subscriptions.nl.yml
│ │ │ │ │ ├── user_subscriptions.pa.yml
│ │ │ │ │ ├── user_subscriptions.pl.yml
│ │ │ │ │ ├── user_subscriptions.ps.yml
│ │ │ │ │ ├── user_subscriptions.pt.yml
│ │ │ │ │ ├── user_subscriptions.pt_BR.yml
│ │ │ │ │ ├── user_subscriptions.ro.yml
│ │ │ │ │ ├── user_subscriptions.ru.yml
│ │ │ │ │ ├── user_subscriptions.sh.yml
│ │ │ │ │ ├── user_subscriptions.sq.yml
│ │ │ │ │ ├── user_subscriptions.sr.yml
│ │ │ │ │ ├── user_subscriptions.sv.yml
│ │ │ │ │ ├── user_subscriptions.tr.yml
│ │ │ │ │ ├── user_subscriptions.uk.yml
│ │ │ │ │ ├── user_subscriptions.vi.yml
│ │ │ │ │ ├── user_subscriptions.zh.yml
│ │ │ │ │ ├── user_subscriptions.zh_TW.yml
│ │ │ │ │ ├── user_types.ar.yml
│ │ │ │ │ ├── user_types.az.yml
│ │ │ │ │ ├── user_types.be.yml
│ │ │ │ │ ├── user_types.bn.yml
│ │ │ │ │ ├── user_types.cs.yml
│ │ │ │ │ ├── user_types.da.yml
│ │ │ │ │ ├── user_types.de.yml
│ │ │ │ │ ├── user_types.de_AT.yml
│ │ │ │ │ ├── user_types.el.yml
│ │ │ │ │ ├── user_types.en.yml
│ │ │ │ │ ├── user_types.en_GB.yml
│ │ │ │ │ ├── user_types.es.yml
│ │ │ │ │ ├── user_types.es_AR.yml
│ │ │ │ │ ├── user_types.fa.yml
│ │ │ │ │ ├── user_types.fa_AF.yml
│ │ │ │ │ ├── user_types.fr.yml
│ │ │ │ │ ├── user_types.he.yml
│ │ │ │ │ ├── user_types.hr.yml
│ │ │ │ │ ├── user_types.hu.yml
│ │ │ │ │ ├── user_types.hy.yml
│ │ │ │ │ ├── user_types.hy_AM.yml
│ │ │ │ │ ├── user_types.id.yml
│ │ │ │ │ ├── user_types.it.yml
│ │ │ │ │ ├── user_types.ka.yml
│ │ │ │ │ ├── user_types.ko.yml
│ │ │ │ │ ├── user_types.ku.yml
│ │ │ │ │ ├── user_types.lv.yml
│ │ │ │ │ ├── user_types.mr.yml
│ │ │ │ │ ├── user_types.nb_NO.yml
│ │ │ │ │ ├── user_types.nl.yml
│ │ │ │ │ ├── user_types.pa.yml
│ │ │ │ │ ├── user_types.pl.yml
│ │ │ │ │ ├── user_types.ps.yml
│ │ │ │ │ ├── user_types.pt.yml
│ │ │ │ │ ├── user_types.pt_BR.yml
│ │ │ │ │ ├── user_types.ro.yml
│ │ │ │ │ ├── user_types.ru.yml
│ │ │ │ │ ├── user_types.sh.yml
│ │ │ │ │ ├── user_types.sq.yml
│ │ │ │ │ ├── user_types.sr.yml
│ │ │ │ │ ├── user_types.sv.yml
│ │ │ │ │ ├── user_types.tr.yml
│ │ │ │ │ ├── user_types.uk.yml
│ │ │ │ │ ├── user_types.vi.yml
│ │ │ │ │ ├── user_types.zh.yml
│ │ │ │ │ ├── user_types.zh_TW.yml
│ │ │ │ │ ├── users.ar.yml
│ │ │ │ │ ├── users.az.yml
│ │ │ │ │ ├── users.be.yml
│ │ │ │ │ ├── users.bn.yml
│ │ │ │ │ ├── users.cs.yml
│ │ │ │ │ ├── users.da.yml
│ │ │ │ │ ├── users.de.yml
│ │ │ │ │ ├── users.de_AT.yml
│ │ │ │ │ ├── users.el.yml
│ │ │ │ │ ├── users.en.yml
│ │ │ │ │ ├── users.en_GB.yml
│ │ │ │ │ ├── users.es.yml
│ │ │ │ │ ├── users.es_AR.yml
│ │ │ │ │ ├── users.fa.yml
│ │ │ │ │ ├── users.fa_AF.yml
│ │ │ │ │ ├── users.fr.yml
│ │ │ │ │ ├── users.he.yml
│ │ │ │ │ ├── users.hr.yml
│ │ │ │ │ ├── users.hu.yml
│ │ │ │ │ ├── users.hy.yml
│ │ │ │ │ ├── users.hy_AM.yml
│ │ │ │ │ ├── users.id.yml
│ │ │ │ │ ├── users.it.yml
│ │ │ │ │ ├── users.ka.yml
│ │ │ │ │ ├── users.ko.yml
│ │ │ │ │ ├── users.ku.yml
│ │ │ │ │ ├── users.lv.yml
│ │ │ │ │ ├── users.mr.yml
│ │ │ │ │ ├── users.nb_NO.yml
│ │ │ │ │ ├── users.nl.yml
│ │ │ │ │ ├── users.pa.yml
│ │ │ │ │ ├── users.pl.yml
│ │ │ │ │ ├── users.ps.yml
│ │ │ │ │ ├── users.pt.yml
│ │ │ │ │ ├── users.pt_BR.yml
│ │ │ │ │ ├── users.ro.yml
│ │ │ │ │ ├── users.ru.yml
│ │ │ │ │ ├── users.sh.yml
│ │ │ │ │ ├── users.sq.yml
│ │ │ │ │ ├── users.sr.yml
│ │ │ │ │ ├── users.sv.yml
│ │ │ │ │ ├── users.tr.yml
│ │ │ │ │ ├── users.uk.yml
│ │ │ │ │ ├── users.vi.yml
│ │ │ │ │ ├── users.zh.yml
│ │ │ │ │ ├── users.zh_TW.yml
│ │ │ │ │ ├── validators.ar.yml
│ │ │ │ │ ├── validators.az.yml
│ │ │ │ │ ├── validators.be.yml
│ │ │ │ │ ├── validators.bn.yml
│ │ │ │ │ ├── validators.cs.yml
│ │ │ │ │ ├── validators.da.yml
│ │ │ │ │ ├── validators.de.yml
│ │ │ │ │ ├── validators.de_AT.yml
│ │ │ │ │ ├── validators.el.yml
│ │ │ │ │ ├── validators.en.yml
│ │ │ │ │ ├── validators.en_GB.yml
│ │ │ │ │ ├── validators.es.yml
│ │ │ │ │ ├── validators.es_AR.yml
│ │ │ │ │ ├── validators.fa.yml
│ │ │ │ │ ├── validators.fa_AF.yml
│ │ │ │ │ ├── validators.fr.yml
│ │ │ │ │ ├── validators.he.yml
│ │ │ │ │ ├── validators.hr.yml
│ │ │ │ │ ├── validators.hu.yml
│ │ │ │ │ ├── validators.hy.yml
│ │ │ │ │ ├── validators.hy_AM.yml
│ │ │ │ │ ├── validators.id.yml
│ │ │ │ │ ├── validators.it.yml
│ │ │ │ │ ├── validators.ka.yml
│ │ │ │ │ ├── validators.ko.yml
│ │ │ │ │ ├── validators.ku.yml
│ │ │ │ │ ├── validators.lv.yml
│ │ │ │ │ ├── validators.mr.yml
│ │ │ │ │ ├── validators.nb_NO.yml
│ │ │ │ │ ├── validators.nl.yml
│ │ │ │ │ ├── validators.pa.yml
│ │ │ │ │ ├── validators.pl.yml
│ │ │ │ │ ├── validators.ps.yml
│ │ │ │ │ ├── validators.pt.yml
│ │ │ │ │ ├── validators.pt_BR.yml
│ │ │ │ │ ├── validators.ro.yml
│ │ │ │ │ ├── validators.ru.yml
│ │ │ │ │ ├── validators.sh.yml
│ │ │ │ │ ├── validators.sq.yml
│ │ │ │ │ ├── validators.sr.yml
│ │ │ │ │ ├── validators.sv.yml
│ │ │ │ │ ├── validators.tr.yml
│ │ │ │ │ ├── validators.uk.yml
│ │ │ │ │ ├── validators.vi.yml
│ │ │ │ │ ├── validators.zh.yml
│ │ │ │ │ └── validators.zh_TW.yml
│ │ │ │ └── views/
│ │ │ │ ├── BackendArticleImages/
│ │ │ │ │ └── edit.html.twig
│ │ │ │ ├── BackendJournalistDashboard/
│ │ │ │ │ └── index.html.twig
│ │ │ │ ├── BackendPublications/
│ │ │ │ │ ├── edit.html.twig
│ │ │ │ │ ├── index.html.twig
│ │ │ │ │ └── remove.html.twig
│ │ │ │ ├── Comments/
│ │ │ │ │ └── index.html.twig
│ │ │ │ ├── Exception/
│ │ │ │ │ └── exception.html.twig
│ │ │ │ ├── Images/
│ │ │ │ │ ├── createFilter.html.twig
│ │ │ │ │ └── filterOptions.html.twig
│ │ │ │ ├── Menu/
│ │ │ │ │ └── knp_menu.html.twig
│ │ │ │ ├── Pagination/
│ │ │ │ │ └── pagination_bootstrap3.html.twig
│ │ │ │ ├── PasswordRecovery/
│ │ │ │ │ ├── check.html.twig
│ │ │ │ │ ├── email.txt.twig
│ │ │ │ │ └── index.html.twig
│ │ │ │ ├── Playlists/
│ │ │ │ │ └── index.html.twig
│ │ │ │ ├── Plugins/
│ │ │ │ │ └── index.html.twig
│ │ │ │ ├── Security/
│ │ │ │ │ └── login.html.twig
│ │ │ │ ├── SystemPref/
│ │ │ │ │ └── index.html.twig
│ │ │ │ ├── Topics/
│ │ │ │ │ └── index.html.twig
│ │ │ │ ├── Users/
│ │ │ │ │ └── index.html.twig
│ │ │ │ ├── admin_layout.html.twig
│ │ │ │ ├── admin_menu.html.twig
│ │ │ │ ├── form_fields.html.twig
│ │ │ │ ├── forms.html.twig
│ │ │ │ └── tooltip.html.twig
│ │ │ ├── Routing/
│ │ │ │ └── PluginsLoader.php
│ │ │ ├── Security/
│ │ │ │ ├── Encoder/
│ │ │ │ │ └── NewscoopPasswordEncoder.php
│ │ │ │ ├── Http/
│ │ │ │ │ └── Authentication/
│ │ │ │ │ ├── AbstractAuthenticationHandler.php
│ │ │ │ │ ├── AbstractLogoutHandler.php
│ │ │ │ │ ├── AuthenticationFailedHandler.php
│ │ │ │ │ ├── AuthenticationFrontendSuccessHandler.php
│ │ │ │ │ ├── AuthenticationSuccessHandler.php
│ │ │ │ │ ├── FrontendLogoutSuccessHandler.php
│ │ │ │ │ ├── InteractiveDoctrineAuthService.php
│ │ │ │ │ ├── InteractiveLogin.php
│ │ │ │ │ ├── LogoutSuccessHandler.php
│ │ │ │ │ ├── OAuthLogoutSuccessHandler.php
│ │ │ │ │ └── OAuthSuccessHandler.php
│ │ │ │ └── User/
│ │ │ │ └── SimpleUserProvider.php
│ │ │ ├── Services/
│ │ │ │ ├── SystemPreferencesService.php
│ │ │ │ └── TopicService.php
│ │ │ ├── Session/
│ │ │ │ └── Storage.php
│ │ │ ├── Tests/
│ │ │ │ └── Controller/
│ │ │ │ └── DefaultControllerTest.php
│ │ │ └── Twig/
│ │ │ ├── IncludeAsVerbatimExtension.php
│ │ │ └── NewscoopExtension.php
│ │ ├── PluginGeneratorBundle/
│ │ │ ├── Command/
│ │ │ │ ├── GeneratePluginBundleCommand.php
│ │ │ │ ├── GeneratorPluginCommand.php
│ │ │ │ └── Validators.php
│ │ │ ├── DependencyInjection/
│ │ │ │ ├── Configuration.php
│ │ │ │ └── NewscoopPluginGeneratorExtension.php
│ │ │ ├── Generator/
│ │ │ │ ├── BundleGenerator.php
│ │ │ │ └── Generator.php
│ │ │ ├── NewscoopPluginGeneratorBundle.php
│ │ │ ├── Resources/
│ │ │ │ ├── config/
│ │ │ │ │ ├── routing.yml
│ │ │ │ │ └── services.yml
│ │ │ │ ├── skeleton/
│ │ │ │ │ ├── bundle/
│ │ │ │ │ │ ├── AdminController.php.twig
│ │ │ │ │ │ ├── Bundle.php.twig
│ │ │ │ │ │ ├── Configuration.php.twig
│ │ │ │ │ │ ├── ConfigurationMenuListener.php.twig
│ │ │ │ │ │ ├── DefaultController.php.twig
│ │ │ │ │ │ ├── DefaultControllerTest.php.twig
│ │ │ │ │ │ ├── Extension.php.twig
│ │ │ │ │ │ ├── LifecycleSubscriber.php.twig
│ │ │ │ │ │ ├── admin.index.html.twig.twig
│ │ │ │ │ │ ├── composer.json.twig
│ │ │ │ │ │ ├── index.html.twig.twig
│ │ │ │ │ │ ├── messages.fr.xlf
│ │ │ │ │ │ ├── routing.php.twig
│ │ │ │ │ │ ├── routing.xml.twig
│ │ │ │ │ │ ├── routing.yml.twig
│ │ │ │ │ │ ├── services.php.twig
│ │ │ │ │ │ ├── services.xml.twig
│ │ │ │ │ │ └── services.yml.twig
│ │ │ │ │ ├── controller/
│ │ │ │ │ │ ├── Controller.php.twig
│ │ │ │ │ │ ├── ControllerTest.php.twig
│ │ │ │ │ │ ├── Template.html.php.twig
│ │ │ │ │ │ └── Template.html.twig.twig
│ │ │ │ │ ├── crud/
│ │ │ │ │ │ ├── actions/
│ │ │ │ │ │ │ ├── create.php.twig
│ │ │ │ │ │ │ ├── delete.php.twig
│ │ │ │ │ │ │ ├── edit.php.twig
│ │ │ │ │ │ │ ├── index.php.twig
│ │ │ │ │ │ │ ├── new.php.twig
│ │ │ │ │ │ │ ├── show.php.twig
│ │ │ │ │ │ │ └── update.php.twig
│ │ │ │ │ │ ├── config/
│ │ │ │ │ │ │ ├── routing.php.twig
│ │ │ │ │ │ │ ├── routing.xml.twig
│ │ │ │ │ │ │ └── routing.yml.twig
│ │ │ │ │ │ ├── controller.php.twig
│ │ │ │ │ │ ├── tests/
│ │ │ │ │ │ │ ├── others/
│ │ │ │ │ │ │ │ ├── full_scenario.php.twig
│ │ │ │ │ │ │ │ └── short_scenario.php.twig
│ │ │ │ │ │ │ └── test.php.twig
│ │ │ │ │ │ └── views/
│ │ │ │ │ │ ├── edit.html.twig.twig
│ │ │ │ │ │ ├── index.html.twig.twig
│ │ │ │ │ │ ├── new.html.twig.twig
│ │ │ │ │ │ ├── others/
│ │ │ │ │ │ │ ├── actions.html.twig.twig
│ │ │ │ │ │ │ └── record_actions.html.twig.twig
│ │ │ │ │ │ └── show.html.twig.twig
│ │ │ │ │ └── form/
│ │ │ │ │ └── FormType.php.twig
│ │ │ │ └── views/
│ │ │ │ └── Default/
│ │ │ │ └── index.html.twig
│ │ │ └── Tests/
│ │ │ └── Controller/
│ │ │ └── DefaultControllerTest.php
│ │ └── ZendBridgeBundle/
│ │ ├── Controller/
│ │ │ └── BridgeController.php
│ │ ├── DependencyInjection/
│ │ │ ├── Configuration.php
│ │ │ └── NewscoopZendBridgeExtension.php
│ │ ├── EventListener/
│ │ │ └── ZendApplicationListener.php
│ │ ├── NewscoopZendBridgeBundle.php
│ │ └── Resources/
│ │ └── config/
│ │ ├── routing.yml
│ │ └── services.yml
│ ├── template_engine/
│ │ ├── classes/
│ │ │ ├── ArticleAttachmentsList.php
│ │ │ ├── ArticleAuthorsList.php
│ │ │ ├── ArticleCommentsList.php
│ │ │ ├── ArticleImagesList.php
│ │ │ ├── ArticleLocationsList.php
│ │ │ ├── ArticleTopicsList.php
│ │ │ ├── ArticlesList.php
│ │ │ ├── BoxArticlesList.php
│ │ │ ├── CampConfig.php
│ │ │ ├── CampContext.php
│ │ │ ├── CampGetImage.php
│ │ │ ├── CampHTMLDocument.php
│ │ │ ├── CampRequest.php
│ │ │ ├── CampSession.php
│ │ │ ├── CampSite.php
│ │ │ ├── CampSystem.php
│ │ │ ├── CampTemplate.php
│ │ │ ├── CampURI.php
│ │ │ ├── CampURIShortNames.php
│ │ │ ├── CampURITemplatePath.php
│ │ │ ├── CampVersion.php
│ │ │ ├── Captcha.php
│ │ │ ├── ComparisonOperation.php
│ │ │ ├── Exceptions.php
│ │ │ ├── ImagesList.php
│ │ │ ├── IssuesList.php
│ │ │ ├── LanguagesList.php
│ │ │ ├── ListObject.php
│ │ │ ├── MapArticlesList.php
│ │ │ ├── MapLocationsList.php
│ │ │ ├── Operator.php
│ │ │ ├── PlaylistList.php
│ │ │ ├── SearchResultsList.php
│ │ │ ├── SearchResultsSolrList.php
│ │ │ ├── SectionAuthorsList.php
│ │ │ ├── SectionsList.php
│ │ │ ├── SubtitlesList.php
│ │ │ ├── SubtopicsList.php
│ │ │ ├── SyntaxError.php
│ │ │ ├── UserCommentsList.php
│ │ │ └── UsersList.php
│ │ └── metaclasses/
│ │ ├── MetaAction.php
│ │ ├── MetaActionLogin.php
│ │ ├── MetaActionPreview_Comment.php
│ │ ├── MetaActionSearch_Articles.php
│ │ ├── MetaActionSubmit_Comment.php
│ │ ├── MetaArticle.php
│ │ ├── MetaArticleBodyField.php
│ │ ├── MetaArticleDatetime.php
│ │ ├── MetaArticleSlideshowList.php
│ │ ├── MetaAttachment.php
│ │ ├── MetaAuthor.php
│ │ ├── MetaAuthorBiography.php
│ │ ├── MetaBoolean.php
│ │ ├── MetaComment.php
│ │ ├── MetaDate.php
│ │ ├── MetaDatetime.php
│ │ ├── MetaDbObject.php
│ │ ├── MetaEntity.php
│ │ ├── MetaImage.php
│ │ ├── MetaInteger.php
│ │ ├── MetaIssue.php
│ │ ├── MetaLanguage.php
│ │ ├── MetaMap.php
│ │ ├── MetaMapLocation.php
│ │ ├── MetaMapLocationMultimedia.php
│ │ ├── MetaOrder.php
│ │ ├── MetaPlaylist.php
│ │ ├── MetaPublication.php
│ │ ├── MetaSection.php
│ │ ├── MetaSlideshow.php
│ │ ├── MetaSlideshowItem.php
│ │ ├── MetaSlideshowItemList.php
│ │ ├── MetaString.php
│ │ ├── MetaSubscription.php
│ │ ├── MetaSubscriptions.php
│ │ ├── MetaSubtitle.php
│ │ ├── MetaSwitch.php
│ │ ├── MetaTemplate.php
│ │ ├── MetaTime.php
│ │ ├── MetaTopic.php
│ │ ├── MetaURL.php
│ │ └── MetaUser.php
│ ├── themes/
│ │ └── system_templates/
│ │ ├── _campsite_error.tpl
│ │ ├── _campsite_message.tpl
│ │ ├── _campsite_offline.tpl
│ │ ├── _events_notifier.tpl
│ │ ├── _feed/
│ │ │ └── default.tpl
│ │ ├── _pagination/
│ │ │ ├── twitter_bootstrap_v2_pagination.tpl
│ │ │ └── twitter_bootstrap_v3_pagination.tpl
│ │ ├── _subscription_notifier.tpl
│ │ ├── css/
│ │ │ ├── _style_offline.css
│ │ │ └── main.css
│ │ ├── editor_image.tpl
│ │ ├── oauth_authorize.tpl
│ │ ├── oauth_login.tpl
│ │ └── oauth_result.tpl
│ └── upgrade.php
├── old_features/
│ ├── 0_endpoints.feature.unfinished
│ ├── 10_images.feature
│ ├── 11_attachments.feature
│ ├── 12_snippet.feature
│ ├── 1_article.feature
│ ├── 2_author.feature
│ ├── 3_comments.feature
│ ├── 4_user.feature
│ ├── 5_topic.feature
│ ├── 6_slideshow.feature
│ ├── 7_section.feature
│ ├── 8_articles_lists.feature
│ ├── 99_functions.feature
│ └── bootstrap/
│ ├── FeatureContext.php
│ └── PublicationListener.php
├── phpspec.yml
└── spec/
└── Newscoop/
├── Gimme/
│ └── PaginatorServiceSpec.php
├── GimmeBundle/
│ ├── Controller/
│ │ ├── ArticlesControllerSpec.php
│ │ ├── EditorialCommentsApiControllerSpec.php
│ │ ├── SlideshowsControllerSpec.php
│ │ ├── TopicsControllerSpec.php
│ │ └── UserTopicsControllerSpec.php
│ ├── EventListener/
│ │ └── HookListenerSpec.php
│ ├── Serializer/
│ │ └── Topic/
│ │ └── TopicPathHandlerSpec.php
│ └── Services/
│ └── EditorialCommentsServiceSpec.php
├── Image/
│ └── ImageServiceSpec.php
├── Installer/
│ └── Services/
│ └── BootstrapServiceSpec.php
├── NewscoopBundle/
│ ├── Controller/
│ │ ├── BackendPublicationsControllerSpec.php
│ │ └── TopicsControllerSpec.php
│ └── EventListener/
│ └── IssueListenerSpec.php
└── Services/
├── ArticleServiceSpec.php
├── AttachmentServiceSpec.php
├── CommentServiceSpec.php
├── EditorServiceSpec.php
├── IssueServiceSpec.php
├── RelatedArticlesServiceSpec.php
└── ThemesServiceSpec.php
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
newscoop/images/*
newscoop/cache/*
newscoop/plugins/*
newscoop/backup/*
newscoop/vendor/
newscoop/newscoop-indexer.lock
newscoop/.htaccess
newscoop/conf/configuration.php
newscoop/conf/database_conf.php
newscoop/templates_cache/*
newscoop/themes/publication_*
newscoop/themes/unassigned/empty/
newscoop/themes/unassigned/system_templates/
newscoop/install/cron_jobs/all_at_once
newscoop/application/configs/application.ini
newscoop/application/configs/parameters/custom_parameters.yml
newscoop/composer.phar
.DS_Store
================================================
FILE: .travis.yml
================================================
language: php
php:
- '5.6'
- '5.5'
- '5.4'
- '5.3'
notifications:
email: false
before_script:
- sudo apt-get update > /dev/null
- sudo apt-get install -y --force-yes apache2 libapache2-mod-php5 php5-curl php5-mysql php5-intl php5-gd postfix
- echo "$(curl -fsSL https://gist.github.com/ahilles107/8255528/raw/fa949a791fe882323a34decd3b0caf130b6d52d6/travis_newscoop.dev)" | sed -e "s,PATH,`pwd`/newscoop,g" | sudo tee /etc/apache2/sites-available/default > /dev/null
- echo "127.0.0.1 newscoop.dev" | sudo tee -a /etc/hosts
- sudo a2enmod rewrite
- sudo service apache2 restart
- mysql -e 'create database newscoop;' -uroot
- cd newscoop/
- composer self-update
- composer install --prefer-dist
- "./application/console newscoop:install --fix --database_name newscoop --database_user root --no-client"
- sudo php upgrade.php
- "./application/console oauth:create-client testclient newscoop.dev newscoop.dev --test"
- "./application/console user:create test@example.org testpassword testuser 'Test Name' 'Test Surname' true 1 1"
- cd ..
- sudo php newscoop/scripts/fixer.php
script:
- newscoop/vendor/bin/phpspec run --format pretty
- newscoop/vendor/bin/behat
================================================
FILE: Dockerfile
================================================
# Start with fresh Unbuntu
FROM ubuntu:14.04
# Install dependencies
RUN apt-get update && \
DEBIAN_FRONTEND=noninteractive apt-get install -y --no-install-recommends \
git \
apache2 \
php5-cli php5-curl php5-mysql php5-gd php5-intl \
libapache2-mod-php5 \
imagemagick \
curl
EXPOSE 80
WORKDIR /usr/share/newscoop
#VOLUME /var/www
# copy virtual host config and source code
ADD docker/newscoop.conf /etc/apache2/sites-available/newscoop.conf
ADD docker/newscoop-dev.conf /etc/apache2/sites-available/newscoop-dev.conf
ADD newscoop /var/www/newscoop
# Enable production env
RUN a2ensite newscoop
# add management scripts
ADD docker /usr/share/newscoop
# update permissions
# 1000 needs to be a dynamic var for the userid of the files
# on the host
RUN usermod -u 1000 www-data
# turn on mod_rewrite, update php config
#RUN a2ensite newscoop.conf
RUN a2enmod rewrite php5
RUN /bin/echo 'date.timezone = "Europe/Berlin"' >> /etc/php5/apache2/php.ini
ENTRYPOINT ["/usr/share/newscoop/docker-entrypoint.sh"]
CMD ["/usr/sbin/apachectl", "-D", "FOREGROUND"]
================================================
FILE: LICENSE
================================================
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc.
| trans("Article Import"); ?> |
|
| trans("Publication"); ?>: | getName()); ?> | trans("Issue"); ?>: | getIssueNumber(); ?>. getName()); ?> (getName()); ?>) | trans("Section"); ?>: | getSectionNumber(); ?>. getName()); ?> | trans("Article"); ?>: | getTitle()); ?> (getName()); ?>) |
| Here you can upload an article that has been written in Open Office (files with extension ".sxw"). Click here to get the template. |
================================================ FILE: newscoop/admin-files/article_types/do_add.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to add article types.", array(), 'article_types')); exit; } $f_name = trim(Input::Get('f_name')); $correct = true; $created = false; $errorMsgs = array(); if (empty($f_name)) { $correct = false; $errorMsgs[] = $translator->trans('You must fill in the $1 field.', array('$1' => ''.$translator->trans('Name')).''); } if ($correct) { $valid = ArticleType::IsValidFieldName($f_name); if (!$valid) { $correct = false; $errorMsgs[] = $translator->trans('The $1 field may only contain letters and underscore (_) character.', array('$1' => ''.$translator->trans('Name').''), 'article_types'); } } if ($correct) { $articleType = new ArticleType($f_name); if ($articleType->exists()) { $correct = false; $errorMsgs[] = $translator->trans('The article type $1 already exists.', array('$1' => ''.htmlspecialchars($f_name).''), 'article_types'); } if ($correct) { $created = $articleType->create(); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/fields/add.php?f_article_type=$f_name"); } } $crumbs = array(); $crumbs[] = array($translator->trans('Configure'), ""); $crumbs[] = array($translator->trans('Article Types'), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Adding new article type", array(), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/do_comment_activation.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to rename article types.", array(), 'article_types')); exit; } $articleTypeName = Input::Get('f_article_type'); $errorMsgs = array(); $articleType = new ArticleType($articleTypeName); if ($articleType->exists()) { $articleType->setCommentsEnabled(!$articleType->commentsEnabled()); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); \Zend_Registry::get('container')->getService('dispatcher') ->dispatch('article_type.comments_management', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array( 'article_type' => $articleType, 'new_status' => !$articleType->commentsEnabled() ))); } camp_html_goto_page("/$ADMIN/article_types/"); ?> ================================================ FILE: newscoop/admin-files/article_types/do_del.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('DeleteArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to delete article types.", array(), 'article_types')); exit; } $articleTypeName = Input::Get('f_article_type'); $doDelete = true; $errorMsgs = array(); if ($doDelete) { $articleType = new ArticleType($articleTypeName); $articles = Article::GetArticlesOfType($articleTypeName); foreach ($articles as $a) { $a->delete(); } $articleType->delete(); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/"); } else { $errorMsgs[] = $translator->trans('The article type $1 could not be deleted.', array('$1' => ''.htmlspecialchars($articleTypeName).''), 'article_types'); } $crumbs = array(); $crumbs[] = array($translator->trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Delete article type $1", array('$1' => $articleTypeName), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/do_filter.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } $f_articleTypeName = Input::Get('f_article_type'); $f_filter = Input::Get('f_filter'); $errorMsgs = array(); $res = \ArticleType::SetTypeFilter($f_articleTypeName, $f_filter); camp_html_goto_page("/$ADMIN/article_types/"); ?> ================================================ FILE: newscoop/admin-files/article_types/do_hide.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } $articleTypeName = Input::Get('f_article_type'); $status = Input::Get('f_status'); $errorMsgs = array(); $articleType = new ArticleType($articleTypeName); $articleType->setStatus($status); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); \Zend_Registry::get('container')->getService('dispatcher') ->dispatch('article_type.hide', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array( 'article_type' => $articleType ))); camp_html_goto_page("/$ADMIN/article_types/"); ================================================ FILE: newscoop/admin-files/article_types/do_rename.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to rename article types.", array(), 'article_types')); exit; } $f_oldName = trim(Input::get('f_oldName')); $f_name = trim(Input::Get('f_name')); if ($f_oldName == $f_name) { camp_html_goto_page("/$ADMIN/article_types/"); } $correct = true; $created = false; $errorMsgs = array(); if (empty($f_name)) { $correct = false; $errorMsgs[] = $translator->trans('You must fill in the $1 field.', array('$1' => ''.$translator->trans('Name').'')); } else { $valid = ArticleType::IsValidFieldName($f_name); if (!$valid) { $correct = false; $errorMsgs[] = $translator->trans('The $1 field may only contain letters and underscore (_) character.', array('$1' => ''.$translator->trans('Name').''), 'article_types'); } if ($correct) { $old_articleType = new ArticleType($f_oldName); if (!$old_articleType->exists()) { $correct = false; $errorMsgs[] = $translator->trans('The article type $1 does not exist.', array('$1' => ''.htmlspecialchars($f_oldName).''), 'article_types'); } } if ($correct) { $articleType = new ArticleType($f_name); if ($articleType->exists()) { $correct = false; $errorMsgs[] = $translator->trans('The article type $1 already exists.', array('$1' => ''. htmlspecialchars($f_name). ''), 'article_types'); } } if ($correct) { $old_articleType->rename($f_name); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); \Zend_Registry::get('container')->getService('dispatcher') ->dispatch('article_type.hide', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array( 'article_type' => $articleType, 'old_name' => $f_oldName ))); camp_html_goto_page("/$ADMIN/article_types/"); } } $crumbs = array(); $crumbs[] = array($translator->trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Rename article type $1", array('$1' => $f_oldName), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/do_translate.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to add article types.", array(), 'article_types')); exit; } $f_type_id = Input::Get('f_type_id'); $f_type_language_id = Input::Get('f_type_language_id', 'int', 0); $f_type_translation_name = trim(Input::Get('f_type_translation_name')); $correct = true; $created = false; $errorMsgs = array(); if ($f_type_language_id <= 0) { $correct = false; $errorMsgs[] = $translator->trans('You must choose a language for the article type.', array(), 'article_types'); } if ($correct) { // Translate existing type $type = new ArticleType($f_type_id); $created = $type->setName($f_type_language_id, $f_type_translation_name); if ($created) { $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); \Zend_Registry::get('container')->getService('dispatcher') ->dispatch('article_type.translate', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array( 'article_type' => $type ))); camp_html_goto_page("/$ADMIN/article_types/index.php"); } else { $errorMsgs[] = $translator->trans('The translation could not be added.', array(), 'article_types'); } } $crumbs = array(); $crumbs[] = array($translator->trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Adding new article type", array(), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/fields/add.php ================================================ getService('translator'); // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans('You do not have the right to add article types.', array(), 'article_type_fields')); exit; } $articleTypeName = Input::Get('f_article_type'); $lang = camp_session_get('LoginLanguageId', 1); $langObj = new Language($lang); $currentLanguageId = $langObj->getLanguageId(); $em = \Zend_Registry::get('container')->getService('em'); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $topicService = \Zend_Registry::get('container')->getService('newscoop_newscoop.topic_service'); $topicsCount = $topicService->countBy(); $cacheKey = $cacheService->getCacheKey(array('topics_add_article_type', $topicsCount), 'topic'); $repository = $em->getRepository('Newscoop\NewscoopBundle\Entity\Topic'); if ($cacheService->contains($cacheKey)) { $topics = $cacheService->fetch($cacheKey); } else { $topicsQuery = $repository->getTranslatableTopics($langObj->getCode()); $topics = $topicsQuery->getResult(); $cacheService->save($cacheKey, $topics); } $crumbs = array(); $crumbs[] = array($translator->trans('Configure'), ""); $crumbs[] = array($translator->trans('Article Types'), "/$ADMIN/article_types/"); $crumbs[] = array($articleTypeName, ''); $crumbs[] = array($translator->trans("Article type fields", array(), 'article_type_fields'), "/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); $crumbs[] = array($translator->trans("Add new field", array(), 'article_type_fields'), ""); echo camp_html_breadcrumbs($crumbs); include_once($GLOBALS['g_campsiteDir']."/$ADMIN_DIR/javascript_common.php"); foreach (ArticleTypeField::DatabaseTypes() as $type=>$sqlDesc) { $options[$type] = ArticleTypeField::VerboseTypeName($type, $currentLanguageId); } ?>
================================================ FILE: newscoop/admin-files/article_types/fields/do_add.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to add article type fields.", array(), 'article_type_fields')); exit; } $articleTypeName = Input::Get('f_article_type'); $fieldName = trim(Input::Get('f_field_name')); $showInEditor = Input::Get('f_show_in_editor', 'int', 0); $fieldType = trim(Input::Get('f_article_field_type')); $rootTopicId = Input::Get('f_root_topic_id', 'int', 0); $isContent = Input::Get('f_is_content'); $precision = Input::Get('f_precision'); $editorSize = Input::Get('f_editor_size'); $editorSizeCustom = Input::Get('f_editor_size_custom'); $maxsize = Input::Get('f_maxsize'); $eventColor = Input::Get('f_event_color'); $field = new ArticleTypeField($articleTypeName, $fieldName); $correct = true; $errorMsgs = array(); if (!ArticleType::IsValidFieldName($fieldName)) { $errorMsgs[] = $translator->trans('The $1 must not be void and may only contain letters and underscore (_) character.', array('$1' => $translator->trans('Name')), 'article_type_fields'); $correct = false; } if ($field->exists()) { $errorMsgs[] = $translator->trans('The field $1 already exists.', array('$1' => ''.urlencode($fieldName).''), 'article_type_fields'); $correct = false; } $validTypes = array_keys(ArticleTypeField::DatabaseTypes()); if (!in_array($fieldType, $validTypes)) { $errorMsgs[] = $translator->trans('Invalid field type.', array(), 'article_type_fields'); $correct = false; } $article = new MetaArticle(); if ($article->has_property($fieldName) || method_exists($article, $fieldName)) { $correct = false; $errorMsgs[] = $translator->trans("The property $1 is already in use.", array('$1' => $fieldName), 'article_type_fields'); } if ($correct) { if ($editorSize == 'small') $editorSize = ArticleTypeField::BODY_ROWS_SMALL; else if ($editorSize == 'medium') $editorSize = ArticleTypeField::BODY_ROWS_MEDIUM; else if ($editorSize == 'large') $editorSize = ArticleTypeField::BODY_ROWS_LARGE; else if ($editorSize == 'custom') $editorSize = $editorSizeCustom; else $editorSize = ArticleTypeField::BODY_ROWS_MEDIUM; $params = array('root_topic_id'=>$rootTopicId, 'is_content'=>strtolower($isContent) == 'on', 'precision'=>$precision, 'maxsize'=>$maxsize, 'editor_size' => $editorSize, 'event_color' => $eventColor, 'show_in_editor'=>$showInEditor ); $field->create($fieldType, $params); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); } $crumbs = array(); $crumbs[] = array($translator->trans('Configure'), ""); $crumbs[] = array($translator->trans('Article Types'), "/$ADMIN/article_types/"); $crumbs[] = array($articleTypeName, ''); $crumbs[] = array($translator->trans("Article type fields", array(), 'article_type_fields'), "/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); $crumbs[] = array($translator->trans("Adding new field", array(), 'article_type_fields'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/fields/do_del.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('DeleteArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to delete article type fields.", array(), 'article_type_fields')); exit; } $articleTypeName = Input::Get('f_article_type'); $fieldName = Input::Get('f_field_name'); $field = new ArticleTypeField($articleTypeName, $fieldName); if ($field->exists()) { $field->delete(); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); } camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); ?> ================================================ FILE: newscoop/admin-files/article_types/fields/do_hide.php ================================================ getService('translator'); if (!Saas::singleton()->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to hide article types.", array(), 'article_type_fields')); exit; } if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } $articleTypeName = Input::Get('f_article_type'); $articleTypeFieldName = Input::Get('f_field_name'); $status = Input::Get('f_status'); $errorMsgs = array(); $articleTypeField = new ArticleTypeField($articleTypeName, $articleTypeFieldName); $articleTypeField->setStatus($status); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); ?> ================================================ FILE: newscoop/admin-files/article_types/fields/do_rename.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to rename article type fields.", array(), 'article_type_fields')); exit; } $articleTypeName = Input::Get('f_article_type'); $f_oldName = Input::Get('f_old_field_name'); $f_name = Input::Get('f_new_field_name'); if ($f_oldName == $f_name) { camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=". urlencode($articleTypeName)); } $correct = true; $created = false; $errorMsgs = array(); if (empty($f_name)) { $correct = false; $errorMsgs[] = $translator->trans('You must fill in the $1 field.', array('$1' => ''.$translator->trans('Name').'')); } else { $valid = ArticleType::IsValidFieldName($f_name); if (!$valid) { $correct = false; $errorMsgs[] = $translator->trans('The $1 field may only contain letters and underscore (_) character.', array('$1' => ''.$translator->trans('Name').''), 'article_type_fields'); } if ($correct) { $old_articleTypeField = new ArticleTypeField($articleTypeName, $f_oldName); if (!$old_articleTypeField->exists()) { $correct = false; $errorMsgs[] = $translator->trans('The field $1 does not exist.', array('$1' => ''.htmlspecialchars($f_oldName).''), 'article_type_fields'); } } if ($correct) { $articleTypeField = new ArticleTypeField($articleTypeName, $f_name); if ($articleTypeField->exists()) { $correct = false; $errorMsgs[] = $translator->trans('The field $1 already exists.', array('$1' => ''.htmlspecialchars($f_name). ''), 'article_type_fields'); } } if ($correct) { $article = new MetaArticle(); if ($article->has_property($f_name) || method_exists($article, $f_name)) { $correct = false; $errorMsgs[] = $translator->trans("The property $1 is already in use.", array('$1' => $f_name), 'article_type_fields'); } } if ($correct) { $old_articleTypeField->rename($f_name); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=". urlencode($articleTypeName)); } } $crumbs = array(); $crumbs[] = array($translator->trans('Configure'), ""); $crumbs[] = array($translator->trans('Article Types'), "/$ADMIN/article_types/"); $crumbs[] = array($articleTypeName, ''); $crumbs[] = array($translator->trans("Article type fields", array(), 'article_type_fields'), "/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); $crumbs[] = array($translator->trans("Renaming article type field", array(), 'article_type_fields'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/fields/do_reorder.php ================================================ getService('translator'); if (!Saas::singleton()->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to reorder article types.", array(), 'article_types')); exit; } if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } $articleTypeName = Input::Get('f_article_type'); $articleTypeFieldName = Input::Get('f_field_name'); $move = Input::Get('f_move'); $errorMsgs = array(); $articleTypeField = new ArticleTypeField($articleTypeName, $articleTypeFieldName); $articleTypeField->reorder($move); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); ?> ================================================ FILE: newscoop/admin-files/article_types/fields/do_retype.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to reassign article type fields.", array(), 'article_type_fields')); exit; } $articleTypeName = Input::Get('f_article_type'); $fieldName = trim(Input::Get('f_field_name')); $fieldType = trim(Input::Get('f_article_field_type')); $field = new ArticleTypeField($articleTypeName, $fieldName); $correct = true; $errorMsgs = array(); if (!$field->exists()) { $errorMsgs[] = $translator->trans('The field $1 does not exist.', array('$1' => ''.urlencode($fieldName).''), 'article_type_fields'); $correct = false; } if (array_search($fieldType, $field->getConvertibleToTypes()) === false) { $errorMsgs[] = $translator->trans('Can not convert the field $1 from $2 to type $3.', array('$1' => $fieldName, '$2' => $field->getType(), '$3' => $fieldType), 'article_type_fields'); $correct = false; } if ($correct) { $field->setType($fieldType); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); } $crumbs = array(); $crumbs[] = array($translator->trans('Configure'), ""); $crumbs[] = array($translator->trans('Article Types'), "/$ADMIN/article_types/"); $crumbs[] = array($articleTypeName, ''); $crumbs[] = array($translator->trans("Article type fields", array(), 'article_type_fields'), "/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); $crumbs[] = array($translator->trans("Adding new field", array(), 'article_type_fields'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/fields/do_translate.php ================================================ getService('translator'); if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to translate article types.", array(), 'article_type_fields')); exit; } $f_field_id = Input::Get('f_field_id'); $f_field_language_id = Input::Get('f_field_language_id', 'int', 0); $f_field_translation_name = trim(Input::Get('f_field_translation_name')); $f_article_type = Input::Get('f_article_type'); $correct = true; $created = false; $errorMsgs = array(); if (empty($f_field_translation_name)) { $correct = false; $errorMsgs[] = $translator->trans('You must fill in the $1 field.', array('$1' => ''.$translator->trans('Name').'')); } if ($f_field_language_id <= 0) { $correct = false; $errorMsgs[] = $translator->trans('You must choose a language for the field.'); } if ($correct) { // Translate existing type $field = new ArticleTypeField($f_article_type, $f_field_id); $created = $field->setName($f_field_language_id, $f_field_translation_name); if ($created) { $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=". $f_article_type); exit; } else { $errorMsgs[] = $translator->trans('The translation could not be added.'); } } $crumbs = array(); $crumbs[] = array($translator->trans('Configure'), ""); $crumbs[] = array($translator->trans('Article Types'), "/$ADMIN/article_types/"); $crumbs[] = array($f_article_type, ''); $crumbs[] = array($translator->trans("Article type fields", array(), 'article_type_fields'), "/$ADMIN/article_types/fields/?f_article_type=".urlencode($f_article_type)); $crumbs[] = array($translator->trans('Add new article type', array(), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/fields/index.php ================================================ getService('translator'); $request = \Zend_Registry::get('container')->get('request'); $locale = $request->getLocale(); if (!Saas::singleton()->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to manage article types.", array(), 'article_type_fields')); exit; } $articleTypeName = Input::Get('f_article_type'); // return value is sorted by language $allLanguages = Language::GetLanguages(null, null, null, array(), array(), true); $lang = Language::GetLanguageByCode($locale); $languageObj = new Language($lang->getLanguageId()); $articleType = new ArticleType($articleTypeName); $fields = $articleType->getUserDefinedColumns(null, true, true); $crumbs = array(); $crumbs[] = array($translator->trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($articleTypeName, ""); $crumbs[] = array($translator->trans("Article type fields", array(), 'article_type_fields'), ""); echo camp_html_breadcrumbs($crumbs); $row_rank = 0; if ($g_user->hasPermission("ManageArticleTypes")) { include_once($GLOBALS['g_campsiteDir']."/$ADMIN_DIR/javascript_common.php"); ?>
![]() |
trans('Back to Article Types List', array(), 'article_type_fields'); ?> |
| trans("Order"); ?> | trans("Template Field Name", array(), 'article_type_fields'); ?> | trans("Type"); ?> | hasPermission("ManageArticleTypes")) { ?>trans("Display Name", array(), 'article_type_fields'); ?> | trans("Translate"); ?> | trans("Page Read Count?", array(), 'article_type_fields'); ?> | trans("Editorial Content?", array(), 'article_type_fields'); ?> | trans("Event Color", array(), 'article_type_fields'); ?> | trans("Show to Authors?", array(), 'article_type_fields'); ?> | trans("Delete"); ?> | ||
|
|
'; } ?> getPrintName()); ?> '; } ?> | getVerboseTypeName($languageObj->getLanguageId())); ?> | getDisplayName($languageObj->getLanguageId())); ?> getDisplayNameLanguageCode($languageObj->getLanguageId())); ?> |
|
getType() == ArticleTypeField::TYPE_BODY) { ?> isContent()) { ?>checked id="set_is_content_" name="set_is_content_" onclick="if (confirm('trans('Are you sure you want to make $1 a $2 field?', array('$1' => $field->getPrintName(), '$2' => $contentType), 'article_type_fields'); ?>')) { location.href='//article_types/fields/set_is_content.php?f_article_type=&f_field_name=getPrintName()); ?>&f_is_content=&' } else { document.getElementById('set_is_content_').checked = }"> trans('N/A'); ?> | getType() == ArticleTypeField::TYPE_SWITCH ) { ?> trans('N/A'); ?> showInEditor()) { ?>checked id="set_show_in_editor_" name="set_show_in_editor_" onclick="if (confirm('trans('Are you sure you want to make $1 a $2 field?', array('$1' => $field->getPrintName(), '$2' => $editorType), 'article_type_fields'); ?>')) { location.href='//article_types/fields/set_show_in_editor.php?f_article_type=&f_field_name=getPrintName()); ?>&f_show_in_editor=&' } else { document.getElementById('set_show_in_editor_').checked = }"> |
getType() != ArticleTypeField::TYPE_COMPLEX_DATE) {
echo $translator->trans('N/A');
}
else {
$cur_color = $field->getColor();
$color_div = '';
$color_div .= ' ';
foreach ($color_list as $one_color) {
$color_div .= '';
}
$color_div .= ' ';
$color_div .= '';
echo $color_div;
}
?>
|
|
hasPermission("ManageArticleTypes")) { ?>
|
================================================ FILE: newscoop/admin-files/article_types/fields/retype.php ================================================ getService('translator'); // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to reassign a field type.", array(), 'article_type_fields')); exit; } $articleTypeName = Input::Get('f_article_type'); $articleTypeFieldName = Input::Get('f_field_name'); $articleField = new ArticleTypeField($articleTypeName, $articleTypeFieldName); $crumbs = array(); $crumbs[] = array($translator->trans('Configure'), ""); $crumbs[] = array($translator->trans('Article Types'), "/$ADMIN/article_types/"); $crumbs[] = array($articleTypeName, ''); $crumbs[] = array($translator->trans("Article type fields", array(), 'article_type_fields'), "/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); $crumbs[] = array($translator->trans("Reassign a field type", array(), 'article_type_fields'), ""); echo camp_html_breadcrumbs($crumbs); include_once($GLOBALS['g_campsiteDir']."/$ADMIN_DIR/javascript_common.php"); $lang = camp_session_get('LoginLanguageId', 1); $languageObj = new Language($lang); // Verify the merge rules $options = array(); $convertibleFromTypes = $articleField->getConvertibleToTypes(); foreach ($convertibleFromTypes as $type) { $options[$type] = ArticleTypeField::VerboseTypeName($type, $languageObj->getLanguageId()); } ?>
You cannot reassign this type.
getType() == ArticleTypeField::TYPE_TOPIC) { ?> ================================================ FILE: newscoop/admin-files/article_types/fields/set_is_content.php ================================================ getService('translator'); if (!Saas::singleton()->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to delete article types.", array(), 'article_types')); exit; } if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } $articleTypeName = Input::Get('f_article_type'); $articleTypeFieldName = Input::Get('f_field_name'); $isContent = Input::Get('f_is_content'); $errorMsgs = array(); $articleTypeField = new ArticleTypeField($articleTypeName, $articleTypeFieldName); $articleTypeField->setIsContent($isContent == 'true'); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); ?> ================================================ FILE: newscoop/admin-files/article_types/fields/set_show_in_editor.php ================================================ getService('translator'); if (!Saas::singleton()->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to delete article types.", array(), 'article_types')); exit; } if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } $articleTypeName = Input::Get('f_article_type'); $articleTypeFieldName = Input::Get('f_field_name'); $showInEditor = Input::Get('f_show_in_editor'); $errorMsgs = array(); $articleTypeField = new ArticleTypeField($articleTypeName, $articleTypeFieldName); $articleTypeField->setShowInEditor($showInEditor == 'true'); $cacheService = \Zend_Registry::get('container')->getService('newscoop.cache'); $cacheService->clearNamespace('article_type'); camp_html_goto_page("/$ADMIN/article_types/fields/?f_article_type=".urlencode($articleTypeName)); ?> ================================================ FILE: newscoop/admin-files/article_types/index.php ================================================ getService('translator'); $request = \Zend_Registry::get('container')->get('request'); $locale = $request->getLocale(); if (!$g_user->hasPermission('ManageArticleTypes') && !$g_user->hasPermission('DeleteArticleTypes')) { camp_html_goto_page("/$ADMIN/"); } $articleTypes = ArticleType::GetArticleTypes(true); // return value is sorted by language $allLanguages = Language::GetLanguages(null, null, null, array(), array(), true); $lang = Language::GetLanguageByCode($locale); $languageObj = new Language($lang->getLanguageId()); $crumbs = array(); $crumbs[] = array($translator->trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), ""); $controller->view->headTitle($translator->trans('Article Types').' - Newscoop Admin', 'SET'); echo camp_html_breadcrumbs($crumbs); include_once($GLOBALS['g_campsiteDir']."/$ADMIN_DIR/javascript_common.php"); ?> hasPermission("ManageArticleTypes")) { ?>
0) { ?>
| trans("Template Type Name", array(), 'article_types'); ?> | trans("Fields"); ?> | trans("Display Name", array(), 'article_types'); ?> | trans("Translate"); ?> | trans("Show to Authors?", array(), 'article_types'); ?> | trans("Show in Article Lists?", array(), 'article_types'); ?> | trans("Comments Enabled?", array(), 'article_types'); ?> | hasPermission("DeleteArticleTypes")) { ?>trans("Delete"); ?> |
| trans('Fields'); ?> | getDisplayName($languageObj->getLanguageId()); ?> getDisplayNameLanguageCode($languageObj->getLanguageId()); ?> |
|
');"> |
');"> |
');"> |
hasPermission("DeleteArticleTypes")) { ?>
|
================================================ FILE: newscoop/admin-files/article_types/merge.php ================================================ getService('translator'); // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to merge article types.", array(), 'article_types')); exit; } $articleTypes = ArticleType::GetArticleTypes(); $f_src = trim(Input::get('f_src')); $f_dest = trim(Input::get('f_dest')); $crumbs = array(); $crumbs[] = array($translator->trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Merge article type", array(), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); $controller->view->headTitle($translator->trans("Merge article type", array(), 'article_types').' - Newscoop Admin', 'SET'); ?>trans('No article types.', array(), 'article_types'); ?>
================================================ FILE: newscoop/admin-files/article_types/merge2.php ================================================ getService('translator'); // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to merge article types.", array(), 'article_types')); exit; } $f_src = trim(Input::get('f_src')); $f_dest = trim(Input::get('f_dest')); $errorMsgs = array(); if ($f_src == $f_dest) { $errorMsgs[] = $translator->trans("You cannot merge the same type into itself.", array(), 'article_types'); } $src = new ArticleType($f_src); $dest = new ArticleType($f_dest); $srcNumArticles = $src->getNumArticles(); if ($srcNumArticles <= 0) { $errorMsgs[] = $translator->trans("The source article type ($1) does not have any articles.", array('$1' => $f_src), 'article_types'); } if (count($errorMsgs)) { $crumbs = array(); $crumbs[] = array($translator->trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Merge article type", array(), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); ?>
trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Merge article type", array(), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/merge3.php ================================================ getService('translator'); // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to merge article types.", array(), 'article_types')); exit; } $f_src = trim(Input::get('f_src')); $f_dest = trim(Input::get('f_dest')); $f_prev_action = trim(Input::get('f_action', 'string', 'NULL')); // Preview actions: either NEXT, PREV, ORIG $f_action = trim(Input::get('f_action')); // either Step1, Step2, Preview or Merge if ($f_action == 'Step1') { camp_html_goto_page("/$ADMIN/article_types/merge.php?f_src=$f_src&f_dest=$f_dest"); } $src = new ArticleType($f_src); $dest = new ArticleType($f_dest); $getString = ''; foreach ($dest->getUserDefinedColumns(null, true, true) as $destColumn) { $getString .= "&f_src_". $destColumn->getPrintName() ."=". trim(Input::get('f_src_'. $destColumn->getPrintName())); } if ($f_action == 'Step2') { camp_html_goto_page("/$ADMIN/article_types/merge2.php?f_src=$f_src&f_dest=$f_dest". $getString); } foreach ($dest->getUserDefinedColumns(null, true, true) as $destColumn) { $tmp = trim(Input::get('f_src_'. $destColumn->getPrintName())); if (empty($tmp)) { $tmp = 'NULL'; } $f_src_c[$destColumn->getPrintName()] = $tmp; } // Verify the merge rules $ok = true; $errMsgs = array(); foreach ($f_src_c as $destColumn => $srcColumn) { if ($srcColumn == 'NULL') { continue; } $destATF = new ArticleTypeField($f_dest, $destColumn); $srcATF = new ArticleTypeField($f_src, $srcColumn); if (!$destATF->isConvertibleFrom($srcATF)) { $errMsgs[] = $translator->trans('Cannot merge a $1 field ($2) into a $3 field ($4).', array( '$1' => $translator->trans($srcATF->getType()), '$2' => $srcATF->getDisplayName(), '$3' => $translator->trans($destATF->getType()), '$4' => $destATF->getDisplayName() ), 'article_types'); $ok = false; } } // // if f_action is Merge, do the merge and return them to article_types/ screen (or an error) // if ($ok && $f_action == 'Merge') { if (!SecurityToken::isValid()) { camp_html_display_error($translator->trans('Invalid security token!')); exit; } $res = ArticleType::merge($f_src, $f_dest, $f_src_c); if (!$res) { $errMsgs[] = $translator->trans("Merge failed.", array(), 'article_types'); $ok = false; } if ($ok) { $f_delete = Input::get('f_delete', 'checkbox', 0); if ($f_delete) { // delete the source article type $at = new ArticleType($f_src); $at->delete(); } camp_html_goto_page("/$ADMIN/article_types/"); exit(0); } } // // Otherwise, we are in preview mode, so render up a preview // if ($ok) { // // calculate where this article is in relation to all the articles of the src type // $articlesArray = $src->getArticlesArray(); if (!count($articlesArray)) { $errMsgs[] = $translator->trans("No articles."); $ok = false; } if ($ok) { $f_cur_preview = trim(Input::get('f_cur_preview', 'int', $articlesArray[0])); // The currently previewed article $tmp = array_keys($articlesArray, $f_cur_preview); $curPos = $tmp[0]; // used for calculating the next / prev arrows // calculate the first language of an article number // and also the number of translations associated with an article number global $g_ado_db; $sql = "SELECT * FROM X$f_src WHERE NrArticle=$f_cur_preview"; $rows = $g_ado_db->GetAll($sql); if (!count($rows)) { $errMsgs[] = $translator->trans('There is no article associated with the preview.', array(), 'article_types'); $ok = false; } } if ($ok) { $numberOfTranslations = count($rows); $firstLanguage = $rows[0]['IdLanguage']; $curPreview = new Article($firstLanguage, $f_cur_preview); $articleCreator = new User($curPreview->getCreatorId()); $articleData = $dest->getPreviewArticleData(); $dbColumns = $articleData->getUserDefinedColumns(1, true); $srcArticleData = $curPreview->getArticleData(); $srcDbColumns = $srcArticleData->getUserDefinedColumns(1, true); $getString = ''; foreach ($_GET as $k => $v) { if ( ($k != 'f_action') && ($k != 'f_preview_action') ) { $getString .= "&$k=$v"; } } foreach ($_POST as $k => $v) { if ( ($k != 'f_action') && ($k != 'f_prev_action') ) { $getString .= "&$k=$v"; } } $getString = substr($getString, 1); $crumbs = array(); $crumbs[] = array($translator->trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Merge article type", array(), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); ?>
trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Merge article type", array(), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); ?>
================================================ FILE: newscoop/admin-files/article_types/rename.php ================================================ getService('translator'); // Check permissions if (!$g_user->hasPermission('ManageArticleTypes')) { camp_html_display_error($translator->trans("You do not have the right to rename article types.", array(), 'article_types')); exit; } $articleTypes = ArticleType::GetArticleTypes(true); $f_name = trim(Input::get('f_name')); if (array_search($f_name, $articleTypes) === false) { camp_html_display_error($translator->trans("Invalid article type $1.", array('$1' => "'".$f_name."'"), 'article_types')); exit; } $crumbs = array(); $crumbs[] = array($translator->trans("Configure"), ""); $crumbs[] = array($translator->trans("Article Types"), "/$ADMIN/article_types/"); $crumbs[] = array($translator->trans("Rename article type $1", array('$1' => "'".$f_name."'"), 'article_types'), ""); echo camp_html_breadcrumbs($crumbs); include_once($GLOBALS['g_campsiteDir']."/$ADMIN_DIR/javascript_common.php"); ?>
================================================
FILE: newscoop/admin-files/articles/JSON.php
================================================
* @author Matt Knapp
================================================
FILE: newscoop/admin-files/articles/add_move.php
================================================
getService('translator');
$publications = Publication::GetPublications();
global $Campsite;
if (!$g_user->hasPermission('AddArticle')) {
camp_html_display_error($translator->trans("You do not have the right to add articles."));
exit;
}
// The article location dropdowns cause this page to reload,
// so we need to preserve the state with each refresh.
$f_article_name = Input::Get('f_article_name', 'string', '', true);
$f_article_type = Input::Get('f_article_type', 'string', '', true);
$f_article_language = Input::Get('f_article_language', 'int', 0, true);
// For choosing the article location.
$f_destination_publication_id = Input::Get('f_destination_publication_id', 'int', 0, true);
$f_destination_issue_number = Input::Get('f_destination_issue_number', 'int', 0, true);
$f_destination_section_number = Input::Get('f_destination_section_number', 'int', 0, true);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $_SERVER['REQUEST_URI']);
exit;
}
if ($f_article_language <= 0) {
$f_destination_publication_id = 0;
$f_destination_issue_number = 0;
$f_destination_section_number = 0;
}
if (count($publications) == 1) {
$singlePublication = camp_array_peek($publications);
$f_destination_publication_id = $singlePublication->getPublicationId();
}
$allIssues = array();
if ($f_destination_publication_id > 0) {
$allIssues = Issue::GetIssues($f_destination_publication_id,
$f_article_language, null, null, null, false,
array("ORDER BY" => array("Number" => "DESC")), true);
if (count($allIssues) == 1) {
$singleIssue = camp_array_peek($allIssues);
$f_destination_issue_number = $singleIssue->getIssueNumber();
$f_article_language = $singleIssue->getLanguageId();
}
}
$allSections = array();
if ($f_destination_issue_number > 0) {
$selectedIssue = new Issue($f_destination_publication_id, $f_article_language, $f_destination_issue_number);
$allSections = Section::GetSections($f_destination_publication_id, $f_destination_issue_number, $f_article_language, null, null, array("ORDER BY" => array("Name" => "ASC")), true);
if (count($allSections) == 1) {
$singleSection = camp_array_peek($allSections);
$f_destination_section_number = $singleSection->getSectionNumber();
}
}
$allArticleTypes = ArticleType::GetArticleTypes();
$allLanguages = Language::GetLanguages(null, null, null, array(), array(), true);
$crumbs = array();
$crumbs[] = array($translator->trans("Actions"), "");
$crumbs[] = array($translator->trans("Add new article"), "");
echo camp_html_breadcrumbs($crumbs);
$controller->view->headTitle($translator->trans('Add new article').' - Newscoop Admin', 'SET');
?>
================================================
FILE: newscoop/admin-files/articles/article_common.php
================================================
================================================
FILE: newscoop/admin-files/articles/article_stylesheet.css
================================================
.campsite_subhead {
border: 1px dashed #444444;
padding: 2px;
}
.campsite_external_link {
text-decoration: underline;
color: blue;
}
.swiss-info-free,
.largebox,
.smallbox,
.interview-box,
.camp-textbox {
display: block;
border: 1px solid #000;
padding: 10px;
margin-top: 10px;
margin-bottom: 24px;
font-size: 15px !important;
font-style: normal;
font-family: Arial, Helvetica, sans-serif !important;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.camp_snippet {
display: block;
text-align: center;
border: 1px solid #000;
padding: 10px;
margin-top: 10px;
margin-bottom: 24px;
font-size: 15px !important;
font-style: normal;
font-family: Arial, Helvetica, sans-serif !important;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
opacity: 0.5;
background: #CCC;
}
.interview-box {
border-color: #007fb3;
}
.smallbox {
width: 250px;
margin-left: 20px;
float: right;
}
================================================
FILE: newscoop/admin-files/articles/autopublish.php
================================================
getService('translator');
if (!$g_user->hasPermission("Publish")) {
camp_html_display_error($translator->trans("You do not have the right to schedule issues or articles for automatic publishing."));
exit;
}
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $BackLink);
exit;
}
if ($f_publication_id == 0 || $f_issue_number == 0 || $f_section_number == 0) {
camp_html_display_error($translator->trans('You must set the publication, issue, and section for this article before you can schedule it for publishing. Go to the "$1" menu and select "$2" to do this.', array('$1' => $translator->trans("Actions")."...", '$2' => $translator->trans("Move")), 'articles'), null, true);
exit;
}
$articleObj = new Article($f_language_selected, $f_article_number);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans('Article does not exist.'), null, true);
exit;
}
$BackLink = camp_html_article_url($articleObj, $f_language_id, "edit.php");
$publicationObj = new Publication($f_publication_id);
if (!$publicationObj->exists()) {
camp_html_display_error($translator->trans('Publication does not exist.'), $BackLink, true);
exit;
}
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
if (!$issueObj->exists()) {
camp_html_display_error($translator->trans('Issue does not exist.'), $BackLink);
exit;
}
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
if (!$sectionObj->exists()) {
camp_html_display_error($translator->trans('Section does not exist.'), $BackLink, true);
exit;
}
$articleEvents = ArticlePublish::GetArticleEvents($f_article_number, $f_language_selected);
$publishTime = date("Y-m-d H:i");
if ($articleObj->getWorkflowStatus() != 'N') {
$publishAction = '';
$frontPageAction = '';
$sectionPageAction = '';
$datetime = explode(" ", trim($publishTime));
$publishDate = $datetime[0];
$publishTime = explode(":", trim($datetime[1]));
$publishHour = $publishTime[0];
$publishMinute = $publishTime[1];
?>
================================================
FILE: newscoop/admin-files/articles/edit.php
================================================
getService('translator');
// These are optional, depending on whether you are in a section
// or whether editing an article that doesnt have a location.
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_unlock = Input::Get('f_unlock', 'string', false, true);
// $f_edit_mode can be "view" or "edit"
$f_edit_mode = Input::Get('f_edit_mode', 'string', 'edit', true);
// Whether to show comments at the bottom of the article
// (you may not want to show them to speed up your loading time)
// Selected language of the article
$f_language_selected = (int) camp_session_get('f_language_selected', 0);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $_SERVER['REQUEST_URI']);
exit;
}
// Fetch article
$articleObj = new Article($f_language_selected, $f_article_number);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans('No such article.', array(), 'articles'));
exit;
}
// detect if blogger can edit
$userIsBlogger = false;
$blogService = \Zend_Registry::get('container')->getService('blog');
if ($blogService->isBlogger($g_user)) {
$userIsBlogger = true;
$userSection = $blogService->getSection($g_user);
if (empty($userSection) || $userSection->getSectionId() != $articleObj->getSection()->getSectionId()) {
camp_html_display_error($translator->trans("You are not allowed to edit article.", array(), 'articles'));
exit;
}
}
$controller->view->headTitle($articleObj->getName().' - '.$translator->trans('Edit article', array(), 'article_files').' - Newscoop Admin', 'SET');
$articleData = $articleObj->getArticleData();
// Get article type fields.
$dbColumns = $articleData->getUserDefinedColumns();
$articleType = new ArticleType($articleObj->getType());
$articleImages = ArticleImage::GetImagesByArticleNumber($f_article_number);
$lockUserObj = new User($articleObj->getLockedByUser());
$articleCreator = new User($articleObj->getCreatorId());
$articleEvents = ArticlePublish::GetArticleEvents($f_article_number, $f_language_selected, TRUE);
$em = \Zend_Registry::get('container')->getService('em');
$articleTopics = $em->getRepository("Newscoop\Entity\ArticleTopic")
->getArticleTopicsIds($f_article_number)
->getResult();
$articleFiles = ArticleAttachment::GetAttachmentsByArticleNumber($f_article_number, $f_language_selected);
$articleLanguages = $articleObj->getLanguages();
// Create displayable "last modified" time.
$lastModified = strtotime($articleObj->getLastModified());
$today = getdate();
$savedOn = getdate($lastModified);
$savedToday = true;
if ($today['year'] != $savedOn['year'] || $today['mon'] != $savedOn['mon'] || $today['mday'] != $savedOn['mday']) {
$savedToday = FALSE;
}
$sectionObj = null;
$showComments = FALSE;
$showCommentControls = FALSE;
if ($f_publication_id > 0) {
$publicationObj = new Publication($f_publication_id);
if ($publicationObj->exists()) {
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
if ($issueObj->exists()) {
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
if ($sectionObj->exists()) {
$languageObj = new Language($articleObj->getLanguageId());
} else {
$sectionObj = null;
}
} else {
$issueObj = null;
}
} else {
$publicationObj = null;
}
$showCommentControls = ($publicationObj->commentsEnabled() && $articleType->commentsEnabled());
$showComments = $showCommentControls && $articleObj->commentsEnabled();
}
if ($showComments) {
// $comments = array();
/**
* @todoget comments
*/
}
// Automatically switch to "view" mode if user doesnt have permissions
if (!$articleObj->userCanModify($g_user)) {
$f_edit_mode = 'view';
}
//
// Automatic unlocking
//
$locked = TRUE;
// If the article has not been touched in 24 hours
$timeDiff = camp_time_diff_str($articleObj->getLockTime());
if ($timeDiff['days'] > 0) {
$articleObj->setIsLocked(FALSE);
$locked = FALSE;
} elseif (($articleObj->getLockedByUser() != 0) && !$lockUserObj->exists()) {
// If the user who locked the article doesnt exist anymore, unlock the article
$articleObj->setIsLocked(FALSE);
$locked = FALSE;
}
//
// Automatic locking
//
// If the article has not been unlocked and is not locked by a user.
if ($f_unlock === FALSE) {
if (!$articleObj->isLocked()) {
// Lock the article
$articleObj->setIsLocked(TRUE, $g_user->getUserId());
}
} else {
$f_edit_mode = 'view';
}
// Automatically unlock the article if the user goes into VIEW mode
$lockedByCurrentUser = ($articleObj->getLockedByUser() == $g_user->getUserId());
if (($f_edit_mode == 'view') && $lockedByCurrentUser) {
$articleObj->setIsLocked(FALSE);
}
// If the article is locked by the current user, OK to edit.
if ($lockedByCurrentUser) {
$locked = FALSE;
}
//
// Begin Display of page
//
include_once($GLOBALS['g_campsiteDir']."/$ADMIN_DIR/javascript_common.php");
$inEditMode = ($f_edit_mode == 'edit');
$inViewMode = ($f_edit_mode == 'view');
$publishRights = $g_user->hasPermission('Publish');
if ($g_user->hasPermission('EditorSpellcheckerEnabled')) {
$spellcheck = 'spellcheck="true"';
} else {
$spellcheck = 'spellcheck="false"';
}
// Generate the breadcrumb
$title = '';
if ($f_publication_id > 0 && $f_issue_number && $f_section_number) {
$topArray = array(
'Pub' => $publicationObj,
'Issue' => $issueObj,
'Section' => $sectionObj,
'Article' => $articleObj
);
camp_html_content_top($title, $topArray);
} else {
$crumbs = array();
$crumbs[] = array($translator->trans('Pending Articles', array(), 'articles'), "/$ADMIN/pending_articles/index.php");
$crumbs[] = array($title, '');
echo camp_html_breadcrumbs($crumbs);
}
function parseTextBody($text, $articleNumber)
{
$translator = \Zend_Registry::get('container')->getService('translator');
// Subheads
$text = preg_replace("//i", "", $text);
$text = preg_replace("//i", "", $text);
// Internal Links with targets
$text = preg_replace("//i", '', $text);
// Internal Links without targets
$text = preg_replace("//i", '', $text);
// External Links (old style 2.1) with targets
$text = preg_replace("//i", '', $text);
// External Links (old style 2.1) without targets
$text = preg_replace("//i", '', $text);
// End link
$text = preg_replace("//i", "", $text);
// Images
preg_match_all("/
$snippetPattern = '<\-\-\sSnippet\s([\d]+)\s\-\->';
$text = preg_replace("/$snippetPattern/i", '
getMimeType(), "image/") &&
(strstr($_SERVER['HTTP_ACCEPT'], $attachmentObj->getMimeType()) ||
(strstr($_SERVER['HTTP_ACCEPT'], "*/*")))) { ?>
================================================
FILE: newscoop/admin-files/articles/files/popup.php
================================================
getService('translator');
$preferencesService = \Zend_Registry::get('container')->getService('system_preferences_service');
$inArchive = !empty($_REQUEST['archive']);
if (!$inArchive) {
$f_publication_id = Input::Get('f_publication_id', 'int', 0);
$f_issue_number = Input::Get('f_issue_number', 'int', 0);
$f_section_number = Input::Get('f_section_number', 'int', 0);
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $_SERVER['REQUEST_URI'], true);
exit;
}
$articleObj = new Article($f_language_selected, $f_article_number);
}
if (camp_convert_bytes(($preferencesService->MaxUploadFileSize)) == false) {
camp_html_add_msg($translator->trans("The maximum file upload size was not configured in Newscoop.", array(), 'article_files'));
camp_html_add_msg($translator->trans("Please make sure you upgraded the database correctly: run $1 in a shell.", array(
'$1' => $Campsite['BIN_DIR'].'/campsite-create-instance --db_name '.$Campsite['DATABASE_NAME']), 'article_files'));
}
if (!is_writable($Campsite['FILE_DIRECTORY'])) {
camp_html_add_msg($translator->trans("Unable to add attachment.", array(), 'article_files'));
camp_html_add_msg(camp_get_error_message(CAMP_ERROR_WRITE_DIR, $Campsite['FILE_DIRECTORY']));
}
camp_html_display_msgs();
?>
================================================
FILE: newscoop/admin-files/articles/index.php
================================================
getService('translator');
$f_publication_id = Input::Get('f_publication_id', 'int', 0);
$f_issue_number = Input::Get('f_issue_number', 'int', 0);
$f_section_number = Input::Get('f_section_number', 'int', 0);
$f_language_id = Input::Get('f_language_id', 'int', 0);
if (isset($_SESSION['f_language_selected'])) {
$f_old_language_selected = (int)$_SESSION['f_language_selected'];
} else {
$f_old_language_selected = 0;
}
$f_language_selected = (int)camp_session_get('f_language_selected', 0);
$offsetVarName = "f_article_offset_".$f_publication_id."_".$f_issue_number."_".$f_language_id."_".$f_section_number;
$f_article_offset = camp_session_get($offsetVarName, 0);
$ArticlesPerPage = 15;
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $_SERVER['REQUEST_URI']);
exit;
}
if ($f_old_language_selected != $f_language_selected) {
camp_session_set('f_article_offset', 0);
$f_article_offset = 0;
}
if ($f_article_offset < 0) {
$f_article_offset = 0;
}
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
if (!$sectionObj->exists()) {
camp_html_display_error($translator->trans('Section does not exist.'));
exit;
}
$publicationObj = new Publication($f_publication_id);
if (!$publicationObj->exists()) {
camp_html_display_error($translator->trans('Publication does not exist.'));
exit;
}
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
if (!$issueObj->exists()) {
camp_html_display_error($translator->trans('Issue does not exist.'));
exit;
}
$allArticleLanguages = $issueObj->getLanguages();
if (!in_array($f_language_selected, DbObjectArray::GetColumn($allArticleLanguages, 'Id'))) {
$f_language_selected = 0;
}
$sqlOptions = array("LIMIT" => array("START" => $f_article_offset,
"MAX_ROWS" => $ArticlesPerPage));
if ($f_language_selected) {
// Only show a specific language.
$totalArticles = Article::GetArticles($f_publication_id,
$f_issue_number,
$f_section_number,
$f_language_selected,
null,
true);
$allArticles = Article::GetArticles($f_publication_id,
$f_issue_number,
$f_section_number,
$f_language_selected,
$sqlOptions);
$numUniqueArticles = $totalArticles;
$numUniqueArticlesDisplayed = count($allArticles);
} else {
// Show articles in all languages.
$totalArticles = Article::GetArticles($f_publication_id,
$f_issue_number,
$f_section_number,
null,
null,
true);
$allArticles = Article::GetArticlesGrouped($f_publication_id,
$f_issue_number,
$f_section_number,
null,
$f_language_id,
$sqlOptions);
$numUniqueArticles = Article::GetArticlesGrouped($f_publication_id,
$f_issue_number,
$f_section_number,
null,
null,
null,
true);
$numUniqueArticlesDisplayed = count(array_unique(DbObjectArray::GetColumn($allArticles, 'Number')));
}
$numArticlesThisPage = count($allArticles);
$previousArticleNumber = 0;
$pagerUrl = "index.php?f_publication_id=".$f_publication_id
."&f_issue_number=".$f_issue_number
."&f_section_number=".$f_section_number
."&f_language_id=".$f_language_id
."&f_language_selected=".$f_language_selected."&";
$pager = new SimplePager($numUniqueArticles, $ArticlesPerPage, $offsetVarName, $pagerUrl);
$topArray = array('Pub' => $publicationObj, 'Issue' => $issueObj,
'Section' => $sectionObj);
camp_html_content_top($translator->trans('Article List', array(), 'articles') . ': ' . $this->view->escape($sectionObj->getName()), $topArray);
$controller->view->headTitle($translator->trans('Article List', array(), 'articles').': '.$this->view->escape($sectionObj->getName()).' - Newscoop Admin', 'SET');
?>
'
. htmlspecialchars((string) $article->name) . '
================================================
FILE: newscoop/admin-files/backup.php
================================================
getService('translator');
require_once(CS_PATH_SITE.DIR_SEP . 'scripts' . DIR_SEP . 'file_processing.php');
// check permission
if (!$g_user->hasPermission('ManageBackup')) {
camp_html_display_error($translator->trans("You do not have the right to manage backups.", array(), 'home'));
exit;
}
// make backup list and define file name based on index
$files = getBackupList();
$fileIndex = Input::Get('index', 'integer', 0);
if (!empty($files[$fileIndex]['name'])) {
$file = CS_PATH_SITE . DIR_SEP . 'backup' . DIR_SEP . $files[$fileIndex]['name'];
} else {
$file = null;
}
// main controller
$action = Input::Get('action', 'string', null);
switch ($action) {
case 'backup':
set_time_limit(0);
ob_end_flush();
flush();
echo str_repeat(' ', 2048);
echo '
trans("Please take a minute to send us an email.");
echo "
trans("Thank you.");
?>
trans("Newscoop has encountered a problem.", array(), 'bug_reporting');
echo $translator->trans("We are sorry for the inconvenience.", array(), 'bug_reporting');
?> trans("In order to help the Newscoop team investigate and pinpoint the issue please take a moment to describe what happened.", array(), 'bug_reporting');
?>
* // create a new instance of Services_JSON
* $json = new Services_JSON();
*
* // convert a complexe value to JSON notation, and send it to the browser
* $value = array('foo', 'bar', array(1, 2, 'baz'), array(3, array(4)));
* $output = $json->encode($value);
*
* print($output);
* // prints: ["foo","bar",[1,2,"baz"],[3,[4]]]
*
* // accept incoming POST data, assumed to be in JSON notation
* $input = file_get_contents('php://input', 1000000);
* $value = $json->decode($input);
*
*/
class Services_JSON
{
/**
* constructs a new JSON instance
*
* @param int $use object behavior flags; combine with boolean-OR
*
* possible values:
* - SERVICES_JSON_LOOSE_TYPE: loose typing.
* "{...}" syntax creates associative arrays
* instead of objects in decode().
* - SERVICES_JSON_SUPPRESS_ERRORS: error suppression.
* Values which can't be encoded (e.g. resources)
* appear as NULL instead of throwing errors.
* By default, a deeply-nested resource will
* bubble up with an error, so all return values
* from encode() should be checked with isError()
*/
function Services_JSON($use = 0)
{
$this->use = $use;
}
/**
* convert a string from one UTF-16 char to one UTF-8 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf16 UTF-16 character
* @return string UTF-8 character
* @access private
*/
function utf162utf8($utf16)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
}
$bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
switch(true) {
case ((0x7F & $bytes) == $bytes):
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x7F & $bytes);
case (0x07FF & $bytes) == $bytes:
// return a 2-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xC0 | (($bytes >> 6) & 0x1F))
. chr(0x80 | ($bytes & 0x3F));
case (0xFFFF & $bytes) == $bytes:
// return a 3-byte UTF-8 character
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0xE0 | (($bytes >> 12) & 0x0F))
. chr(0x80 | (($bytes >> 6) & 0x3F))
. chr(0x80 | ($bytes & 0x3F));
}
// ignoring UTF-32 for now, sorry
return '';
}
/**
* convert a string from one UTF-8 char to one UTF-16 char
*
* Normally should be handled by mb_convert_encoding, but
* provides a slower PHP-only method for installations
* that lack the multibye string extension.
*
* @param string $utf8 UTF-8 character
* @return string UTF-16 character
* @access private
*/
function utf82utf16($utf8)
{
// oh please oh please oh please oh please oh please
if(function_exists('mb_convert_encoding')) {
return mb_convert_encoding($utf8, 'UTF-16', 'UTF-8');
}
switch(strlen($utf8)) {
case 1:
// this case should never be reached, because we are in ASCII range
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return $utf8;
case 2:
// return a UTF-16 character from a 2-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr(0x07 & (ord($utf8{0}) >> 2))
. chr((0xC0 & (ord($utf8{0}) << 6))
| (0x3F & ord($utf8{1})));
case 3:
// return a UTF-16 character from a 3-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
return chr((0xF0 & (ord($utf8{0}) << 4))
| (0x0F & (ord($utf8{1}) >> 2)))
. chr((0xC0 & (ord($utf8{1}) << 6))
| (0x7F & ord($utf8{2})));
}
// ignoring UTF-32 for now, sorry
return '';
}
/**
* encodes an arbitrary variable into JSON format
*
* @param mixed $var any number, boolean, string, array, or object to be encoded.
* see argument 1 to Services_JSON() above for array-parsing behavior.
* if var is a strng, note that encode() always expects it
* to be in ASCII or UTF-8 format!
*
* @return mixed JSON string representation of input var or an error if a problem occurs
* @access public
*/
function encode($var)
{
switch (gettype($var)) {
case 'boolean':
return $var ? 'true' : 'false';
case 'NULL':
return 'null';
case 'integer':
return (int) $var;
case 'double':
case 'float':
return (float) $var;
case 'string':
// STRINGS ARE EXPECTED TO BE IN ASCII OR UTF-8 FORMAT
$ascii = '';
$strlen_var = strlen($var);
/*
* Iterate over every character in the string,
* escaping with a slash or encoding to UTF-8 where necessary
*/
for ($c = 0; $c < $strlen_var; ++$c) {
$ord_var_c = ord($var{$c});
switch (true) {
case $ord_var_c == 0x08:
$ascii .= '\b';
break;
case $ord_var_c == 0x09:
$ascii .= '\t';
break;
case $ord_var_c == 0x0A:
$ascii .= '\n';
break;
case $ord_var_c == 0x0C:
$ascii .= '\f';
break;
case $ord_var_c == 0x0D:
$ascii .= '\r';
break;
case $ord_var_c == 0x22:
case $ord_var_c == 0x2F:
case $ord_var_c == 0x5C:
// double quote, slash, slosh
$ascii .= '\\'.$var{$c};
break;
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
// characters U-00000000 - U-0000007F (same as ASCII)
$ascii .= $var{$c};
break;
case (($ord_var_c & 0xE0) == 0xC0):
// characters U-00000080 - U-000007FF, mask 110XXXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c, ord($var{$c + 1}));
$c += 1;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xF0) == 0xE0):
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}));
$c += 2;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xF8) == 0xF0):
// characters U-00010000 - U-001FFFFF, mask 11110XXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}));
$c += 3;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xFC) == 0xF8):
// characters U-00200000 - U-03FFFFFF, mask 111110XX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}),
ord($var{$c + 4}));
$c += 4;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
case (($ord_var_c & 0xFE) == 0xFC):
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
ord($var{$c + 1}),
ord($var{$c + 2}),
ord($var{$c + 3}),
ord($var{$c + 4}),
ord($var{$c + 5}));
$c += 5;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
break;
}
}
return '"'.$ascii.'"';
case 'array':
/*
* As per JSON spec if any array key is not an integer
* we must treat the the whole array as an object. We
* also try to catch a sparsely populated associative
* array with numeric keys here because some JS engines
* will create an array with empty indexes up to
* max_index which can cause memory issues and because
* the keys, which may be relevant, will be remapped
* otherwise.
*
* As per the ECMA and JSON specification an object may
* have any string as a property. Unfortunately due to
* a hole in the ECMA specification if the key is a
* ECMA reserved word or starts with a digit the
* parameter is only accessible using ECMAScript's
* bracket notation.
*/
// treat as a JSON object
if (is_array($var) && count($var) && (array_keys($var) !== range(0, sizeof($var) - 1))) {
$properties = array_map(array($this, 'name_value'),
array_keys($var),
array_values($var));
foreach($properties as $property) {
if(Services_JSON::isError($property)) {
return $property;
}
}
return '{' . join(',', $properties) . '}';
}
// treat it like a regular array
$elements = array_map(array($this, 'encode'), $var);
foreach($elements as $element) {
if(Services_JSON::isError($element)) {
return $element;
}
}
return '[' . join(',', $elements) . ']';
case 'object':
$vars = get_object_vars($var);
$properties = array_map(array($this, 'name_value'),
array_keys($vars),
array_values($vars));
foreach($properties as $property) {
if(Services_JSON::isError($property)) {
return $property;
}
}
return '{' . join(',', $properties) . '}';
default:
return ($this->use & SERVICES_JSON_SUPPRESS_ERRORS)
? 'null'
: new Services_JSON_Error(gettype($var)." can not be encoded as JSON string");
}
}
/**
* array-walking function for use in generating JSON-formatted name-value pairs
*
* @param string $name name of key to use
* @param mixed $value reference to an array element to be encoded
*
* @return string JSON-formatted name-value pair, like '"name":value'
* @access private
*/
function name_value($name, $value)
{
$encoded_value = $this->encode($value);
if(Services_JSON::isError($encoded_value)) {
return $encoded_value;
}
return $this->encode(strval($name)) . ':' . $encoded_value;
}
/**
* reduce a string by removing leading and trailing comments and whitespace
*
* @param $str string string value to strip of comments and whitespace
*
* @return string string value stripped of comments and whitespace
* @access private
*/
function reduce_string($str)
{
$str = preg_replace(array(
// eliminate single line comments in '// ...' form
'#^\s*//(.+)$#m',
// eliminate multi-line comments in '/* ... */' form, at start of string
'#^\s*/\*(.+)\*/#Us',
// eliminate multi-line comments in '/* ... */' form, at end of string
'#/\*(.+)\*/\s*$#Us'
), '', $str);
// eliminate extraneous space
return trim($str);
}
/**
* decodes a JSON string into appropriate variable
*
* @param string $str JSON-formatted string
*
* @return mixed number, boolean, string, array, or object
* corresponding to given JSON input string.
* See argument 1 to Services_JSON() above for object-output behavior.
* Note that decode() always returns strings
* in ASCII or UTF-8 format!
* @access public
*/
function decode($str)
{
$str = $this->reduce_string($str);
switch (strtolower($str)) {
case 'true':
return true;
case 'false':
return false;
case 'null':
return null;
default:
$m = array();
if (is_numeric($str)) {
// Lookie-loo, it's a number
// This would work on its own, but I'm trying to be
// good about returning integers where appropriate:
// return (float)$str;
// Return float or int, as appropriate
return ((float)$str == (integer)$str)
? (integer)$str
: (float)$str;
} elseif (preg_match('/^("|\').*(\1)$/s', $str, $m) && $m[1] == $m[2]) {
// STRINGS RETURNED IN UTF-8 FORMAT
$delim = substr($str, 0, 1);
$chrs = substr($str, 1, -1);
$utf8 = '';
$strlen_chrs = strlen($chrs);
for ($c = 0; $c < $strlen_chrs; ++$c) {
$substr_chrs_c_2 = substr($chrs, $c, 2);
$ord_chrs_c = ord($chrs{$c});
switch (true) {
case $substr_chrs_c_2 == '\b':
$utf8 .= chr(0x08);
++$c;
break;
case $substr_chrs_c_2 == '\t':
$utf8 .= chr(0x09);
++$c;
break;
case $substr_chrs_c_2 == '\n':
$utf8 .= chr(0x0A);
++$c;
break;
case $substr_chrs_c_2 == '\f':
$utf8 .= chr(0x0C);
++$c;
break;
case $substr_chrs_c_2 == '\r':
$utf8 .= chr(0x0D);
++$c;
break;
case $substr_chrs_c_2 == '\\"':
case $substr_chrs_c_2 == '\\\'':
case $substr_chrs_c_2 == '\\\\':
case $substr_chrs_c_2 == '\\/':
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
($delim == "'" && $substr_chrs_c_2 != '\\"')) {
$utf8 .= $chrs{++$c};
}
break;
case preg_match('/\\\u[0-9A-F]{4}/i', substr($chrs, $c, 6)):
// single, escaped unicode character
$utf16 = chr(hexdec(substr($chrs, ($c + 2), 2)))
. chr(hexdec(substr($chrs, ($c + 4), 2)));
$utf8 .= $this->utf162utf8($utf16);
$c += 5;
break;
case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
$utf8 .= $chrs{$c};
break;
case ($ord_chrs_c & 0xE0) == 0xC0:
// characters U-00000080 - U-000007FF, mask 110XXXXX
//see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 2);
++$c;
break;
case ($ord_chrs_c & 0xF0) == 0xE0:
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 3);
$c += 2;
break;
case ($ord_chrs_c & 0xF8) == 0xF0:
// characters U-00010000 - U-001FFFFF, mask 11110XXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 4);
$c += 3;
break;
case ($ord_chrs_c & 0xFC) == 0xF8:
// characters U-00200000 - U-03FFFFFF, mask 111110XX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 5);
$c += 4;
break;
case ($ord_chrs_c & 0xFE) == 0xFC:
// characters U-04000000 - U-7FFFFFFF, mask 1111110X
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$utf8 .= substr($chrs, $c, 6);
$c += 5;
break;
}
}
return $utf8;
} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
// array, or object notation
if ($str{0} == '[') {
$stk = array(SERVICES_JSON_IN_ARR);
$arr = array();
} else {
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$stk = array(SERVICES_JSON_IN_OBJ);
$obj = array();
} else {
$stk = array(SERVICES_JSON_IN_OBJ);
$obj = new stdClass();
}
}
array_push($stk, array('what' => SERVICES_JSON_SLICE,
'where' => 0,
'delim' => false));
$chrs = substr($str, 1, -1);
$chrs = $this->reduce_string($chrs);
if ($chrs == '') {
if (reset($stk) == SERVICES_JSON_IN_ARR) {
return $arr;
} else {
return $obj;
}
}
//print("\nparsing {$chrs}\n");
$strlen_chrs = strlen($chrs);
for ($c = 0; $c <= $strlen_chrs; ++$c) {
$top = end($stk);
$substr_chrs_c_2 = substr($chrs, $c, 2);
if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
// found a comma that is not inside a string, array, etc.,
// OR we've reached the end of the character list
$slice = substr($chrs, $top['where'], ($c - $top['where']));
array_push($stk, array('what' => SERVICES_JSON_SLICE, 'where' => ($c + 1), 'delim' => false));
//print("Found split at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
if (reset($stk) == SERVICES_JSON_IN_ARR) {
// we are in an array, so just push an element onto the stack
array_push($arr, $this->decode($slice));
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
// we are in an object, so figure
// out the property name and set an
// element in an associative array,
// for now
$parts = array();
if (preg_match('/^\s*(["\'].*[^\\\]["\'])\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
// "name":value pair
$key = $this->decode($parts[1]);
$val = $this->decode($parts[2]);
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
} else {
$obj->$key = $val;
}
} elseif (preg_match('/^\s*(\w+)\s*:\s*(\S.*),?$/Uis', $slice, $parts)) {
// name:value pair, where name is unquoted
$key = $parts[1];
$val = $this->decode($parts[2]);
if ($this->use & SERVICES_JSON_LOOSE_TYPE) {
$obj[$key] = $val;
} else {
$obj->$key = $val;
}
}
}
} elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
// found a quote, and we are not inside a string
array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
//print("Found start of string at {$c}\n");
} elseif (($chrs{$c} == $top['delim']) &&
($top['what'] == SERVICES_JSON_IN_STR) &&
((strlen(substr($chrs, 0, $c)) - strlen(rtrim(substr($chrs, 0, $c), '\\'))) % 2 != 1)) {
// found a quote, we're in a string, and it's not escaped
// we know that it's not escaped becase there is _not_ an
// odd number of backslashes at the end of the string so far
array_pop($stk);
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
} elseif (($chrs{$c} == '[') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-bracket, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
//print("Found start of array at {$c}\n");
} elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
// found a right-bracket, and we're in an array
array_pop($stk);
//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
} elseif (($chrs{$c} == '{') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-brace, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
//print("Found start of object at {$c}\n");
} elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
// found a right-brace, and we're in an object
array_pop($stk);
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
} elseif (($substr_chrs_c_2 == '/*') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a comment start, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_CMT, 'where' => $c, 'delim' => false));
$c++;
//print("Found start of comment at {$c}\n");
} elseif (($substr_chrs_c_2 == '*/') && ($top['what'] == SERVICES_JSON_IN_CMT)) {
// found a comment end, and we're in one now
array_pop($stk);
$c++;
for ($i = $top['where']; $i <= $c; ++$i)
$chrs = substr_replace($chrs, ' ', $i, 1);
//print("Found end of comment at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
}
}
if (reset($stk) == SERVICES_JSON_IN_ARR) {
return $arr;
} elseif (reset($stk) == SERVICES_JSON_IN_OBJ) {
return $obj;
}
}
}
}
/**
* @todo Ultimately, this should just call PEAR::isError()
*/
function isError($data, $code = null)
{
if (class_exists('pear')) {
return PEAR::isError($data, $code);
} elseif (is_object($data) && (get_class($data) == 'services_json_error' ||
is_subclass_of($data, 'services_json_error'))) {
return true;
}
return false;
}
}
if (class_exists('PEAR_Error')) {
class Services_JSON_Error extends PEAR_Error
{
function Services_JSON_Error($message = 'unknown error', $code = null,
$mode = null, $options = null, $userinfo = null)
{
parent::PEAR_Error($message, $code, $mode, $options, $userinfo);
}
}
} else {
/**
* @todo Ultimately, this class shall be descended from PEAR_Error
*/
class Services_JSON_Error
{
function Services_JSON_Error($message = 'unknown error', $code = null,
$mode = null, $options = null, $userinfo = null)
{
}
}
}
?>
================================================
FILE: newscoop/admin-files/articles/add.php
================================================
getService('translator');
global $Campsite;
if (!$g_user->hasPermission('AddArticle')) {
camp_html_display_error($translator->trans("You do not have the right to add articles."));
exit;
}
// Only for use when in the article screens.
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
// The article location dropdowns cause this page to reload,
// so we need to preserve the state with each refresh.
$f_article_name = Input::Get('f_article_name', 'string', '', true);
$f_article_type = Input::Get('f_article_type', 'string', '', true);
$f_article_language = Input::Get('f_article_language', 'int', $f_language_id, true);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $_SERVER['REQUEST_URI']);
exit;
}
// Only for the article screens.
$publicationObj = null;
$issueObj = null;
$sectionObj = null;
if ($f_publication_id > 0) {
$publicationObj = new Publication($f_publication_id);
if (($f_issue_number > 0) && ($f_article_language > 0)) {
$issueObj = new Issue($f_publication_id, $f_article_language, $f_issue_number);
if ($f_section_number > 0) {
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_article_language, $f_section_number);
}
}
}
// Only show the languages for sections which have been translated.
$sections = Section::GetSections($f_publication_id, $f_issue_number, null, null, null, null, true);
$languageIds = DbObjectArray::GetColumn($sections, 'IdLanguage');
$allLanguages = array();
foreach ($languageIds as $languageId) {
if (!isset($allLanguages[$languageId])) {
$allLanguages[$languageId] = new Language($languageId);
}
}
$allArticleTypes = ArticleType::GetArticleTypes();
$topArray = array('Pub' => $publicationObj, 'Issue' => $issueObj,
'Section' => $sectionObj);
camp_html_content_top($translator->trans('Add new article'), $topArray, true, false, array($translator->trans("Articles") => "/$ADMIN/articles/?f_publication_id=$f_publication_id&f_issue_number=$f_issue_number&f_section_number=$f_section_number&f_language_id=$f_language_id"));
$controller->view->headTitle($translator->trans('Add new article').' - Newscoop Admin', 'SET');
?>
">
/left_arrow.png" BORDER="0">
">trans("Article List", array(), 'articles'); ?>
trans("No article types were defined. You must create an article type first.", array(), 'articles'); ?>
================================================
FILE: newscoop/admin-files/articles/autopublish_del.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
if (!$g_user->hasPermission("Publish")) {
camp_html_display_error($translator->trans("You do not have the right to schedule issues or articles for automatic publishing.", array(), 'articles'));
exit;
}
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_event_id = Input::Get('f_event_id', 'int', 0);
$BackLink = Input::Get('Back', 'string', "/$ADMIN/articles/index.php", true);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $BackLink);
exit;
}
$articleObj = new Article($f_language_selected, $f_article_number);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans('Article does not exist.'), $BackLink);
exit;
}
$articlePublishObj = new ArticlePublish($f_event_id);
if ($articlePublishObj->exists()) {
$articlePublishObj->delete();
}
camp_html_add_msg($translator->trans("Scheduled action deleted.", array(), 'articles'), "ok");
$redirect = camp_html_article_url($articleObj, $f_language_id, "edit.php");
camp_html_goto_page($redirect);
?>
================================================
FILE: newscoop/admin-files/articles/autopublish_do_add.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
if (!$g_user->hasPermission("Publish")) {
camp_html_display_error($translator->trans("You do not have the right to schedule issues or articles for automatic publishing.", array(), 'articles'));
exit;
}
$f_publication_id = Input::Get('f_publication_id', 'int', 0);
$f_issue_number = Input::Get('f_issue_number', 'int', 0);
$f_section_number = Input::Get('f_section_number', 'int', 0);
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_publish_date = trim(Input::Get('f_publish_date', 'string', '', true));
$f_publish_hour = trim(Input::Get('f_publish_hour', 'int', '', true));
$f_publish_minute = trim(Input::Get('f_publish_minute', 'int', '', true));
$f_publish_action = Input::Get('f_publish_action', 'string', '', true);
$f_front_page_action = Input::Get('f_front_page_action', 'string', '', true);
$f_section_page_action = Input::Get('f_section_page_action', 'string', '', true);
$f_article_code = Input::Get('f_article_code', 'array', 0);
// "mode" can be "multi" or "single"
$f_mode = Input::Get('f_mode', 'string', 'single', true);
if ($f_mode == "multi") {
$args = $_REQUEST;
$argsStr = camp_implode_keys_and_values($args, "=", "&");
$backLink = "/$ADMIN/articles/multi_autopublish.php?".$argsStr;
} else {
$args = $_REQUEST;
unset($args["f_article_code"]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
$backLink = "/$ADMIN/articles/autopublish.php?".$argsStr;
}
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $BackLink);
exit;
}
// Get all the articles.
$articles = array();
$errorArticles = array();
foreach ($f_article_code as $code) {
list($articleId, $languageId) = explode("_", $code);
$tmpArticle = new Article($languageId, $articleId);
if ($tmpArticle->getWorkflowStatus() != 'N') {
$articles[] = $tmpArticle;
}
else {
$errorArticles[] = $tmpArticle;
}
}
$publicationObj = new Publication($f_publication_id);
if (!$publicationObj->exists()) {
camp_html_display_error($translator->trans('Publication does not exist.'));
exit;
}
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
if (!$issueObj->exists()) {
camp_html_display_error($translator->trans('Issue does not exist.'));
exit;
}
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
if (!$sectionObj->exists()) {
camp_html_display_error($translator->trans('Section does not exist.'));
exit;
}
if ($f_publish_date == "") {
camp_html_add_msg($translator->trans('You must fill in the $1 field.', array('$1' => ''.$translator->trans('Date').'')));
}
if ( ($f_publish_hour == "") || ($f_publish_minute == "") ) {
camp_html_add_msg($translator->trans('You must fill in the $1 field.',array('$1' => ''.$translator->trans('Time').'')));
}
if ( ($f_publish_action != "P") && ($f_publish_action != "U")
&& ($f_front_page_action != "S") && ($f_front_page_action != "R")
&& ($f_section_page_action != "S") && ($f_section_page_action != "R") ) {
camp_html_add_msg($translator->trans('You must select an action.'));
}
if ( (count($articles) == 0) && (count($errorArticles) > 0) ) {
camp_html_add_msg($translator->trans("The article is new; it is not possible to schedule it for automatic publishing.", array(), 'articles'));
}
if (camp_html_has_msgs()) {
camp_html_goto_page($backLink);
}
$publishTime = $f_publish_date . " " . $f_publish_hour . ":" . $f_publish_minute . ":00";
foreach ($articles as $tmpArticle) {
$articleEvents = ArticlePublish::GetArticleEvents($tmpArticle->getArticleNumber(), $f_language_selected, TRUE);
foreach($articleEvents as $event) {
if ( $event->getActionTime() == $publishTime ) {
if ( $f_publish_action != $event->getPublishAction() ) {
?>
create();
$articlePublishObj->setArticleNumber($tmpArticle->getArticleNumber());
$articlePublishObj->setLanguageId($tmpArticle->getLanguageId());
$articlePublishObj->setActionTime($publishTime);
if ($f_publish_action == "P" || $f_publish_action == "U") {
$articlePublishObj->setPublishAction($f_publish_action);
}
if ($f_front_page_action == "S" || $f_front_page_action == "R") {
$articlePublishObj->setFrontPageAction($f_front_page_action);
}
if ($f_section_page_action == "S" || $f_section_page_action == "R") {
$articlePublishObj->setSectionPageAction($f_section_page_action);
}
Log::ArticleMessage($tmpArticle, $translator->trans('Scheduled action added', array(), 'articles'), $g_user->getUserId(), 37);
}
if ($f_mode == "multi") {
$args = $_REQUEST;
unset($args["f_article_code"]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
camp_html_add_msg($translator->trans("Scheduled action added.", array(), 'articles'), "ok");
camp_html_goto_page("/$ADMIN/articles/index.php?".$argsStr);
} else {
?>
================================================
FILE: newscoop/admin-files/articles/comments/add_comment_form.php
================================================
getService('translator');
// check permissions
if (!$g_user->hasPermission('CommentEnable')) {
return;
}
?>
================================================
FILE: newscoop/admin-files/articles/comments/reply.php
================================================
getService('translator');
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_comment_id = Input::Get('f_comment_id');
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $BackLink);
exit;
}
if ($g_user->hasPermission('EditorSpellcheckerEnabled')) {
$spellcheck = 'spellcheck="true"';
} else {
$spellcheck = 'spellcheck="false"';
}
// Check that the article exists.
$articleObj = new Article($f_language_id, $f_article_number);
if (!$articleObj->exists()) {
exit;
}
if (!$articleObj->commentsEnabled() || $articleObj->commentsLocked()) {
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_selected, "edit.php"));
}
$publicationObj = new Publication($articleObj->getPublicationId());
$issueObj = new Issue($articleObj->getPublicationId(), $f_language_id, $articleObj->getIssueNumber());
$sectionObj = new Section($articleObj->getPublicationId(), $articleObj->getIssueNumber(), $f_language_id, $articleObj->getSectionNumber());
$languageObj = new Language($articleObj->getLanguageId());
$topArray = array('Pub' => $publicationObj, 'Issue' => $issueObj,
'Section' => $sectionObj, 'Article'=>$articleObj);
camp_html_content_top($translator->trans("Reply to comment", array(), 'article_comments'), $topArray);
?>
/left_arrow.png" border="0" />
">trans('Back to Edit Article'); ?>
trans('From', array(), 'article_comments'); ?>:
${name} <${email}> (${ip})
trans('Date'); ?>:
${time_created}
trans('Subject'); ?>:
${subject}
trans('Comment'); ?>:
${message}
================================================
FILE: newscoop/admin-files/articles/do_add.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
// Check permissions
if (!$g_user->hasPermission('AddArticle')) {
camp_html_display_error($translator->trans("You do not have the right to add articles."));
exit;
}
// Get input
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
// For choosing the article location.
$f_destination_publication_id = Input::Get('f_destination_publication_id', 'int', 0, true);
$f_destination_issue_number = Input::Get('f_destination_issue_number', 'int', 0, true);
$f_destination_section_number = Input::Get('f_destination_section_number', 'int', 0, true);
$f_article_name = trim(Input::Get('f_article_name', 'string', ''));
$f_article_type = trim(Input::Get('f_article_type', 'string', ''));
$f_article_language = trim(Input::Get('f_article_language', 'int', 0));
$f_language_id = ($f_language_id > 0) ? $f_language_id : $f_article_language;
$linkArgs = '?f_article_name=' . urlencode($f_article_name)
. '&f_article_type=' . urlencode($f_article_type)
. "&f_article_language=$f_article_language";
if ($f_publication_id != 0) {
$linkArgs .= "&f_publication_id=$f_publication_id"
. "&f_issue_number=$f_issue_number"
. "&f_section_number=$f_section_number"
. "&f_language_id=$f_language_id";
$backLink = "/$ADMIN/articles/add.php" . $linkArgs;
} else {
$backLink = "/$ADMIN/articles/add_move.php" . $linkArgs;
}
// Check input
if (empty($f_article_name)) {
camp_html_add_msg($translator->trans('You must fill in the $1 field.', array('$1' => ''.$translator->trans('Name').'')));
}
if (empty($f_article_type)) {
camp_html_add_msg($translator->trans('You must select an article type.'));
}
if (empty($f_article_language)) {
camp_html_add_msg($translator->trans('You must select a language.'));
}
if (camp_html_has_msgs()) {
camp_html_goto_page($backLink);
}
$articleType = new ArticleType($f_article_type);
if (!$articleType->exists()) {
camp_html_display_error($translator->trans('Invalid type: $1', array('$1' => $f_article_type), 'articles'));
}
$publication_id = ($f_destination_publication_id > 0) ? $f_destination_publication_id : $f_publication_id;
$issue_number = ($f_destination_issue_number > 0) ? $f_destination_issue_number : $f_issue_number;
$section_number = ($f_destination_section_number > 0) ? $f_destination_section_number : $f_section_number;
if ($publication_id > 0) {
$publicationObj = new Publication($publication_id);
if (!$publicationObj->exists()) {
camp_html_display_error($translator->trans('Publication does not exist.'));
exit;
}
if ($issue_number > 0) {
$issueObj = new Issue($publication_id, $f_article_language, $issue_number);
if (!$issueObj->exists()) {
camp_html_display_error($translator->trans('Issue does not exist.'));
exit;
}
if ($section_number > 0) {
$sectionObj = new Section($publication_id, $issue_number, $f_article_language, $section_number);
if (!$sectionObj->exists()) {
camp_html_display_error($translator->trans('Section does not exist.'));
exit;
}
}
}
}
// Create article
$articleObj = new Article($f_article_language);
$conflictingArticles = Article::GetByName($f_article_name, $publication_id, $issue_number, $section_number, null, true);
if (count($conflictingArticles) > 0) {
$conflictingArticle = array_pop($conflictingArticles);
$conflictingArticleLink = camp_html_article_url($conflictingArticle, $conflictingArticle->getLanguageId(), 'edit.php');
camp_html_add_msg($translator->trans("You cannot have two articles in the same section with the same name. The article name you specified is already in use by the article $1.",
array('$1' => "".$conflictingArticle->getName().""), 'articles'));
camp_html_goto_page($backLink);
} else {
$articleObj->create($f_article_type, $f_article_name, $publication_id, $issue_number, $section_number);
}
if ($articleObj->exists()) {
$em = $this->_helper->service('em');
$currentUser = $this->_helper->service('user')->getCurrentUser();
$author = $currentUser->getAuthorId();
$articleObj->setCreatorId($g_user->getUserId());
if (empty($author)) {
$authorObj = new Author($g_user->getRealName());
if (!$authorObj->exists()) {
$authorData = Author::ReadName($g_user->getRealName());
$authorData['email'] = $g_user->getEmail();
$authorObj->create($authorData);
} else {
$authorUser = $em->getRepository('Newscoop\Entity\Author')
->findOneById($authorObj->getId());
$currentUser->setAuthor($authorUser);
$em->flush();
}
} else {
$authorObj = new Author($author);
}
if ($authorObj->exists()) {
$articleObj->setAuthor($authorObj);
}
$articleObj->setIsPublic(true);
if ($publication_id > 0) {
$commentDefault = $publicationObj->commentsArticleDefaultEnabled();
$articleObj->setCommentsEnabled($commentDefault);
}
camp_html_add_msg($translator->trans("Article created.", array(), 'articles'), "ok");
$editorService = \Zend_Registry::get('container')->getService('newscoop.editor');
$articleLink = $editorService->getLink($articleObj);
camp_html_goto_page($articleLink, false);
ArticleIndex::RunIndexer(3, 10, true);
exit();
} else {
camp_html_display_error($translator->trans("Could not create article.", array(), 'articles'));
}
================================================
FILE: newscoop/admin-files/articles/do_article_action.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_action = Input::Get('f_action', 'string', null, true);
$f_action_workflow = Input::Get('f_action_workflow', 'string', null, true);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())));
exit;
}
if (is_null($f_action) && is_null($f_action_workflow)) {
camp_html_display_error($translator->trans('No action specified', array(), 'articles'));
exit;
}
$articleObj = new Article($f_language_selected, $f_article_number);
if (!$articleObj->exists()) {
$BackLink = "/$ADMIN/articles/index.php?f_publication_id=$f_publication_id&f_issue_number=$f_issue_number&f_language_id=$f_language_id&f_section_number=$f_section_number";
camp_html_display_error($translator->trans('Article does not exist.'), $BackLink);
exit;
}
switch ($f_action) {
case "unlock":
// If the user does not have permission to change the article
// or they didnt create the article, give them the boot.
if (!$articleObj->userCanModify($g_user)) {
camp_html_add_msg($translator->trans("You do not have the right to change this article. You may only edit your own articles and once submitted an article can only be changed by authorized users.", array(), 'articles'));
} else {
camp_html_add_msg($translator->trans("Article unlocked.", array(), 'articles'), "ok");
$articleObj->setIsLocked(false);
\Zend_Registry::get('container')->getService('dispatcher')
->dispatch('article.unlock', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array(
'article' => $articleObj
)));
}
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_id, "edit.php", "", "&f_unlock=true"));
exit;
case "delete":
if (!$g_user->hasPermission('DeleteArticle')) {
camp_html_add_msg($translator->trans("You do not have the right to delete articles.", array(), 'articles'));
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_id, "edit.php"));
} else {
$creatorId = $articleObj->getCreatorId();
$articleObj->delete();
\Zend_Registry::get('container')->getService('dispatcher')
->dispatch('user.set_points', new \Newscoop\EventDispatcher\Events\GenericEvent(null, array('user' => $creatorId)));
if ($f_publication_id > 0) {
$url = "/$ADMIN/articles/index.php"
."?f_publication_id=$f_publication_id"
."&f_issue_number=$f_issue_number"
."&f_section_number=$f_section_number"
."&f_language_id=$f_language_id";
} else {
$url = "/$ADMIN/home.php";
}
camp_html_add_msg($translator->trans("Article deleted.", array(), 'articles'), "ok");
camp_html_goto_page($url);
}
exit;
case "translate":
$args = $_REQUEST;
unset($args[SecurityToken::SECURITY_TOKEN]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
$argsStr .= "&f_article_code=".$f_article_number."_".$f_language_selected;
camp_html_goto_page("/$ADMIN/articles/translate.php?".$argsStr, false);
ArticleIndex::RunIndexer(3, 10, true);
exit;
case "copy":
$args = $_REQUEST;
unset($args[SecurityToken::SECURITY_TOKEN]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
$argsStr .= "&f_article_code[]=".$f_article_number."_".$f_language_selected;
$argsStr .= "&f_mode=single&f_action=duplicate";
camp_html_goto_page("/$ADMIN/articles/duplicate.php?".$argsStr, false);
ArticleIndex::RunIndexer(3, 10, true);
exit;
case "move":
$args = $_REQUEST;
unset($args[SecurityToken::SECURITY_TOKEN]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
$argsStr .= "&f_article_code[]=".$f_article_number."_".$f_language_selected;
$argsStr .= "&f_mode=single&f_action=move";
camp_html_goto_page("/$ADMIN/articles/duplicate.php?".$argsStr, false);
ArticleIndex::RunIndexer(3, 10, true);
exit;
}
if (!is_null($f_action_workflow)) {
$f_action_workflow = strtoupper($f_action_workflow);
if (in_array($f_action_workflow, array('Y', 'M', 'S', 'N'))) {
$access = false;
// A publisher can change the status in any way he sees fit.
// Someone who can change an article can submit/unsubmit articles.
// A user who owns the article may submit it.
if ($g_user->hasPermission('Publish')
|| ($g_user->hasPermission('ChangeArticle') && ($f_action_workflow != 'Y'))
|| ($articleObj->userCanModify($g_user) && ($f_action_workflow == 'S') )) {
$access = true;
}
// If the article is set to New, remove all the autopublish events
if ( $f_action_workflow == 'N') {
$articleEvents = ArticlePublish::GetArticleEvents($f_article_number, $f_language_selected, TRUE);
foreach($articleEvents as $event) {
$eventId = $event->getArticlePublishId();
$articlePublishObj = new ArticlePublish($eventId);
if ($articlePublishObj->exists()) {
$articlePublishObj->delete();
}
}
}
if (!$access) {
camp_html_add_msg($translator->trans("You do not have the right to change this article status. Once submitted an article can only be changed by authorized users.", array(), 'articles'));
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_id, "edit.php"));
}
// If the article is not yet categorized, force it to be before publication.
if (($f_action_workflow == "Y" || $f_action_workflow == 'M') && (($articleObj->getPublicationId() == 0) || ($articleObj->getIssueNumber() == 0) || ($articleObj->getSectionNumber() == 0))) {
$args = $_REQUEST;
$argsStr = camp_implode_keys_and_values($_REQUEST, "=", "&");
$argsStr .= "&f_article_code[]=".$f_article_number."_".$f_language_selected;
$argsStr .= "&f_mode=single&f_action=publish";
camp_html_goto_page("/$ADMIN/articles/duplicate.php?".$argsStr);
}
else if (($f_action_workflow == "S") && (($articleObj->getPublicationId() == 0) || ($articleObj->getIssueNumber() == 0) || ($articleObj->getSectionNumber() == 0))) {
$args = $_REQUEST;
$argsStr = camp_implode_keys_and_values($_REQUEST, "=", "&");
$argsStr .= "&f_article_code[]=".$f_article_number."_".$f_language_selected;
$argsStr .= "&f_mode=single&f_action=submit";
camp_html_goto_page("/$ADMIN/articles/duplicate.php?".$argsStr);
}
$articleObj->setWorkflowStatus($f_action_workflow);
// Make sure that the time stamp is updated.
$articleObj->setProperty('time_updated', 'NOW()', true, true);
$cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
$cacheService->clearNamespace('article');
camp_html_add_msg($translator->trans("Article status set to $1", array('$1' => $articleObj->getWorkflowDisplayString()), 'articles'), "ok");
}
$url = camp_html_article_url($articleObj, $f_language_id, "edit.php");
camp_html_goto_page($url);
}
?>
================================================
FILE: newscoop/admin-files/articles/do_article_list_action.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
// Get input
$f_publication_id = Input::Get('f_publication_id', 'int', 0);
$f_issue_number = Input::Get('f_issue_number', 'int', 0);
$f_section_number = Input::Get('f_section_number', 'int', 0);
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_codes = Input::Get('f_article_code', 'array', array(), true);
$f_article_list_action = Input::Get('f_article_list_action');
$f_total_articles = Input::Get('f_total_articles', 'int', 0);
$offsetVarName = "f_article_offset_".$f_publication_id."_".$f_issue_number."_".$f_language_id."_".$f_section_number;
$f_article_offset = camp_session_get($offsetVarName, 0);
$ArticlesPerPage = 15;
if (sizeof($f_article_codes) == 0) {
camp_html_add_msg('You must select at least one article to perform an action.');
camp_html_goto_page("/$ADMIN/articles/?f_publication_id=$f_publication_id&f_issue_number=$f_issue_number"
."&f_section_number=$f_section_number&f_language_id=$f_language_id");
exit(0);
}
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())));
exit;
}
if ($f_article_offset < 0) {
$f_article_offset = 0;
}
// Validate permissions
switch ($f_article_list_action) {
case "delete":
if (!$g_user->hasPermission('DeleteArticle')) {
camp_html_display_error($translator->trans("You do not have the right to delete articles.", array(), 'articles'));
exit;
}
break;
case "publish":
if (!$g_user->hasPermission('Publish')) {
$errorStr = $translator->trans("You do not have the right to change this article status. Once submitted an article can only be changed by authorized users.", array(), 'articles');
camp_html_display_error($errorStr, $BackLink);
exit;
}
break;
case "copy":
case "copy_interactive":
if (!$g_user->hasPermission('AddArticle')) {
$errorStr = $translator->trans("You do not have the right to add articles.");
camp_html_display_error($errorStr, $BackLink);
exit;
}
break;
}
$articleCodes = array();
$groupedArticleCodes = array();
foreach ($f_article_codes as $code) {
list($articleId, $languageId) = explode("_", $code);
$articleCodes[] = array("article_id" => $articleId, "language_id" => $languageId);
$groupedArticleCodes[$articleId][$languageId] = $languageId;
}
switch ($f_article_list_action) {
case "workflow_new":
foreach ($articleCodes as $articleCode) {
$articleObj = new Article($articleCode['language_id'], $articleCode['article_id']);
// A publisher can change the status in any way he sees fit.
// Someone who can change an article can submit/unsubmit articles.
if ($g_user->hasPermission('Publish')
|| ($g_user->hasPermission('ChangeArticle') && ($articleObj->getWorkflowStatus() == 'S'))) {
$articleObj->setWorkflowStatus('N');
$articleObj->setProperty('time_updated', 'NOW()', true, true);
}
}
camp_html_add_msg($translator->trans("Article status set to $1", array('$1' => $translator->trans("New")), 'articles'), "ok");
break;
case "workflow_submit":
foreach ($articleCodes as $articleCode) {
$articleObj = new Article($articleCode['language_id'], $articleCode['article_id']);
// A user who owns the article may submit it.
if ($g_user->hasPermission("Publish") || $articleObj->userCanModify($g_user)) {
$articleObj->setWorkflowStatus('S');
$articleObj->setProperty('time_updated', 'NOW()', true, true);
}
}
camp_html_add_msg($translator->trans("Article status set to $1", array('$1' => $translator->trans("Submitted")), 'articles'), "ok");
break;
case "workflow_publish":
foreach ($articleCodes as $articleCode) {
$articleObj = new Article($articleCode['language_id'], $articleCode['article_id']);
$articleObj->setWorkflowStatus('Y');
$articleObj->setProperty('time_updated', 'NOW()', true, true);
\Zend_Registry::get('container')->getService('dispatcher')
->dispatch('article.publish', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array(
'article' => $articleObj
)));
}
camp_html_add_msg($translator->trans("Article status set to $1", array('$1' => $translator->trans("Published")), 'articles'), "ok");
break;
case "delete":
foreach ($articleCodes as $articleCode) {
$articleObj = new Article($articleCode['language_id'], $articleCode['article_id']);
$articleObj->delete();
}
if ($f_article_offset > 15
&& (count($articleCodes) + $f_article_offset) == $f_total_articles) {
$f_article_offset -= $ArticlesPerPage;
}
camp_html_add_msg($translator->trans("Article(s) deleted.", array(), 'articles'), "ok");
break;
case "toggle_front_page":
foreach ($articleCodes as $articleCode) {
$articleObj = new Article($articleCode['language_id'], $articleCode['article_id']);
if ($articleObj->userCanModify($g_user)) {
$articleObj->setOnFrontPage(!$articleObj->onFrontPage());
}
}
camp_html_add_msg($translator->trans("$1 toggled.", array('$1' => """.$translator->trans("On Front Page")."""), 'articles'), "ok");
break;
case "toggle_section_page":
foreach ($articleCodes as $articleCode) {
$articleObj = new Article($articleCode['language_id'], $articleCode['article_id']);
if ($articleObj->userCanModify($g_user)) {
$articleObj->setOnSectionPage(!$articleObj->onSectionPage());
}
}
camp_html_add_msg($translator->trans("$1 toggled.", array('$1' => """.$translator->trans("On Section Page")."""), 'articles'), "ok");
break;
case "toggle_comments":
foreach ($articleCodes as $articleCode) {
$articleObj = new Article($articleCode['language_id'], $articleCode['article_id']);
if ($articleObj->userCanModify($g_user)) {
$articleObj->setCommentsEnabled(!$articleObj->commentsEnabled());
}
}
camp_html_add_msg($translator->trans("$1 toggled.", array('$1' => """.$translator->trans("Comments")."""), 'articles'), "ok");
break;
case "copy":
foreach ($groupedArticleCodes as $articleNumber => $languageArray) {
$languageId = camp_array_peek($languageArray);
$articleObj = new Article($languageId, $articleNumber);
$articleObj->copy($articleObj->getPublicationId(),
$articleObj->getIssueNumber(),
$articleObj->getSectionNumber(),
$g_user->getUserId(),
$languageArray);
\Zend_Registry::get('container')->getService('dispatcher')
->dispatch('article.duplicate', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array(
'article' => $articleObj,
'orginal_article_number' => $articleNumber
)));
camp_html_add_msg($translator->trans("Article(s) duplicated.", array(), 'articles'), "ok");
}
camp_session_set($offsetVarName, 0);
break;
case "copy_interactive":
$args = $_REQUEST;
unset($args[SecurityToken::SECURITY_TOKEN]);
unset($args["f_article_code"]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
$argsStr .= "&f_mode=multi&f_action=duplicate";
foreach ($_REQUEST["f_article_code"] as $code) {
$argsStr .= "&f_article_code[]=$code";
}
camp_session_set($offsetVarName, 0);
camp_html_goto_page("/$ADMIN/articles/duplicate.php?".$argsStr);
case "move":
$args = $_REQUEST;
unset($args[SecurityToken::SECURITY_TOKEN]);
unset($args["f_article_code"]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
$argsStr .= "&f_mode=multi&f_action=move";
foreach ($_REQUEST["f_article_code"] as $code) {
$argsStr .= "&f_article_code[]=$code";
}
camp_session_set($offsetVarName, 0);
camp_html_goto_page("/$ADMIN/articles/duplicate.php?".$argsStr);
case "unlock":
foreach ($articleCodes as $articleCode) {
$articleObj = new Article($articleCode['language_id'], $articleCode['article_id']);
if ($articleObj->userCanModify($g_user)) {
$articleObj->setIsLocked(false);
}
}
camp_html_add_msg($translator->trans("Article(s) unlocked.", array(), 'articles'), "ok");
break;
case "context_box_update":
camp_html_add_msg($translator->trans("Context Box updated", array(), 'articles'), "ok");
break;
case "schedule_publish":
$args = $_REQUEST;
unset($args[SecurityToken::SECURITY_TOKEN]);
unset($args["f_article_code"]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
foreach ($_REQUEST["f_article_code"] as $code) {
$argsStr .= "&f_article_code[]=$code";
}
camp_html_goto_page("/$ADMIN/articles/multi_autopublish.php?".$argsStr);
case "translate":
$args = $_REQUEST;
unset($args[SecurityToken::SECURITY_TOKEN]);
unset($args["f_article_code"]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
foreach ($_REQUEST["f_article_code"] as $code) {
$argsStr .= "&f_article_code=$code";
break;
}
camp_html_goto_page("/$ADMIN/articles/translate.php?".$argsStr);
}
$backUrl = "/$ADMIN/articles/index.php?f_publication_id=$f_publication_id"
. "&f_issue_number=$f_issue_number&f_section_number=$f_section_number"
. "&f_language_id=$f_language_id&f_language_selected=$f_language_selected"
. "&$offsetVarName=$f_article_offset";
camp_html_goto_page($backUrl);
?>
================================================
FILE: newscoop/admin-files/articles/do_edit.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_article_author = Input::Get('f_article_author', 'array', array(), true);
$f_article_author_type = Input::Get('f_article_author_type', 'array', array(), true);
$f_on_front_page = Input::Get('f_on_front_page', 'string', '', true);
$f_on_section_page = Input::Get('f_on_section_page', 'string', '', true);
$f_is_public = Input::Get('f_is_public', 'string', '', true);
$f_keywords = Input::Get('f_keywords');
$f_article_title = Input::Get('f_article_title');
$f_message = Input::Get('f_message', 'string', '', true);
$f_creation_date = Input::Get('f_creation_date');
$f_publish_date = Input::Get('f_publish_date');
$f_comment_status = Input::Get('f_comment_status', 'string', '', true);
if (isset($_REQUEST['save_and_close'])) {
$f_save_button = 'save_and_close';
$BackLink = "/$ADMIN/articles/index.php?f_publication_id=$f_publication_id&f_issue_number=$f_issue_number&f_language_id=$f_language_id&f_section_number=$f_section_number";
} else {
$f_save_button = 'save';
$BackLink = "/$ADMIN/";
}
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $BackLink);
exit;
}
// Fetch article
$articleObj = new Article($f_language_selected, $f_article_number);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans('No such article.', array(), 'articles'), $BackLink);
exit;
}
$articleTypeObj = $articleObj->getArticleData();
$dbColumns = $articleTypeObj->getUserDefinedColumns(false, true);
$articleFields = array();
foreach ($dbColumns as $dbColumn) {
if ($dbColumn->getType() == ArticleTypeField::TYPE_BODY) {
$dbColumnParam = $dbColumn->getName() . '_' . $f_article_number;
} else {
$dbColumnParam = $dbColumn->getName();
}
if (isset($_REQUEST[$dbColumnParam])) {
if($dbColumn->getType() == ArticleTypeField::TYPE_TEXT
&& $dbColumn->getMaxSize()!=0
&& $dbColumn->getMaxSize()!='') {
$articleFields[$dbColumn->getName()] = substr(trim(Input::Get($dbColumnParam)), 0, $dbColumn->getMaxSize());
}
else
$articleFields[$dbColumn->getName()] = trim(Input::Get($dbColumnParam));
} else {
$articleFields[$dbColumn->getName()] = null;
}
}
if (!empty($f_message)) {
camp_html_add_msg($f_message, "ok");
}
if (!$articleObj->userCanModify($g_user)) {
camp_html_add_msg($translator->trans("You do not have the right to change this article. You may only edit your own articles and once submitted an article can only be changed by authorized users.", array(), 'articles'));
camp_html_goto_page($BackLink);
exit;
}
// Only users with a lock on the article can change it.
if ($articleObj->isLocked() && ($g_user->getUserId() != $articleObj->getLockedByUser())) {
$diffSeconds = time() - strtotime($articleObj->getLockTime());
$hours = floor($diffSeconds/3600);
$diffSeconds -= $hours * 3600;
$minutes = floor($diffSeconds/60);
$lockUser = new User($articleObj->getLockedByUser());
camp_html_add_msg($translator->trans('Could not save the article. It has been locked by $1 $2 hours and $3 minutes ago.', array('$1' => $lockUser->getRealName(), '$2' => $hours, '$3' => $minutes), 'articles'));
camp_html_goto_page($BackLink);
exit;
}
// Update the article author
if (!empty($f_article_author)) {
ArticleAuthor::OnArticleLanguageDelete($articleObj->getArticleNumber(), $articleObj->getLanguageId());
$i = 0;
foreach ($f_article_author as $author) {
$authorObj = new Author($author);
if (!$authorObj->exists() && strlen(trim($author)) > 0) {
$authorData = Author::ReadName($author);
$authorObj->create($authorData);
}
// Sets the author type selected
$author_type = $f_article_author_type[$i];
$authorObj->setType($author_type);
// Links the author to the article
$articleAuthorObj = new ArticleAuthor($articleObj->getArticleNumber(),
$articleObj->getLanguageId(),
$authorObj->getId(), $author_type);
if (!$articleAuthorObj->exists()) {
$articleAuthorObj->create();
}
$i++;
}
}
// Update the article.
$articleObj->setOnFrontPage(!empty($f_on_front_page));
$articleObj->setOnSectionPage(!empty($f_on_section_page));
$articleObj->setIsPublic(!empty($f_is_public));
$articleObj->setKeywords($f_keywords);
$articleObj->setTitle($f_article_title);
$articleObj->setIsIndexed(false);
if (!empty($f_comment_status)) {
if ($f_comment_status == "enabled" || $f_comment_status == "locked") {
$commentsEnabled = true;
} else {
$commentsEnabled = false;
}
// If status has changed, then you need to show/hide all the comments
// as appropriate.
if ($articleObj->commentsEnabled() != $commentsEnabled) {
$articleObj->setCommentsEnabled($commentsEnabled);
global $controller;
$repository = $controller->getHelper('entity')->getRepository('Newscoop\Entity\Comment');
$repository->setArticleStatus($f_article_number, $f_language_selected, $commentsEnabled?STATUS_APPROVED:STATUS_HIDDEN);
$repository->flush();
}
$articleObj->setCommentsLocked($f_comment_status == "locked");
}
// Make sure that the time stamp is updated.
$articleObj->setProperty('time_updated', 'NOW()', true, true);
// Verify creation date is in the correct format.
// If not, dont change it.
if (preg_match("/\d{4}-\d{2}-\d{2}/", $f_creation_date)) {
$articleObj->setCreationDate($f_creation_date);
}
// Verify publish date is in the correct format.
// If not, dont change it.
if (preg_match("/\d{4}-\d{2}-\d{2}/", $f_publish_date)) {
$articleObj->setPublishDate($f_publish_date);
}
foreach ($articleFields as $dbColumnName => $text) {
$articleTypeObj->setProperty($dbColumnName, $text);
}
$articleObj->setIsLocked(false);
Log::ArticleMessage($articleObj, $translator->trans('Content edited', array(), 'articles'), $g_user->getUserId(), 37);
if ($f_save_button == "save") {
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_id, 'edit.php'), false);
} elseif ($f_save_button == "save_and_close") {
if ($f_publication_id > 0) {
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_id, 'index.php'), false);
} else {
camp_html_goto_page("/$ADMIN/", false);
}
}
$cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
$cacheService->clearNamespace('article');
ArticleIndex::RunIndexer(3, 10, true);
?>
================================================
FILE: newscoop/admin-files/articles/do_position.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
// Check permissions
if (!$g_user->hasPermission('Publish')) {
camp_html_display_error($translator->trans("You do not have the right to change this article. You may only edit your own articles and once submitted an article can only be changed by authorized users." , array(), 'articles'));
exit;
}
// Get input
$f_publication_id = Input::Get('f_publication_id', 'int', 0);
$f_issue_number = Input::Get('f_issue_number', 'int', 0);
$f_section_number = Input::Get('f_section_number', 'int', 0);
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_language = Input::Get('f_article_language', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_move = Input::Get('f_move', 'string', 'up_rel');
$f_position = Input::Get('f_position', 'int', 1, true);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())));
exit;
}
$publicationObj = new Publication($f_publication_id);
if (!$publicationObj->exists()) {
camp_html_display_error($translator->trans('Publication does not exist.'));
exit;
}
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
if (!$issueObj->exists()) {
camp_html_display_error($translator->trans('Issue does not exist.'));
exit;
}
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
if (!$sectionObj->exists()) {
camp_html_display_error($translator->trans('Section does not exist.'));
exit;
}
$articleObj = new Article($f_article_language, $f_article_number);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans('Article does not exist.'));
exit;
}
switch ($f_move) {
case 'up_rel':
$articleObj->positionRelative('up', 1);
break;
case 'down_rel':
$articleObj->positionRelative('down', 1);
break;
case 'abs':
$articleObj->positionAbsolute($f_position);
break;
default: ;
}
$cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
$cacheService->clearNamespace('article');
$url = "/$ADMIN/articles/index.php"
."?f_publication_id=".$articleObj->getPublicationId()
."&f_issue_number=".$articleObj->getIssueNumber()
."&f_section_number=".$articleObj->getSectionNumber()
."&f_article_number=".$articleObj->getArticleNumber()
."&f_language_selected=$f_language_selected"
."&f_language_id=".$f_language_id;
camp_html_add_msg($translator->trans("Article order changed.", array(), 'articles'), "ok");
camp_html_goto_page($url);
?>
================================================
FILE: newscoop/admin-files/articles/do_translate.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
if (!$g_user->hasPermission("AddArticle")) {
$errorStr = $translator->trans('You do not have the right to change this article. You may only edit your own articles and once submitted an article can only be changed by authorized users.', array(), 'articles');
camp_html_display_error($errorStr);
exit;
}
// Optional input.
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
// Required input.
$f_article_code = Input::Get('f_article_code', 'string', 0);
$f_translation_title = trim(Input::Get('f_translation_title'));
$f_translation_language = Input::Get('f_translation_language');
list($articleNumber, $languageId) = explode("_", $f_article_code);
$backLink = "/$ADMIN/articles/translate.php?f_language_id=$f_language_id"
. "&f_publication_id=$f_publication_id&f_issue_number=$f_issue_number"
. "&f_section_number=$f_section_number&f_article_code=$f_article_code"
. "&f_translation_title=$f_translation_title&f_translation_language=$f_translation_language";
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())));
exit;
}
$articleObj = new Article($languageId, $articleNumber);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans('Article does not exist.'));
exit;
}
$translationLanguageObj = new Language($f_translation_language);
if (!$translationLanguageObj->exists()) {
camp_html_display_error($translator->trans('Language does not exist.'));
exit;
}
$translationArticle = new Article($f_translation_language, $articleNumber);
if ($translationArticle->exists()) {
camp_html_add_msg($translator->trans("The article has already been translated into $1.", array('$1' => $translationLanguageObj->getNativeName()), 'articles'));
camp_html_goto_page($backLink);
}
$f_publication_id = $articleObj->getPublicationId();
// Only create the translated issue and section if the article has been categorized.
if ($f_publication_id > 0) {
$publicationObj = new Publication($f_publication_id);
if (!$publicationObj->exists()) {
camp_html_display_error($translator->trans('Publication does not exist.'), $backLink);
exit;
}
$f_issue_number = $articleObj->getIssueNumber();
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
if (!$issueObj->exists()) {
camp_html_display_error($translator->trans('No such issue.'), $backLink);
exit;
}
$translationIssueObj = $issueObj->copy(null, $issueObj->getIssueNumber(), $f_translation_language);
if (!$translationIssueObj) {
$translationIssueObj = new Issue($f_publication_id, $f_translation_language, $f_issue_number);
}
if (!$translationIssueObj->exists()) {
if (!$g_user->hasPermission("ManageIssue")) {
camp_html_add_msg($translator->trans('An issue must be created for the selected language but you do not have the right to create an issue.', array(), 'articles'));
camp_html_goto_page($backLink);
}
foreach ($issueObj->getData() as $field=>$fieldValue) {
if ($field != 'IdLanguage') {
$translationIssueObj->setProperty($field, $fieldValue, false);
}
}
$f_issue_name = Input::Get('f_issue_name', 'string', '');
$f_issue_urlname = Input::Get('f_issue_urlname', 'string', $issueObj->getUrlName());
if ($f_issue_name != '') {
$translationIssueObj->setName($f_issue_name);
}
if ($f_issue_urlname == "") {
camp_html_add_msg($translator->trans('You must fill in the $1 field.', array('$1' => '"'.$translator->trans('New issue URL name', array(), 'articles').'"')));
camp_html_goto_page($backLink);
}
if (!camp_is_valid_url_name($f_issue_urlname)) {
camp_html_add_msg($translator->trans('The $1 field may only contain letters, digits and underscore (_) character.', array('$1' => '"' . $translator->trans('New issue URL name', array(), 'articles') . '"')));
camp_html_goto_page($backLink);
}
$translationIssueObj->create($f_issue_urlname);
if (!$translationIssueObj->exists()) {
camp_html_add_msg($translator->trans('Unable to create the issue for translation $1.', array('$1' => $translationLanguageObj->getName()), 'articles'));
camp_html_goto_page($backLink);
}
} else {
$f_issue_name = Input::Get('f_issue_name', 'string', $translationIssueObj->getName());
$f_issue_urlname = Input::Get('f_issue_urlname', 'string', $translationIssueObj->getUrlName());
$translationIssueObj->update(array('Name' => $f_issue_name, 'ShortName' => $f_issue_urlname));
}
$f_section_number = $articleObj->getSectionNumber();
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
if (!$sectionObj->exists()) {
camp_html_display_error($translator->trans('No such section.', array(), 'articles'), $backLink);
exit;
}
$translationSectionObj = new Section($f_publication_id, $f_issue_number, $f_translation_language, $f_section_number);
if (!$translationSectionObj->exists()) {
if (!$g_user->hasPermission("ManageSection")) {
camp_html_add_msg($translator->trans('A section must be created for the selected language but you do not have the right to create a section.', array(), 'articles'));
camp_html_goto_page($backLink);
}
foreach ($sectionObj->getData() as $field=>$fieldValue) {
if (!in_array($field, array('IdLanguage', 'id'))) {
$translationSectionObj->setProperty($field, $fieldValue, false);
}
}
$f_section_name = Input::Get('f_section_name', 'string', $sectionObj->getName());
$f_section_urlname = Input::Get('f_section_urlname', 'string', $sectionObj->getUrlName());
if ($f_section_urlname == "") {
camp_html_add_msg($translator->trans('You must fill in the $1 field.', array('$1' => '"'.$translator->trans('New section URL name', array(), 'articles').'"')));
camp_html_goto_page($backLink);
}
if (!camp_is_valid_url_name($f_section_urlname)) {
camp_html_add_msg($translator->trans('The $1 field may only contain letters, digits and underscore (_) character.', array('$1' => '"' . $translator->trans('New section URL name', array(), 'articles') . '"')));
camp_html_goto_page($backLink);
}
$translationSectionObj->create($f_section_name, $f_section_urlname);
if (!$translationSectionObj->exists()) {
camp_html_add_msg($translator->trans('Unable to create the section for translation $1.', array('$1' => $translationLanguageObj->getName()), 'articles'));
camp_html_goto_page($backLink);
}
} else {
$f_section_name = Input::Get('f_section_name', 'string', $translationSectionObj->getName());
$f_section_urlname = Input::Get('f_section_urlname', 'string', $translationSectionObj->getUrlName());
$translationSectionObj->update(array('Name' => $f_section_name, 'ShortName' => $f_section_urlname));
}
}
if($articleObj->translationTitleExists($f_translation_title, $f_translation_language)) {
camp_html_add_msg($translator->trans("There already is an article with the same name. Please change the name and try again.", array(), 'articles'), "ok");
camp_html_goto_page($backLink);
exit();
}
$articleCopy = $articleObj->createTranslation($f_translation_language, $g_user->getUserId(), $f_translation_title);
\Zend_Registry::get('container')->getService('dispatcher')
->dispatch('article.translate', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array(
'article' => $articleCopy
)));
camp_html_add_msg($translator->trans("Article translation created.", array(), 'articles'), "ok");
ArticleIndex::RunIndexer(3, 10, true);
camp_html_goto_page(camp_html_article_url($articleCopy, $f_translation_language, 'edit.php'), true);
================================================
FILE: newscoop/admin-files/articles/do_unlock.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
$f_publication_id = Input::Get('f_publication_id', 'int', 0);
$f_issue_number = Input::Get('f_issue_number', 'int', 0);
$f_section_number = Input::Get('f_section_number', 'int', 0);
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())));
exit;
}
$articleObj = new Article($f_language_selected, $f_article_number);
// If the user does not have permission to change the article
// or they didnt create the article, give them the boot.
if (!$articleObj->userCanModify($g_user)) {
camp_html_display_error($translator->trans("You do not have the right to change this article. You may only edit your own articles and once submitted an article can only be changed by authorized users.", array(), 'articles'));
exit;
}
$articleObj->setIsLocked(false);
$cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
$cacheService->clearNamespace('article');
camp_html_add_msg($translator->trans("Article unlocked.", array(), 'articles'), "ok");
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_id, "edit.php", "", "&Unlock=true"));
?>
================================================
FILE: newscoop/admin-files/articles/duplicate.php
================================================
getService('translator');
// Optional input, for articles that are inside of sections.
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_code = Input::Get('f_article_code', 'array', array(), true);
$f_destination_publication_id = Input::Get('f_destination_publication_id', 'int', 0, true);
$f_destination_issue_number_language = explode('_', Input::Get('f_destination_issue_number', 'str', '0_'.$f_language_id, true));
$f_destination_issue_number = $f_destination_issue_number_language[0];
$f_destination_issue_language_id = $f_destination_issue_number_language[1];
$f_destination_section_number = Input::Get('f_destination_section_number', 'int', 0, true);
// $f_mode can be "single" or "multi". This governs
// the behavior of where the user goes after they perform the action.
$f_mode = Input::Get('f_mode', 'string', 'single', true);
// $f_action can be "duplicate", "move", or "publish".
$f_action = Input::Get('f_action');
//
// Check permissions
//
if ($f_action == "duplicate") {
if (!$g_user->hasPermission("AddArticle")) {
camp_html_display_error($translator->trans("You do not have the right to add articles."));
exit;
}
} elseif ($f_action == "move") {
if (!$g_user->hasPermission("MoveArticle")) {
camp_html_display_error($translator->trans("You do not have the right to move articles.", array(), 'articles'));
exit;
}
} elseif ($f_action == "publish") {
if (!$g_user->hasPermission("Publish")) {
camp_html_display_error($translator->trans("You do not have the right to publish articles.", array(), 'articles'));
exit;
}
}
// Article names can change from page request to page request.
// We create $articleNames, a 2-dimensional array of article names indexed by article ID, language ID.
//
// The user can choose whether to perform an action on articles from page request to page request.
// We create $doAction, a 2-dimensional array of boolean values indexed by article ID, language ID.
$articleNames = array();
$doAction = array();
foreach ($_REQUEST as $key => $value) {
if (!strncmp($key, "f_article_name_", strlen("f_article_name_"))) {
$tmpCodeStr = str_replace("f_article_name_", "", $key);
list($articleId, $languageId) = explode("_", $tmpCodeStr);
$articleNames[$articleId][$languageId] = Input::Get($key, 'string', '', true);
}
if (!strncmp($key, "f_do_copy_", strlen("f_do_copy_"))) {
$tmpCodeStr = str_replace("f_do_copy_", "", $key);
list($articleId, $languageId) = explode("_", $tmpCodeStr);
$doAction[$articleId][$languageId] = Input::Get($key, 'string', '', true);
}
}
// $articles array:
// The articles that were initially selected to perform the move or duplicate upon.
$articles = array();
$firstArticle = null;
foreach ($f_article_code as $code) {
list($articleNumber, $languageId) = explode("_", $code);
$tmpArticle = new Article($languageId, $articleNumber);
if (is_null($firstArticle)) {
$firstArticle = $tmpArticle;
}
$articles[$articleNumber][$languageId] = $tmpArticle;
// Initialize the article names on initial page request.
// Initialize the $doAction array on initial page request.
if (!isset($articleNames[$articleNumber][$languageId])) {
$articleNames[$articleNumber][$languageId] = $tmpArticle->getTitle();
$doAction[$articleNumber][$languageId] = $languageId;
}
}
// Fill in article names for translations.
// The user is automatically given the choice to perform actions on translations
// when they get to this screen.
foreach ($articles as $articleNumber => $languageArray) {
$tmpArticle = camp_array_peek($languageArray);
$translations = $tmpArticle->getTranslations();
foreach ($translations as $article) {
$articleNumber = $article->getArticleNumber();
$articleLanguage = $article->getLanguageId();
if (!isset($articleNames[$articleNumber][$articleLanguage])) {
$articleNames[$articleNumber][$articleLanguage] = $article->getTitle();
}
if (!isset($articles[$articleNumber][$articleLanguage])) {
$articles[$articleNumber][$articleLanguage] = $article;
}
}
}
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())));
exit;
}
if ($f_publication_id > 0) {
$publicationObj = new Publication($f_publication_id);
if (!$publicationObj->exists()) {
camp_html_display_error($translator->trans('Publication does not exist.'));
exit;
}
if ($f_issue_number > 0) {
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
if (!$issueObj->exists()) {
camp_html_display_error($translator->trans('Issue does not exist.'));
exit;
}
if ($f_section_number > 0) {
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
if (!$sectionObj->exists()) {
camp_html_display_error($translator->trans('Section does not exist.'));
exit;
}
}
}
}
// Get all the publications
$allPublications = Publication::GetPublications();
// Automatically select the publication if there is only one.
if (count($allPublications) == 1) {
$tmpPublication = camp_array_peek($allPublications);
$f_destination_publication_id = $tmpPublication->getPublicationId();
}
// Get the most recent issues.
$allIssues = array();
if ($f_destination_publication_id > 0) {
$allIssues = Issue::GetIssues($f_destination_publication_id, null, null, null, null, false, array("LIMIT" => 300, "ORDER BY" => array("Number" => "DESC")/*, 'GROUP BY' => 'Number'*/), true);
// Automatically select the issue if there is only one.
if (count($allIssues) == 1) {
$tmpIssue = camp_array_peek($allIssues);
$f_destination_issue_number = $tmpIssue->getIssueNumber();
}
}
// Get all the sections.
$allSections = array();
if ($f_destination_issue_number > 0) {
$destIssue = new Issue($f_destination_publication_id, $f_destination_issue_language_id);
$allSections = Section::GetSections($f_destination_publication_id, $f_destination_issue_number, $f_destination_issue_language_id, null, null, array("ORDER BY" => array("Number" => "DESC"), 'GROUP BY' => 'Number'), true);
// Automatically select the section if there is only one.
if (count($allSections) == 1) {
$tmpSection = camp_array_peek($allSections);
$f_destination_section_number = $tmpSection->getSectionNumber();
} else {
$tmpSection = new Section($f_destination_publication_id, $f_destination_issue_number,
$firstArticle->getLanguageId(), $f_destination_section_number);
if (!$tmpSection->exists()) {
$f_destination_section_number = 0;
}
}
}
// Special case:
// You cannot copy the articles if there is no cooresponding translated issue/section
// in the destination issue. For example, you cannot copy a french article to an
// issue that has ONLY an english translation.
$issueLanguages = array();
if ($f_destination_issue_number > 0) {
$issueTranslations = Issue::GetIssues($f_destination_publication_id, null, $f_destination_issue_number, null, null, false, null, true);
$issueLanguages = DbObjectArray::GetColumn($issueTranslations, "IdLanguage");
}
// $actionDenied is TRUE if any articles cannot be moved/duped.
$actionDenied = false;
foreach ($articles as $articleNumber => $languageArray) {
foreach ($languageArray as $languageId => $article) {
$tmpActionDenied = (count($issueLanguages) > 0) && !in_array($languageId, $issueLanguages);
$actionDenied |= $tmpActionDenied;
// Uncheck any articles that cannot be moved/duped.
if ($tmpActionDenied) {
unset($doAction[$articleNumber][$languageId]);
if (isset($doAction[$articleNumber])
&& count($doAction[$articleNumber]) == 0) {
unset($doAction[$articleNumber]);
}
}
}
}
//
// This section is executed when the user finally hits the action button.
//
if (isset($_REQUEST["action_button"])) {
$srcArticleIndexUrl = "/$ADMIN/articles/"
."?f_publication_id=$f_publication_id"
."&f_issue_number=$f_issue_number"
."&f_section_number=$f_section_number"
."&f_language_id=$f_language_id";
$destArticleIndexUrl = "/$ADMIN/articles/"
."?f_publication_id=$f_destination_publication_id"
."&f_issue_number=$f_destination_issue_number"
."&f_section_number=$f_destination_section_number"
."&f_language_id=$f_language_id";
// If no actions were selected, dont do anything.
if (($f_action != "move") && (count($doAction) == 0) ) {
camp_html_goto_page($srcArticleIndexUrl);
}
if (!empty($f_action) && !SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
if ($f_action == "duplicate") {
global $controller;
$em = Zend_Registry::get('container')->getService('em');
$ArticleDatetimeRepository = $controller->getHelper('entity')->getRepository('Newscoop\Entity\ArticleDatetime');
foreach ($doAction as $articleNumber => $languageArray) {
$events = $ArticleDatetimeRepository->findBy(array('articleId' => $articleNumber));
$languageArray = array_keys($languageArray);
$tmpLanguageId = camp_array_peek($languageArray);
// Error checking
if (!isset($articles[$articleNumber][$tmpLanguageId])) {
continue;
}
// Grab the first article - it doesnt matter which one.
$tmpArticle = $articles[$articleNumber][$tmpLanguageId];
// Copy all the translations requested.
$newArticles = $tmpArticle->copy($f_destination_publication_id,
$f_destination_issue_number,
$f_destination_section_number,
$g_user->getUserId(),
$languageArray);
// Set properties for each new copy.
foreach ($newArticles as $newArticle) {
// Set the name of the new copy
$newArticle->setTitle($articleNames[$articleNumber][$newArticle->getLanguageId()]);
// Set the default "comment enabled" status based
// on the publication config settings.
if ($f_destination_publication_id > 0) {
$tmpPub = new Publication($f_destination_publication_id);
$commentDefault = $tmpPub->commentsArticleDefaultEnabled();
$newArticle->setCommentsEnabled($commentDefault);
}
foreach ($events as $event) {
//$repo->add($timeSet, $articleId, 'schedule');
$newEvent = $ArticleDatetimeRepository->getEmpty();
$newEvent->setArticleId($newArticle->getArticleNumber());
$newEvent->setArticleType($event->getArticleType());
$newEvent->setStartDate($event->getStartDate());
$newEvent->setStartTime($event->getStartTime());
$newEvent->setEndDate($event->getEndDate());
$newEvent->setEndTime($event->getEndTime());
$newEvent->setRecurring($event->getRecurring());
$newEvent->setFieldName($event->getFieldName());
$em->persist($newEvent);
}
$em->flush();
\Zend_Registry::get('container')->getService('dispatcher')
->dispatch('article.duplicate', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array(
'article' => $newArticle,
'orginal_article_number' => $articleNumber
)));
}
}
if ($f_mode == "single") {
$tmpArticle = camp_array_peek($newArticles);
$url = camp_html_article_url($tmpArticle, $tmpArticle->getLanguageId(), "edit.php");
} else {
$url = $destArticleIndexUrl;
}
ArticleIndex::RunIndexer(3, 10, true);
camp_html_add_msg($translator->trans("Article(s) duplicated.", array(), 'articles'), "ok");
camp_html_goto_page($url);
} elseif ($f_action == "move") {
// Move all the translations requested.
$tmpArticles = array();
foreach ($articles as $articleNumber => $languageArray) {
$tmpArticle = camp_array_peek($languageArray);
$translations = $tmpArticle->getTranslations();
foreach ($translations as $tmpArticle2) {
$articleNumber = $tmpArticle2->getArticleNumber();
$articleLanguage = $tmpArticle2->getLanguageId();
$tmpArticle2->move($f_destination_publication_id,
$f_destination_issue_number,
$f_destination_section_number);
$tmpArticle2->setTitle($articleNames[$articleNumber][$articleLanguage]);
$tmpArticles[] = $tmpArticle2;
\Zend_Registry::get('container')->getService('dispatcher')
->dispatch('article.move', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array(
'article' => $tmpArticle,
)));
}
}
$tmpArticle = camp_array_peek($tmpArticles);
if ($f_mode == "single") {
$url = camp_html_article_url($tmpArticle, $tmpArticle->getLanguageId(), "edit.php");
} else {
$url = $destArticleIndexUrl;
}
ArticleIndex::RunIndexer(3, 10, true);
camp_html_add_msg($translator->trans("Article moved.", array(), 'articles'), "ok");
camp_html_goto_page($url);
} elseif ($f_action == "publish") {
// Publish all the articles requested.
$tmpArticles = array();
foreach ($doAction as $articleNumber => $languageArray) {
foreach ($languageArray as $languageId => $action) {
$tmpArticle = new Article($languageId, $articleNumber);
$tmpArticle->setTitle($articleNames[$articleNumber][$languageId]);
// Check if the name already exists in the destination section.
$conflictingArticles = Article::GetByName($tmpArticle->getTitle(),
$f_destination_publication_id,
$f_destination_issue_number,
$f_destination_section_number, null, true);
if (count($conflictingArticles) > 0) {
$conflictingArticle = array_pop($conflictingArticles);
$conflictingArticleLink = camp_html_article_url($conflictingArticle,
$conflictingArticle->getLanguageId(),
"edit.php");
camp_html_add_msg($translator->trans("The article could not be published.", array(), 'articles')." ".$translator->trans("You cannot have two articles in the same section with the same name. The article name you specified is already in use by the article $1.", array(
'$1' => "".$conflictingArticle->getName().""), 'articles'));
$args = $_REQUEST;
unset($args["action_button"]);
unset($args["f_article_code"]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
foreach ($_REQUEST["f_article_code"] as $code) {
$argsStr .= "&f_article_code[]=$code";
}
$backLink = "/$ADMIN/articles/duplicate.php?$argsStr";
camp_html_goto_page($backLink);
} else {
$tmpArticle->move($f_destination_publication_id,
$f_destination_issue_number,
$f_destination_section_number);
$tmpArticle->setWorkflowStatus('Y');
\Zend_Registry::get('container')->getService('dispatcher')
->dispatch('article.publish', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array(
'article' => $tmpArticle,
)));
$tmpArticles[] = $tmpArticle;
}
}
}
$tmpArticle = camp_array_peek($tmpArticles);
if ($f_mode == "single") {
$url = camp_html_article_url($tmpArticle, $tmpArticle->getLanguageId(), "edit.php");
} else {
$url = $destArticleIndexUrl;
}
ArticleIndex::RunIndexer(3, 10, true);
camp_html_goto_page($url);
} elseif ($f_action == "submit") {
// Submit all the articles requested.
$tmpArticles = array();
foreach ($doAction as $articleNumber => $languageArray) {
foreach ($languageArray as $languageId => $action) {
$tmpArticle = new Article($languageId, $articleNumber);
$tmpArticle->setTitle($articleNames[$articleNumber][$languageId]);
// Check if the name already exists in the destination section.
$conflictingArticles = Article::GetByName($tmpArticle->getTitle(),
$f_destination_publication_id,
$f_destination_issue_number,
$f_destination_section_number, null, true);
if (count($conflictingArticles) > 0) {
$conflictingArticle = array_pop($conflictingArticles);
$conflictingArticleLink = camp_html_article_url($conflictingArticle,
$conflictingArticle->getLanguageId(),
"edit.php");
camp_html_add_msg($translator->trans("The article could not be submitted.", array(), 'articles')." ".$translator->trans("You cannot have two articles in the same section with the same name. The article name you specified is already in use by the article '$1'.", array(
'$1' => "".$conflictingArticle->getName().""), 'articles'));
$args = $_REQUEST;
unset($args["action_button"]);
unset($args["f_article_code"]);
$argsStr = camp_implode_keys_and_values($args, "=", "&");
foreach ($_REQUEST["f_article_code"] as $code) {
$argsStr .= "&f_article_code[]=$code";
}
$backLink = "/$ADMIN/articles/duplicate.php?$argsStr";
camp_html_goto_page($backLink);
} else {
$tmpArticle->move($f_destination_publication_id,
$f_destination_issue_number,
$f_destination_section_number);
$tmpArticle->setWorkflowStatus('S');
\Zend_Registry::get('container')->getService('dispatcher')
->dispatch('article.submit', new \Newscoop\EventDispatcher\Events\GenericEvent($this, array(
'article' => $tmpArticle,
)));
$tmpArticles[] = $tmpArticle;
}
}
}
$tmpArticle = camp_array_peek($tmpArticles);
if ($f_mode == "single") {
$url = camp_html_article_url($tmpArticle, $tmpArticle->getLanguageId(), "edit.php");
} else {
$url = $destArticleIndexUrl;
}
ArticleIndex::RunIndexer(3, 10, true);
camp_html_goto_page($url);
}
} // END perform the action
$title = "";
if (count($doAction) > 1) {
if ($f_action == "duplicate") {
$title = $translator->trans("Duplicate articles", array(), 'articles');
} elseif ($f_action == "move") {
$title = $translator->trans("Move articles", array(), 'articles');
} elseif ($f_action == "publish") {
$title = $translator->trans("Publish articles", array(), 'articles');
} elseif ($f_action == "submit") {
$title = $translator->trans("Submit articles", array(), 'articles');
}
} else {
if ($f_action == "duplicate") {
$title = $translator->trans("Duplicate article", array(), 'articles');
} elseif ($f_action == "move") {
$title = $translator->trans("Move article", array(), 'articles');
} elseif ($f_action == "publish") {
$title = $translator->trans("Publish article", array(), 'articles');
} elseif ($f_action == "submit") {
$title = $translator->trans("Submit article", array(), 'articles');
}
}
if ($f_publication_id > 0) {
$topArray = array('Pub' => $publicationObj, 'Issue' => $issueObj,
'Section' => $sectionObj);
if (count($articles) > 1) {
$crumbs = array($translator->trans("Articles") => "/$ADMIN/articles/index.php?f_publication_id=$f_publication_id&f_issue_number=$f_issue_number&f_section_number=$f_section_number&f_language_id=$f_language_id&f_language_selected=$f_language_selected");
camp_html_content_top($title, $topArray, true, false, $crumbs);
} elseif ($f_issue_number > 0 && $f_section_number > 0) {
$topArray['Article'] = camp_array_peek(camp_array_peek($articles));
camp_html_content_top($title, $topArray);
} else {
$crumbs = array();
$crumbs[] = array($translator->trans("Pending articles", array(), 'articles'), "/$ADMIN/pending_articles");
$crumbs[] = array($title, "");
echo camp_html_breadcrumbs($crumbs);
}
} else {
$crumbs = array();
$crumbs[] = array($translator->trans("Actions"), "");
$crumbs[] = array($title, "");
echo camp_html_breadcrumbs($crumbs);
}
?>
trans('Available Articles', array(), 'articles'); ?>
setSearch(TRUE);
$contextlist->setOrder(TRUE);
$contextlist->setLanguage($f_language_id);
$contextlist->renderFilters();
$contextlist->render();
?>
trans('Related Articles', array(), 'articles'); ?>
/left_arrow.png" BORDER="0">
">trans("Back to Edit Article"); ?>
:
'.$translator->trans('Snippet', array(), 'articles').' $1', $text);
if (isset($imageMatches[1][0])) {
if (isset($titles) && sizeof($titles) > 0) {
for ($x = 0; $x < sizeof($titles[0]); $x++) {
$text = preg_replace("/\s*".preg_replace('~\/~', '\/',
preg_quote($titles[0][$x]))."/", ' title="'.htmlspecialchars($titles[1][$x], ENT_QUOTES, 'UTF-8').'"', $text);
}
}
$formattingErrors = FALSE;
foreach ($imageMatches[1] as $templateId) {
// Get the image URL
$articleImage = new ArticleImage($articleNumber, NULL, $templateId);
if (!$articleImage->exists()) {
ArticleImage::RemoveImageTagsFromArticleText($articleNumber, $templateId);
$formattingErrors = TRUE;
continue;
}
$image = new Image($articleImage->getImageId());
$imageUrl = $image->getImageUrl();
unset($fakeTemplateId);
if (isset($ratios) && sizeof($ratios) > 0) {
$n = 0;
foreach ($ratios[3] as $ratio) {
if ($ratios[1][$n++] == $templateId) {
$fakeTemplateId = $templateId.'_'.$ratio;
}
}
}
if (!isset($fakeTemplateId)) {
$fakeTemplateId = $templateId;
}
$text = preg_replace("/window.location.reload();');
}
}
return $text;
}
$hasMultiDates = false;
$multiDatesFields = array();
include_once 'edit_html.php';
// Display tinymce loading code if required
$hasArticleBodyField = FALSE;
foreach ($dbColumns as $dbColumn) {
if ($dbColumn->getType() == ArticleTypeField::TYPE_BODY) {
$hasArticleBodyField = TRUE;
}
}
if ($inEditMode && $hasArticleBodyField) {
$languageSelectedObj = new Language($f_language_selected);
$editorLanguage = !empty($_COOKIE['TOL_Language']) ? $_COOKIE['TOL_Language'] : $languageSelectedObj->getCode();
editor_load_tinymce($dbColumns, $g_user, $f_article_number, $editorLanguage);
}
foreach (array('fCustomFields', 'fCustomSwitches', 'fCustomTextares') as $var) {
if (!isset($$var)) {
$$var = array();
}
}
$jsArrayFieldsStr = '';
for ($i = 0; $i < sizeof($fCustomFields); $i++) {
$jsArrayFieldsStr .= "'" . addslashes($fCustomFields[$i]) . "'";
if ($i + 1 < sizeof($fCustomFields)) {
$jsArrayFieldsStr .= ',';
}
}
$jsArraySwitchesStr = '';
for ($i = 0; $i < sizeof($fCustomSwitches); $i++) {
$jsArraySwitchesStr .= "'" . addslashes($fCustomSwitches[$i]) . "'";
if ($i + 1 < sizeof($fCustomSwitches)) {
$jsArraySwitchesStr .= ',';
}
}
$jsArrayTextareasStr = '';
if( isset($fCustomTextareas) )
for ($i = 0; $i < sizeof($fCustomTextareas); $i++) {
$jsArrayTextareasStr .= "'" . addslashes($fCustomTextareas[$i]) . "'";
if ($i + 1 < sizeof($fCustomTextareas)) {
$jsArrayTextareasStr .= ',';
}
}
include 'edit_javascript.php';
================================================
FILE: newscoop/admin-files/articles/edit_comments_box.php
================================================
getService('translator');
$preferencesService = \Zend_Registry::get('container')->getService('system_preferences_service');
?>
================================================
FILE: newscoop/admin-files/articles/edit_context_box.php
================================================
getService('translator');
?>
trans("Comments", array(), 'articles'); ?>
UseDBReplication == 'Y') {
if ($connectedToOnlineServer) {
?>
================================================
FILE: newscoop/admin-files/articles/edit_html.php
================================================
getService('translator');
// If the article is locked say so to the user
if ($articleObj->userCanModify($g_user) && $locked && !$inViewMode) {
?>
hasPermission('ChangeArticle')) : ?>
">
trans('Edit'); ?>
userCanModify($g_user)) {
$switchModeUrl = camp_html_article_url($articleObj, $f_language_id, 'edit.php')
. '&f_edit_mode=' . ( ($inEditMode) ? 'view' : 'edit');
}
// Display either the "Go to live article" or "Preview" button
// depending on article status
$doPreviewLink = '';
if (isset($publicationObj) && $articleObj->isPublished()) {
if ($publicationObj->getUrlTypeId() == 2) {
$previewLinkURL = ShortURL::GetURL($publicationObj->getPublicationId(),
$articleObj->getLanguageId(), null, null, $articleObj->getArticleNumber());
$doPreviewLink = 'live';
$seoFields = $publicationObj->getSeo();
$articleEndLink = $articleObj->getSEOURLEnd($seoFields, $articleObj->getLanguageId());
if (strlen($articleEndLink) > 0) {
$previewLinkURL .= $articleEndLink;
}
if (!is_string($previewLinkURL) && PEAR::isError($previewLinkURL)) {
$doLiveLink = '';
}
}
} else {
if (isset($publicationObj) && (0 < $f_publication_id) && (0 < $f_issue_number) && (0 < $f_section_number)) {
$doPreviewLink = 'preview';
$previewLinkURL = "/$ADMIN/articles/preview.php?f_publication_id=$f_publication_id"
. "&f_issue_number=$f_issue_number&f_section_number=$f_section_number"
. "&f_article_number=$f_article_number&f_language_id=$f_language_id&f_language_selected=$f_language_selected";
}
}
?>
================================================
FILE: newscoop/admin-files/articles/edit_html_authors.php
================================================
getService('translator');
function drawCombo($id, $pos) {
$combo = ' ';
return $combo;
}
function drawComboContent($id = 0) {
$combo = '';
$types = AuthorType::GetAuthorTypes();
foreach ($types as $xtype) {
$combo .= '';
}
return $combo;
}
?>
getArticleNumber(), $articleObj->getLanguageId());
if ($inEditMode) {
?>
================================================
FILE: newscoop/admin-files/articles/edit_info_box.php
================================================
getService('translator');
?>
================================================
FILE: newscoop/admin-files/articles/edit_javascript.php
================================================
getService('translator');
?>
================================================
FILE: newscoop/admin-files/articles/edit_locations_box.php
================================================
getService('translator');
$locations = array();
$map_name = '';
$map_name_title = '';
$map = $articleObj->getMap();
if (is_object($map) && $map->exists()) {
$locations = $map->getLocations();
$map_name = $map->getName();
if (0 < strlen($map_name)) {
$map_name_title = $map_name;
$map_name_title = str_replace("&", '&', $map_name_title);
$map_name_title = str_replace("<", '<', $map_name_title);
$map_name_title = str_replace(">", '>', $map_name_title);
$map_name_title = str_replace("\\", '\', $map_name_title);
$map_name_title = str_replace("'", ''', $map_name_title);
$map_name_title = " title='$map_name_title'";
}
$map_name_max_len = 20;
if ($map_name_max_len < strlen($map_name)) {
$map_name = mb_substr($map_name, 0, $map_name_max_len, 'UTF-8') . "...";
}
$map_name = str_replace("&", '&', $map_name);
$map_name = str_replace("<", '<', $map_name);
$map_name = str_replace(">", '>', $map_name);
}
$detachMapUrl = "/$ADMIN/articles/locations/do_unlink.php?f_publication_id=$f_publication_id&f_issue_number=$f_issue_number&f_section_number=$f_section_number&f_article_number=$f_article_number&f_language_selected=$f_language_selected&f_language_id=$f_language_id&".SecurityToken::URLParameter();
$map_language_used = $f_language_selected;
if (0 == $map_language_used) {
$map_language_used = $f_language_id;
}
$map_article_spec = '' . $f_article_number . '_' . $map_language_used;
?>
================================================
FILE: newscoop/admin-files/articles/edit_main_box.php
================================================
getService('translator');
// set language url
$languageUrl = implode('&', array(
"edit.php?f_publication_id=$f_publication_id",
"f_issue_number=$f_issue_number",
"f_section_number=$f_section_number",
"f_article_number=$f_article_number",
"f_language_id={{language}}",
"f_language_selected={{language}}",
));
?>
================================================
FILE: newscoop/admin-files/articles/edit_media_box.php
================================================
getService('translator'); ?>
================================================
FILE: newscoop/admin-files/articles/edit_multidate_box.php
================================================
getService('translator');
if (empty($userIsBlogger)) { ?>
hasPermission('AttachImageToArticle')) { ?>
trans('Attach'); ?>
_helper->service('image.rendition')->hasRenditions()) { ?>
trans('Place images', array(), 'articles'); ?>
0) { ?>
trans('Edit metadata', array(), 'articles'); ?>
getImage();
$imageEditUrl = \Zend_Registry::get('container')->get('router')->generate('newscoop_newscoop_article_images_edit', array(
'language' => $f_language_id,
'articleNumber' => $f_article_number,
'imageId' => $image->getImageId()
));
$detachUrl = "/$ADMIN/articles/images/do_unlink.php?f_publication_id=$f_publication_id&f_issue_number=$f_issue_number&f_section_number=$f_section_number&f_article_number=$f_article_number&f_image_id=".$image->getImageId()."&f_language_selected=$f_language_selected&f_language_id=$f_language_id&f_image_template_id=".$articleImage->getTemplateId().'&'.SecurityToken::URLParameter();
$imageSize = @getimagesize($image->getImageStorageLocation()) ? : array(0, 0);
?>
MediaRichTextCaptions == 'Y') {
echo $imageService->getCaption($localImage, $f_article_number, $f_language_selected);
} else {
echo $this->view->escape($imageService->getCaption($localImage, $f_article_number, $f_language_selected));
}
?>MediaRichTextCaptions == 'N') {
echo '
';
}
?>
hasPermission('AttachImageToArticle')) { ?>
'image_caption'), 'articles');
?>'.replace('image_caption', $('#image-getImageId(); ?>-caption').text()));">
view->partial('slideshow-box.phtml', array(
'articleNumber' => $articleObj->getArticleNumber(),
'slideshows' => $this->_helper->service('package')->findByArticle($articleObj->getArticleNumber()),
)); ?>
hasPermission('AddFile')) { ?>
">trans('Attach'); ?>
getAttachmentId()."&f_language_id=$f_language_id&f_language_selected=$f_language_selected";
$deleteUrl = "/$ADMIN/articles/files/do_del.php?f_publication_id=$f_publication_id&f_issue_number=$f_issue_number&f_section_number=$f_section_number&f_article_number=$f_article_number&f_attachment_id=".$file->getAttachmentId()."&f_language_selected=$f_language_selected&f_language_id=$f_language_id&".SecurityToken::URLParameter();
$downloadUrl = $file->getAttachmentUrl()."?g_download=1";
$previewUrl = null;
if (strstr($file->getMimeType(), "image/") && (strstr($_SERVER['HTTP_ACCEPT'], $file->getMimeType()) ||
(strstr($_SERVER['HTTP_ACCEPT'], "*/*")))) {
$previewUrl = $Campsite['SUBDIR']."/attachment/".basename($file->getStorageLocation())."?g_show_in_browser=1";
}
?>
", true); ?>
getFileName(), "25", "
", true); ?>
getLanguageId() ? htmlspecialchars($file->getDescription($f_language_selected)) : htmlspecialchars($file->getDescription($f_language_selected)) , ', ', camp_format_bytes($file->getSizeInBytes()); ?>
trans('Download', array(), 'articles'); ?>
hasPermission('DeleteFile')) { ?>
camp_javascriptspecialchars($file->getFileName())), 'articles'); ?>');">
================================================
FILE: newscoop/admin-files/articles/edit_playlist.php
================================================
getService('translator');
$router = \Zend_Registry::get('container')->getService('router');
if (empty($userIsBlogger)) : ?>
hasPermission('ChangeArticle')) : ?>
">
trans('Edit'); ?>
================================================
FILE: newscoop/admin-files/articles/edit_schedule_box.php
================================================
getService('translator'); ?>
================================================
FILE: newscoop/admin-files/articles/edit_switches_box.php
================================================
getService('translator');
if (empty($userIsBlogger)) { ?>
getService('em')
->getRepository('Newscoop\Entity\Playlist')
->getArticlePlaylists(Input::Get('f_article_number', 'int', 1), Input::Get('f_language_id', 'int', 1));
$playlistsData = array();
foreach ($playlists as $playlist) {
$playlistsData[] = (object) array(
'name' => $playlist->getName(),
'id' => $playlist->getId(),
);
}
} catch (\Exception $e) {
$playlistsData = array();
}
?>
getHelper('acl')->isAllowed('playlist', 'manage')) : ?>
trans('Edit'); ?>
================================================
FILE: newscoop/admin-files/articles/edit_topics_box.php
================================================
getService('translator'); ?>
================================================
FILE: newscoop/admin-files/articles/editor_load_countable.php
================================================
================================================
FILE: newscoop/admin-files/articles/editor_load_tinymce.php
================================================
getType() == ArticleTypeField::TYPE_BODY) {
if ($p_articleNumber > 0) {
$editors[] = $dbColumn->getName().'_'.$p_articleNumber;
} else {
$editors[] = $dbColumn->getName();
}
}
}
} else {
if ($p_articleNumber > 0) {
$editors[] = $p_dbColumns.'_'.$p_articleNumber;
} else {
$editors[] = $p_dbColumns;
}
}
$textareas = implode(",", $editors);
/** STEP 2 ********************************************************
* Now, what are the plugins you will be using in the editors
* on this page. List all the plugins you will need, even if not
* all the editors will use all the plugins.
******************************************************************/
$plugins = array();
if ($p_user->hasPermission('EditorCopyCutPaste')) {
$plugins[] = 'paste';
}
if ($p_user->hasPermission('EditorFindReplace')) {
$plugins[] = 'searchreplace';
}
if ($p_user->hasPermission('EditorEnlarge')) {
$plugins[] = 'fullscreen';
}
if ($p_user->hasPermission('EditorTable')) {
$plugins[] = 'table';
}
if ($p_user->hasPermission('EditorTable')) {
$plugins[] = 'table';
$plugins[] = 'textbox';
}
if ($p_user->hasPermission('EditorLink')) {
$plugins[] = 'campsiteinternallink';
if ($p_objectType == 'article') {
$plugins[] = 'campsiteattachment';
}
}
if ($p_user->hasPermission('EditorImage') && $p_objectType == 'article') {
$plugins[] = 'campsiteimage';
$plugins[] = 'media';
}
if ($p_user->hasPermission('EditorFontColor')) {
$plugins[] = 'codehighlighting';
}
if ($p_user->hasPermission('EditorTextDirection')) {
$plugins[] = 'directionality';
}
$plugins[] = 'iframe';
$plugins_list = implode(",", $plugins);
$statusbar_location = "none";
if ($p_user->hasPermission('EditorStatusBar')) {
$statusbar_location = "bottom";
}
/** STEP 3 ********************************************************
* We create a default configuration to be used by all the editors.
* If you wish to configure some of the editors differently this
* will be done in step 4.
******************************************************************/
$toolbar1 = array();
if ($p_user->hasPermission('EditorBold')) {
$toolbar1[] = "bold";
}
if ($p_user->hasPermission('EditorItalic')) {
$toolbar1[] = "italic";
}
if ($p_user->hasPermission('EditorUnderline')) {
$toolbar1[] = "underline";
}
if ($p_user->hasPermission('EditorStrikethrough')) {
$toolbar1[] = "strikethrough";
$toolbar1[] = "blockquote";
}
if ($p_user->hasPermission('EditorTextAlignment')) {
$toolbar1[] = "|";
$toolbar1[] = "justifyleft";
$toolbar1[] = "justifycenter";
$toolbar1[] = "justifyright";
$toolbar1[] = "justifyfull";
}
if ($p_user->hasPermission('EditorIndent')) {
$toolbar1[] = "|";
$toolbar1[] = "outdent";
$toolbar1[] = "indent";
}
if ($p_user->hasPermission('EditorCopyCutPaste')) {
$toolbar1[] = "|";
$toolbar1[] = "copy";
$toolbar1[] = "cut";
$toolbar1[] = "paste";
$toolbar1[] = "pastetext";
$toolbar1[] = "pasteword";
}
if ($p_user->hasPermission('EditorUndoRedo')) {
$toolbar1[] = "|";
$toolbar1[] = "undo";
$toolbar1[] = "redo";
}
if ($p_user->hasPermission('EditorTextDirection')) {
$toolbar1[] = "|";
$toolbar1[] = "ltr";
$toolbar1[] = "rtl";
}
if ($p_user->hasPermission('EditorLink')) {
$toolbar1[] = "|";
$toolbar1[] = "campsiteinternallink";
$toolbar1[] = "link";
$toolbar1[] = "anchor";
if ($p_objectType == 'article') {
$toolbar1[] = "campsiteattachment";
}
}
if ($p_user->hasPermission('EditorSubhead')) {
$toolbar1[] = "campsite-subhead";
}
if ($p_user->hasPermission('EditorImage') && $p_objectType == 'article') {
$toolbar1[] = "campsiteimage";
$toolbar1[] = "media";
}
if ($p_user->hasPermission('EditorSourceView')) {
$toolbar1[] = "code";
}
if ($p_user->hasPermission('EditorEnlarge')) {
$toolbar1[] = "fullscreen";
}
if ($p_user->hasPermission('EditorHorizontalRule')) {
$toolbar1[] = "hr";
}
if ($p_user->hasPermission('EditorFontColor')) {
$toolbar1[] = "forecolor";
$toolbar1[] = "backcolor";
$toolbar1[] = 'codehighlighting';
}
if ($p_user->hasPermission('EditorSubscript')) {
$toolbar1[] = "sub";
}
if ($p_user->hasPermission('EditorSuperscript')) {
$toolbar1[] = "sup";
}
if ($p_user->hasPermission('EditorFindReplace')) {
$toolbar1[] = "|";
$toolbar1[] = "search";
$toolbar1[] = "replace";
}
$toolbar2 = array();
// Slice up the first toolbar if it is too long.
if (count($toolbar1) > 34) {
$toolbar2 = array_splice($toolbar1, 34);
}
if ($p_user->hasPermission('EditorCharacterMap')) {
$toolbar2[] = "charmap";
}
// This is to put the bulleted and numbered list controls
// on the most appropriate line of the toolbar.
if ($p_user->hasPermission('EditorListBullet') && $p_user->hasPermission('EditorListNumber') && count($toolbar1) < 19) {
$toolbar1[] = "|";
$toolbar1[] = "bullist";
$toolbar1[] = "numlist";
} elseif ($p_user->hasPermission('EditorListBullet') && !$p_user->hasPermission('EditorListNumber') && count($toolbar1) < 34) {
$toolbar1[] = "|";
$toolbar1[] = "bullist";
} elseif (!$p_user->hasPermission('EditorListBullet') && $p_user->hasPermission('EditorListNumber') && count($toolbar1) < 20) {
$toolbar1[] = "|";
$toolbar1[] = "numlist";
} else {
$hasSeparator = false;
if ($p_user->hasPermission('EditorListBullet')) {
$toolbar2[] = "|";
$toolbar2[] = "bullist";
$hasSeparator = true;
}
if ($p_user->hasPermission('EditorListNumber')) {
if (!$hasSeparator) {
$toolbar2[] = "|";
}
$toolbar2[] = "numlist";
}
}
if ($p_user->hasPermission('EditorFontFace')) {
$toolbar2[] = "|";
//$toolbar2[] = "styleselect";
$toolbar2[] = "formatselect";
//$toolbar2[] = "fontselect";
}
if ($p_user->hasPermission('EditorFontSize')) {
$toolbar2[] = "fontsizeselect";
}
$toolbar3 = array();
if ($p_user->hasPermission('EditorTable')) {
$toolbar3[] = "tablecontrols";
$toolbar3[] = 'textbox';
}
$toolbar2[] = 'iframe';
$theme_buttons1 = (count($toolbar1) > 0) ? implode(',', $toolbar1) : '';
$theme_buttons2 = (count($toolbar2) > 0) ? implode(',', $toolbar2) : '';
$theme_buttons3 = (count($toolbar3) > 0) ? implode(',', $toolbar3) : '';
$localeFile = $Campsite['CAMPSITE_DIR'] . '/js/tinymce/langs/' . $p_editorLanguage . '.js';
if (!file_exists($localeFile)) {
$p_editorLanguage = 'en';
}
?>
================================================
FILE: newscoop/admin-files/articles/empty.php
================================================
Parse errors:
================================================
FILE: newscoop/admin-files/articles/files/do_add.php
================================================
getService('translator');
$request = \Zend_Registry::get('container')->getService('request');
$params = $request->request->all();
$queryParams = $request->query->all();
/**
* Set message
* @param string $message
* @return void
*/
function setMessage($message, $isError = FALSE)
{
if (empty($queryParams['archive'])) { // fancybox
echo '';
exit;
}
if ($isError) {
camp_html_display_error($message, null, true);
exit;
}
camp_html_add_msg($message);
}
if (empty($params)) {
setMessage($translator->trans('The file exceeds the allowed max file size.', array(), 'article_files'), TRUE);
}
if (!SecurityToken::isValid()) {
setMessage(SecurityToken::GetToken(), TRUE);
setMessage($translator->trans('Invalid security token!'), TRUE);
}
if (!$g_user->hasPermission('AddFile')) {
setMessage($translator->trans('You do not have the right to add files.', array(), 'article_files'), TRUE);
}
// We set to unlimit the maximum time to execution whether
// safe_mode is disabled. Upload is still under control of
// max upload size.
if (!ini_get('safe_mode')) {
set_time_limit(0);
}
$inArchive = !empty($queryParams['archive']);
if (!$inArchive) {
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$articleObj = new Article($f_language_selected, $f_article_number);
if (!$articleObj->exists()) {
setMessage($translator->trans("Article does not exist."), TRUE);
}
}
$f_description = Input::Get('f_description');
$f_language_specific = Input::Get('f_language_specific');
$f_content_disposition = Input::Get('f_content_disposition');
$BackLink = Input::Get('BackLink', 'string', null, true);
if (isset($_FILES["f_file"])) {
switch($_FILES["f_file"]['error']) {
case 0: // UPLOAD_ERR_OK
break;
case 1: // UPLOAD_ERR_INI_SIZE
case 2: // UPLOAD_ERR_FORM_SIZE
setMessage($translator->trans("The file exceeds the allowed max file size.", array(), 'article_files'), TRUE);
break;
case 3: // UPLOAD_ERR_PARTIAL
setMessage($translator->trans("The uploaded file was only partially uploaded. This is common when the maximum time to upload a file is low in contrast with the file size you are trying to input. The maximum input time is specified in 'php.ini'", array(), 'article_files'), TRUE);
break;
case 4: // UPLOAD_ERR_NO_FILE
setMessage($translator->trans("You must select a file to upload.", array(), 'article_files'), TRUE);
break;
case 6: // UPLOAD_ERR_NO_TMP_DIR
case 7: // UPLOAD_ERR_CANT_WRITE
setMessage($translator->trans("There was a problem uploading the file.", array(), 'article_files'), TRUE);
break;
}
} else {
setMessage($translator->trans("The file exceeds the allowed max file size.", array(), 'article_files'), TRUE);
}
if (!Input::IsValid()) {
setMessage($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), TRUE);
}
$container = \Zend_Registry::get('container');
$user = $container->get('security.context')->getToken()->getUser();
$em = $container->get('em');
if (!empty($_FILES['f_file'])) {
$language = $em->getRepository('Newscoop\Entity\Language')->findOneById($f_language_selected);
$attachmentService = $container->get('attachment');
$file = new UploadedFile($_FILES['f_file']['tmp_name'], $_FILES['f_file']['name'], $_FILES['f_file']['type'], $_FILES['f_file']['size'], null, true);
$attachment = $attachmentService->upload($file, $f_description, $language, array('user' => $user));
if ($f_language_specific != "yes") {
$queryBuilder = $em->createQueryBuilder();
$attach = $queryBuilder->update('Newscoop\Entity\Attachment', 'a')
->set('a.language', 'null')
->where('a.id = ?1')
->setParameter(1, $attachment->getId())
->getQuery();
$attach->execute();
}
if ($f_content_disposition == "attachment") {
$attachment->setContentDisposition($f_content_disposition);
}
} else {
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_id, 'files/popup.php'));
}
// Check if image was added successfully
if (!$attachment) {
setMessage($translator->trans("There was a problem uploading the file.", array(), 'article_files'), TRUE);
camp_html_goto_page($BackLink);
}
if (!$inArchive) {
ArticleAttachment::AddFileToArticle($attachment->getId(), $articleObj->getArticleNumber());
$cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
$cacheService->clearNamespace('attachments');
$logtext = $translator->trans('File #$1 "$2" attached to article',
array('$1' => $attachment->getId(), '$2' => $attachment->getName()), 'article_files');
Log::ArticleMessage($articleObj, $logtext, null, 38, TRUE);
setMessage($translator->trans('File attached.', array(), 'article_files'));
} else { ?>
================================================
FILE: newscoop/admin-files/articles/files/do_add_existing.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_add_msg($translator->trans('Invalid security token!'));
?>
exists()) {
camp_html_display_error($translator->trans("Article does not exist."), null, true);
exit;
}
foreach ((array) $_POST['item'] as $attachmentId) {
ArticleAttachment::AddFileToArticle((int) $attachmentId, $articleObj->getArticleNumber());
}
$cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
$cacheService->clearNamespace('attachments');
$logtext = $translator->trans('$1 file/s attached to article', array('$1' => sizeof($_POST['item'])), 'article_files');
Log::ArticleMessage($articleObj, $logtext, null, 38, TRUE);
?>
================================================
FILE: newscoop/admin-files/articles/files/do_del.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
if (!$g_user->hasPermission('DeleteFile')) {
camp_html_display_error($translator->trans('You do not have the right to delete files.', array(), 'article_files'), null, true);
exit;
}
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_attachment_id = Input::Get('f_attachment_id', 'int', 0);
// Check input
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), null, true);
exit;
}
if (!$g_user->hasPermission("DeleteFile")) {
camp_html_display_error($translator->trans("You do not have the right to delete file attachments.", array(), 'article_files'), null, true);
exit;
}
$articleObj = new Article($f_language_selected, $f_article_number);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans("Article does not exist."), null, true);
exit;
}
$attachmentObj = new Attachment($f_attachment_id);
if (!$attachmentObj->exists()) {
camp_html_display_error($translator->trans('Attachment does not exist.', array(), 'article_files'), null, true);
exit;
}
$filePath = dirname($attachmentObj->getStorageLocation()) . '/' . $attachmentObj->getFileName();
ArticleAttachment::RemoveAttachmentFromArticle($f_attachment_id, $f_article_number);
$logtext = $translator->trans('File #$1 "$2" unattached', array(
'$1' => $attachmentObj->getAttachmentId(), '$2' => $attachmentObj->getFileName()), 'article_files');
Log::ArticleMessage($articleObj, $logtext, null, 39);
$attachmentFileName = $attachmentObj->getFileName();
$cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
$cacheService->clearNamespace('attachments');
// Go back to article.
camp_html_add_msg($translator->trans("File $1 unattached.", array('$1' => $attachmentFileName), 'article_files'), "ok");
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_id, 'edit.php'));
?>
================================================
FILE: newscoop/admin-files/articles/files/do_edit.php
================================================
getService('translator');
if (!SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
if (!$g_user->hasPermission('ChangeFile')) {
camp_html_display_error($translator->trans('You do not have the right to change files.', array(), 'article_files'), null, true);
exit;
}
$f_publication_id = Input::Get('f_publication_id', 'int', 0);
$f_issue_number = Input::Get('f_issue_number', 'int', 0);
$f_section_number = Input::Get('f_section_number', 'int', 0);
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_attachment_id = Input::Get('f_attachment_id', 'int', 0);
$f_description = trim(Input::Get('f_description', 'string', '', true));
$f_language_specific = Input::Get('f_language_specific');
$f_content_disposition = Input::Get('f_content_disposition');
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), null, true);
exit;
}
$articleObj = new Article($f_language_selected, $f_article_number);
$publicationObj = new Publication($f_publication_id);
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans("Article does not exist."), null, true);
exit;
}
// This file can only be accessed if the user has the right to change articles
// or the user created this article and it hasnt been published yet.
if (!$articleObj->userCanModify($g_user)) {
camp_html_display_error($translator->trans('You do not have the right to change the article.', array(), 'article_files'), null, true);
exit;
}
$em = \Zend_Registry::get('container')->getService('em');
$attachment = $em->getRepository('Newscoop\Entity\Attachment')->findOneById($f_attachment_id);
$language = $em->getRepository('Newscoop\Entity\Language')->findOneById($f_language_selected);
$description = $em->getRepository('Newscoop\Entity\Translation')->findOneBy(array(
'phrase_id' => $attachment->getDescription()->getPhraseId(),
'language' => $language
));
if (!$description) {
$description = new \Newscoop\Entity\Translation($attachment->getDescription()->getPhraseId());
$description->setLanguage($language);
$em->persist($description);
}
$description->setTranslationText($f_description);
if ($f_language_specific == "yes") {
$attachment->setLanguage($language);
} else {
$queryBuilder = $em->createQueryBuilder();
$attach = $queryBuilder->update('Newscoop\Entity\Attachment', 'a')
->set('a.language', 'null')
->where('a.id = ?1')
->setParameter(1, $f_attachment_id)
->getQuery();
$attach->execute();
}
if ($f_content_disposition == "attachment" || empty($f_content_disposition)) {
$attachment->setContentDisposition($f_content_disposition);
}
$em->flush();
$cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
$cacheService->clearNamespace('attachments');
// Go back to article.
camp_html_add_msg($translator->trans("File '$1' updated.", array('$1' => $attachment->getName()), 'article_files'), "ok");
camp_html_goto_page(camp_html_article_url($articleObj, $f_language_id, 'edit.php'));
?>
================================================
FILE: newscoop/admin-files/articles/files/edit.php
================================================
getService('translator');
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_attachment_id = Input::Get('f_attachment_id', 'int', 0);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $_SERVER['REQUEST_URI'], true);
exit;
}
if ($f_publication_id > 0) {
$publicationObj = new Publication($f_publication_id);
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
}
$articleObj = new Article($f_language_selected, $f_article_number);
$attachmentObj = new Attachment($f_attachment_id);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans("Article does not exist."), null, true);
exit;
}
$isDisabled = '';
$isReadOnly = '';
if (!$g_user->hasPermission('ChangeFile')) {
$isDisabled = 'disabled';
$isReadOnly = 'readonly';
$title = $translator->trans('File information', array(), 'article_files');
} else {
$title = $translator->trans('Change file information', array(), 'article_files');
}
// Add extra breadcrumb for image list.
if ($f_publication_id > 0) {
$extraCrumbs = array($translator->trans("Attachments", array(), 'article_files') => "");
$topArray = array('Pub' => $publicationObj, 'Issue' => $issueObj,
'Section' => $sectionObj, 'Article'=>$articleObj);
camp_html_content_top($title, $topArray, true, true, $extraCrumbs);
} else {
$crumbs = array();
$crumbs[] = array($translator->trans("Actions"), "");
$crumbs[] = array($translator->trans("Edit article", array(), 'article_files'), camp_html_article_url($articleObj, $f_language_id, "edit.php"));
$crumbs[] = array($translator->trans("Attachments", array(), 'article_files'), "");
$crumbs[] = array($title, "");
echo camp_html_breadcrumbs($crumbs);
}
?>
/left_arrow.png" BORDER="0">
">trans("Back to Edit Article"); ?>
================================================
FILE: newscoop/admin-files/articles/get.php
================================================
getService('translator');
if (!$g_user->hasPermission('CommentModerate')) {
camp_html_display_error($translator->trans("You do not have the right to moderate comments.", array(), 'articles'));
exit;
}
// These are optional, depending on whether you are in a section
// or whether editing an article that doesnt have a location.
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_unlock = Input::Get('f_unlock', 'string', false, true);
// $f_edit_mode can be "view" or "edit"
$f_edit_mode = Input::Get('f_edit_mode', 'string', 'edit', true);
// Whether to show comments at the bottom of the article
// (you may not want to show them to speed up your loading time)
// Selected language of the article
$f_language_selected = (int) camp_session_get('f_language_selected', 0);
// Fetch article
$articleObj = new Article($f_language_selected, $f_article_number);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans('No such article.', array(), 'articles'));
exit;
}
//getArticleAuthors()
$articleInfo = array();
$articleData = $articleObj->getArticleData();
// Get article type fields.
$dbColumns = $articleData->getUserDefinedColumns(false, true);
foreach ($dbColumns as $dbColumn) {
if ($dbColumn->getType() == ArticleTypeField::TYPE_SWITCH) {
$value = $articleData->getProperty($dbColumn->getName()) ? $translator->trans('On', array(), 'articles') : $translator->trans('Off', array(), 'articles');
$articleInfo[htmlspecialchars($dbColumn->getDisplayName($articleObj->getLanguageId()))] = $value;
} else {
$articleInfo[htmlspecialchars($dbColumn->getDisplayName($articleObj->getLanguageId()))] = $articleData->getProperty($dbColumn->getName());
}
}
$articleInfo[$translator->trans('Title', array(), 'articles')] = $articleObj->getTitle(); // THIS IS REALLY BAD, NEVER LOCALIZE INTERNALLY
$articleInfo[$translator->trans('Date')] = $articleObj->getCreationDate(); // But I don't know what possibly depends on this so we leave it for now
$articleInfo['title'] = $articleObj->getTitle();
$articleInfo['date'] = $articleObj->getCreationDate();
$authors = ArticleAuthor::GetAuthorsByArticle($articleObj->getArticleNumber(), $articleObj->getLanguageId());
$authorsNames = array();
foreach ($authors as $author) {
$authorsNames[] = $author->getName();
}
$articleInfo['authors'] = $authorsNames;
$articleInfo['authorsLabel'] = $translator->trans('Authors', array(), 'articles');
echo $this->view->json($articleInfo);
================================================
FILE: newscoop/admin-files/articles/images/add.php
================================================
getService('translator');
if (!$g_user->hasPermission("AddImage")) {
camp_html_display_error($translator->trans("You do not have the right to add images", array(), 'media_archive'), null, true);
exit;
}
$maxId = Image::GetMaxId();
$f_publication_id = Input::Get('f_publication_id', 'int', 0);
$f_issue_number = Input::Get('f_issue_number', 'int', 0);
$f_section_number = Input::Get('f_section_number', 'int', 0);
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $_SERVER['REQUEST_URI'], true);
exit;
}
if (!is_writable($Campsite['IMAGE_DIRECTORY'])) {
camp_html_add_msg($translator->trans("Unable to add new image.", array(), 'media_archive'));
camp_html_add_msg(camp_get_error_message(CAMP_ERROR_WRITE_DIR, $Campsite['IMAGE_DIRECTORY']));
}
$articleObj = new Article($f_language_selected, $f_article_number);
$publicationObj = new Publication($f_publication_id);
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
$ImageTemplateId = ArticleImage::GetUnusedTemplateId($f_article_number);
$q_now = $g_ado_db->GetOne("SELECT LEFT(NOW(), 10)");
include_once($GLOBALS['g_campsiteDir']."/$ADMIN_DIR/javascript_common.php");
camp_html_display_msgs();
?>
================================================
FILE: newscoop/admin-files/articles/images/search.php
================================================
getService('translator');
$f_order_by = camp_session_get('f_order_by', 'id');
$f_order_direction = camp_session_get('f_order_direction', 'ASC');
$f_image_offset = camp_session_get('f_image_offset', 0);
$f_search_string = camp_session_get('f_search_string', '');
$f_items_per_page = camp_session_get('f_items_per_page', 4);
$f_source_filter_out = !isset($_REQUEST['f_source_all']) ? 'newsfeed' : false;
if ($f_items_per_page < 4) {
$f_items_per_page = 4;
}
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $_SERVER['REQUEST_URI'], true);
exit;
}
// Build the links for ordering search results
$OrderSign = '';
if ($f_order_direction == 'DESC') {
$ReverseOrderDirection = "ASC";
$OrderSign = "
hasPermission('AddImage')) { ?>
border-bottom: 1px solid #8baed1;">">
trans("Attach New Image", array(), 'article_images'); ?>border-bottom: 1px solid #8baed1;">">
trans("Attach Existing Image", array(), 'article_images'); ?>
";
} else {
$ReverseOrderDirection = "DESC";
$OrderSign = "
";
}
$TotalImages = Image::GetTotalImages();
$imageSearch = new ImageSearch($f_search_string, $f_order_by, $f_order_direction, $f_image_offset, $f_items_per_page);
if ($f_source_filter_out) {
$imageSearch->setFilter( "Source", $f_source_filter_out, true );
}
$imageSearch->run();
$imageData = $imageSearch->getImages();
$NumImagesFound = $imageSearch->getNumImagesFound();
//$orderDirectionUrl = camp_html_article_url($articleObj, $f_language_id, 'images/popup.php');
?>
0) {
$pagerUrl = camp_html_article_url($articleObj, $f_language_id, "images/popup.php")."&".
(!$f_source_filter_out ? "f_source_all=newsfeed&" : "");
$pager = new SimplePager($NumImagesFound, $f_items_per_page, "f_image_offset", $pagerUrl);
?>
render(); ?>
userCanModify($g_user)) { ?>
trans("Attach")); ?>
trans("Thumbnail"); ?>
trans("Description"); ?>
trans("Photographer"); ?>
trans("Place"); ?>
trans("Date").'
(yyyy-mm-dd)'; ?>
trans("In use"); ?>
class="list_row_even"class="list_row_odd">
userCanModify($g_user)) { ?>
">
">
trans('$1 images found', array('$1' => $NumImagesFound), 'article_images'); ?>
================================================
FILE: newscoop/admin-files/articles/images/view.php
================================================
getService('translator');
$f_backlink = Input::Get('Back', 'string', '');
$f_image_id = Input::Get('f_image_id', 'int', 0);
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $_SERVER['REQUEST_URI'], true);
exit;
}
$imageObj = new Image($f_image_id);
// Add extra breadcrumb for image list.
?>
render();
?>
setPublication($f_publication_id);
$articlelist->setIssue($f_issue_number);
$articlelist->setSection($f_section_number);
$articlelist->setLanguage($f_language_id);
$articlelist->setColVis(TRUE);
if ($g_user->hasPermission('Publish')) {
$articlelist->setOrder(TRUE);
}
$articlelist->setSearch(TRUE);
if ($f_section_number) {
$articlelist->setHidden('Section');
}
$articlelist->renderActions();
$articlelist->render();
?>
================================================
FILE: newscoop/admin-files/articles/la_import.php
================================================
getService('translator');
if ( isset($_POST['f_save']) && !SecurityToken::isValid()) {
camp_html_display_error($translator->trans('Invalid security token!'));
exit;
}
if (!$g_user->hasPermission('ManageIssue') || !$g_user->hasPermission('AddArticle')) {
camp_html_display_error($translator->trans("You do not have the right to import XML archives.", array(), 'articles'));
exit;
}
// Whether form was submitted
$f_save = Input::Get('f_save', 'string', '', true);
// The article location dropdowns cause this page to reload,
// so we need to preserve the state with each refresh.
$f_article_type = Input::Get('f_article_type', 'string', '', true);
$f_article_language_id = Input::Get('f_article_language_id', 'int', 0, true);
// For choosing the article location.
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
// Whether articles must be overwritten
$f_overwrite_articles = Input::Get('f_overwrite_articles', 'string', '', true);
// Build the back link
$backlink = $Campsite['WEBSITE_URL'] . DIR_SEP . 'admin' . DIR_SEP . 'articles' . DIR_SEP . basename(__FILE__);
if ($f_save) {
if (isset($_FILES["f_input_file"])) {
switch($_FILES["f_input_file"]['error']) {
case 0: // UPLOAD_ERR_OK
break;
case 1: // UPLOAD_ERR_INI_SIZE
case 2: // UPLOAD_ERR_FORM_SIZE
camp_html_display_error($translator->trans("The file exceeds the allowed max file size.", array(), 'articles'), null, true);
break;
case 3: // UPLOAD_ERR_PARTIAL
camp_html_display_error($translator->trans("The uploaded file was only partially uploaded. This is common when the maximum time to upload a file is low in contrast with the file size you are trying to input. The maximum input time is specified in php.ini", array(), 'articles'), null, true);
break;
case 4: // UPLOAD_ERR_NO_FILE
camp_html_display_error($translator->trans("You must select a file to upload.", array(), 'articles'), null, true);
break;
case 6: // UPLOAD_ERR_NO_TMP_DIR
case 7: // UPLOAD_ERR_CANT_WRITE
camp_html_display_error($translator->trans("There was a problem uploading the file.", array(), 'articles'), null, true);
break;
}
} else {
camp_html_display_error($translator->trans("The file exceeds the allowed max file size.", array(), 'articles'), null, true);
}
}
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), $backlink);
exit;
}
$articleTypes = ArticleType::GetArticleTypes();
$allPublications = Publication::GetPublications();
$allLanguages = Language::GetLanguages(null, null, null, array(), array(), true);
$isValidXMLFile = false;
if ($f_save && !empty($_FILES['f_input_file'])) {
if (file_exists($_FILES['f_input_file']['tmp_name'])) {
if (!($buffer = @file_get_contents($_FILES['f_input_file']['tmp_name']))) {
camp_html_display_error($translator->trans("File could not be read.", array(), 'articles'), $backlink);
exit;
}
try {
$xml = new SimpleXMLElement($buffer);
if (!is_object($xml)) {
throw new Exception();
}
} catch (Exception $e) {
camp_html_display_error($translator->trans("File is not a valid XML file.", array(), 'articles'), $backlink);
exit;
}
if (!isset($xml->article->name)) {
camp_html_add_msg($translator->trans("Bad format in XML file.", array(), 'articles'), $backlink);
}
$isValidXMLFile = true;
@unlink($_FILES['f_input_file']['tmp_name']);
} else {
camp_html_display_error($translator->trans("File does not exist.", array(), 'articles'), $backlink);
exit;
}
} elseif ($f_save) {
camp_html_add_msg($translator->trans("File could not be uploaded.", array(), 'articles'), $backlink);
}
if ($isValidXMLFile) {
if ($f_publication_id > 0) {
$publicationObj = new Publication($f_publication_id);
if (!$publicationObj->exists()) {
camp_html_display_error($translator->trans('Publication does not exist.'), $backlink);
exit;
}
if ($f_issue_number > 0) {
$issueObj = new Issue($f_publication_id, $f_article_language_id, $f_issue_number);
if (!$issueObj->exists()) {
camp_html_display_error($translator->trans('Issue does not exist.'), $backlink);
exit;
}
if ($f_section_number > 0) {
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_article_language_id, $f_section_number);
if (!$sectionObj->exists()) {
camp_html_display_error($translator->trans('Section does not exist.'), $backlink);
exit;
}
}
}
}
// Loads article data from XML file into database
$xmlArticle = array();
$articleFields = array();
$errorMessages = array();
$articleCount = 0;
foreach ($xml->article as $article) {
$existingArticles = Article::GetByName((string) $article->name,
$f_publication_id,
$f_issue_number,
$f_section_number,
$f_article_language_id, true);
// There is already an article with same name and language
if (count($existingArticles) > 0) {
$existingArticle = array_pop($existingArticles);
// Is overwrite articles false? then skip and process next article
if ($f_overwrite_articles == 'N') {
$errorMessages[][] = $translator->trans('Article $1 already exists, and was not overwritten.
/left_arrow.png" BORDER="0">
trans("Section List"); ?>
hasPermission('AddArticle')) { ?>
/add.png" BORDER="0">
trans("Add new article"); ?>
',array('$1' => $article->name), 'articles');
continue;
}
}
if (isset($existingArticle) && $existingArticle->exists()) {
$articleObj = $existingArticle;
} else {
$articleObj = new Article($f_article_language_id);
$articleName = (string) $article->name;
$articleObj->create($f_article_type, $articleName, $f_publication_id, $f_issue_number, $f_section_number);
}
// Checks whether article was successfully created
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans('Article could not be created.', array(), 'articles'), $backlink);
exit;
}
$articleFields['name'] = true;
// Number of articles successfully created in database
$articleCount++;
$errorMessages[$articleCount][] = '
';
continue;
}
$articleFields[$field] = true;
$articleTypeObj->setProperty($dbColumn->getName(), (string) $article->$field);
}
// Updates the article creator and author
$articleObj->setCreatorId($g_user->getUserId());
$isAuthorFromCreator = FALSE;
if (isset($article->author) && !empty($article->author)) {
$authorName = (string) $article->author;
} else {
$authorName = (string) $g_user->getRealName();
$isAuthorFromCreator = TRUE;
}
$authorObj = new Author($authorName);
if (!$authorObj->exists()) {
$authorData = Author::ReadName($authorName);
if ($isAuthorFromCreator) {
$authorData['email'] = $g_user->getEmail();
}
$authorObj->create($authorData);
}
if ($authorObj->exists()) {
$articleObj->setAuthor($authorObj);
$articleFields['author'] = true;
}
// Updates the article
if (isset($article->keywords) && !empty($article->keywords)) {
$articleObj->setKeywords((string) $article->keywords);
}
$articleFields['keywords'] = true;
foreach($xmlArticle as $articleFieldName => $articleFieldValue) {
if (!array_key_exists($articleFieldName, $articleFields)) {
$errorMessages[$articleCount][] = '"' . $articleFieldName
.'" field in XML file '
. 'was not loaded into database as there is not any '
. 'article type field matching it.
';
}
}
}
camp_html_add_msg($translator->trans("$1 articles successfully imported.", array('$1' => $articleCount), 'articles'), "ok");
}
// Gets all issues
$allIssues = array();
if ($f_publication_id > 0) {
$allIssues = Issue::GetIssues($f_publication_id, $f_article_language_id, null, null, null, false, array("LIMIT" => 300, "ORDER BY" => array("Number" => "DESC")), true);
// Automatically selects the issue if there is only one
if (count($allIssues) == 1) {
$tmpIssue = camp_array_peek($allIssues);
$f_issue_number = $tmpIssue->getIssueNumber();
}
}
// Gets all the sections
$allSections = array();
if ($f_issue_number > 0) {
$destIssue = new Issue($f_publication_id);
$allSections = Section::GetSections($f_publication_id, $f_issue_number, $f_article_language_id, null, null, array("ORDER BY" => array("Number" => "DESC")), true);
// Automatically selects the section if there is only one
if (count($allSections) == 1) {
$tmpSection = camp_array_peek($allSections);
$f_section_number = $tmpSection->getSectionNumber();
}
}
$crumbs = array();
$crumbs[] = array($translator->trans("Actions"), "");
$crumbs[] = array($translator->trans("Import XML", array(), 'articles'), "");
echo camp_html_breadcrumbs($crumbs);
$controller->view->headTitle($translator->trans("Import XML", array(), 'articles').' - Newscoop Admin', 'SET');
?>
trans("Schedule a new action", array(), 'articles'); ?>
trans("Articles"); ?>:
getTitle()); ?>
trans("Date"); ?>:
trans("Time"); ?>:
:
trans("Actions"); ?>
trans("Publish"); ?>:
trans("Front page"); ?>:
trans("Section page"); ?>:
================================================
FILE: newscoop/admin-files/articles/playlist/popup.php
================================================
getRequest()
->clearParams()
->setDispatched(false)
->clearParams()
->setActionName('article')
->setControllerName('playlist')
->setModuleName('admin')
->setParam('id', Input::Get('f_article_number', 'int', 1) );
;
$front->getDispatcher()->dispatch($front->getRequest(), $front->getResponse());
$front->getResponse()->getBody();
?>
================================================
FILE: newscoop/admin-files/articles/post.php
================================================
getService('translator');
require_once($GLOBALS['g_campsiteDir']. "/$ADMIN_DIR/articles/article_common.php");
if (!SecurityToken::isValid()) {
$data = new stdclass();
$data->Results = new stdclass();
$data->Results->f_message = $translator->trans('Invalid security token!');
echo json_encode($data);
exit;
}
$f_publication_id = Input::Get('f_publication_id', 'int', 0, true);
$f_issue_number = Input::Get('f_issue_number', 'int', 0, true);
$f_section_number = Input::Get('f_section_number', 'int', 0, true);
$f_language_id = Input::Get('f_language_id', 'int', 0, true);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$f_article_author = Input::Get('f_article_author', 'array', array(), true);
$f_article_author_type = Input::Get('f_article_author_type', 'array', array(), true);
$f_article_title = Input::Get('f_article_title');
$f_message = Input::Get('f_message', 'string', '', true);
$f_creation_date = Input::Get('f_creation_date');
$f_publish_date = Input::Get('f_publish_date', 'string', '', true);
$f_comment_status = Input::Get('f_comment_status', 'string', '', true);
$data = new stdclass();
$data->Results = new stdclass();
$data->Results->f_publication_id = $f_publication_id;
$data->Results->f_issue_number = $f_issue_number;
$data->Results->f_section_number = $f_section_number;
$data->Results->f_language_id = $f_language_id;
$data->Results->f_language_selected = $f_language_selected;
$data->Results->f_article_number = $f_article_number;
$data->Results->f_article_author = $f_article_author;
$data->Results->f_article_author_type = $f_article_author_type;
$data->Results->f_article_title = $f_article_title;
$data->Results->f_message = $f_message;
$data->Results->f_creation_date = $f_creation_date;
$data->Results->f_publish_date = $f_publish_date;
$data->Results->f_comment_status = $f_comment_status;
if (!Input::IsValid()) {
camp_html_display_error($translator->trans('Invalid input: $1', array('$1' => Input::GetErrorString())), isset($BackLink) ? $Backlink : null);
exit;
}
// Fetch article
$articleObj = new Article($f_language_selected, $f_article_number);
if (!$articleObj->exists()) {
camp_html_display_error($translator->trans('No such article.', array(), 'articles'), $BackLink);
exit;
}
$articleTypeObj = $articleObj->getArticleData();
$dbColumns = $articleTypeObj->getUserDefinedColumns(false, true);
$articleFields = array();
foreach ($dbColumns as $dbColumn) {
if ($dbColumn->getType() == ArticleTypeField::TYPE_BODY) {
$dbColumnParam = $dbColumn->getName() . '_' . $f_article_number;
} else {
$dbColumnParam = $dbColumn->getName();
}
if (isset($_REQUEST[$dbColumnParam])) {
if($dbColumn->getType() == ArticleTypeField::TYPE_TEXT
&& $dbColumn->getMaxSize()!=0
&& $dbColumn->getMaxSize()!='') {
$fieldValue = trim(Input::Get($dbColumnParam));
$articleFields[$dbColumn->getName()] = mb_strlen($fieldValue, 'utf8') > $dbColumn->getMaxSize()
? substr($fieldValue, 0, $dbColumn->getMaxSize())
: $fieldValue;
} else {
$articleFields[$dbColumn->getName()] = trim(Input::Get($dbColumnParam));
}
} else {
unset($articleFields[$dbColumn->getName()]); // ignore if not set
}
}
if (!empty($f_message)) {
camp_html_add_msg($f_message, "ok");
}
if (!$articleObj->userCanModify($g_user)) {
camp_html_add_msg($translator->trans("You do not have the right to change this article. You may only edit your own articles and once submitted an article can only be changed by authorized users.", array(), 'articles'));
camp_html_goto_page($BackLink);
exit;
}
// Only users with a lock on the article can change it.
if ($articleObj->isLocked() && ($g_user->getUserId() != $articleObj->getLockedByUser())) {
$diffSeconds = time() - strtotime($articleObj->getLockTime());
$hours = floor($diffSeconds/3600);
$diffSeconds -= $hours * 3600;
$minutes = floor($diffSeconds/60);
$lockUser = new User($articleObj->getLockedByUser());
camp_html_add_msg($translator->trans('Could not save the article. It has been locked by $1 $2 hours and $3 minutes ago.', array('$1' => $lockUser->getRealName(), '$2' => $hours, '$3' => $minutes), 'articles'));
camp_html_goto_page($BackLink);
exit;
}
// Update the article author
$blogService = Zend_Registry::get('container')->getService('blog');
$blogInfo = $blogService->getBlogInfo($g_user);
if (!empty($f_article_author)) {
$em = Zend_Registry::get('container')->getService('em');
$dispatcher = Zend_Registry::get('container')->getService('dispatcher');
$language = $em->getRepository('Newscoop\Entity\Language')->findOneById($articleObj->getLanguageId());
$authors = $em->getRepository('Newscoop\Entity\ArticleAuthor')->getArticleAuthors($articleObj->getArticleNumber(), $language->getCode())->getArrayResult();
ArticleAuthor::OnArticleLanguageDelete($articleObj->getArticleNumber(), $articleObj->getLanguageId());
foreach ($authors as $author) {
$dispatcher->dispatch("user.set_points", new \Newscoop\EventDispatcher\Events\GenericEvent($this, array('authorId' => $author['fk_author_id'])));
}
$i = 0;
foreach ($f_article_author as $author) {
$authorObj = new Author($author);
$author = trim($author);
if (!$authorObj->exists() && isset($author[0])) {
if ($blogService->isBlogger($g_user)) { // blogger can't create authors
continue;
}
$authorData = Author::ReadName($author);
$authorObj->create($authorData);
} elseif ($blogService->isBlogger($g_user)) { // test if using authors from blog
if (!$blogService->isBlogAuthor($authorObj, $blogInfo)) {
continue;
}
}
// Sets the author type selected
$author_type = $f_article_author_type[$i];
$authorObj->setType($author_type);
// Links the author to the article
if ($authorObj->getId() != 0) {
$articleAuthorObj = new ArticleAuthor($articleObj->getArticleNumber(),
$articleObj->getLanguageId(),
$authorObj->getId(), $author_type, $i + 1);
}
if (isset($articleAuthorObj) && !$articleAuthorObj->exists()) {
$articleAuthorObj->create();
$dispatcher->dispatch("user.set_points", new \Newscoop\EventDispatcher\Events\GenericEvent($this, array('authorId' => $articleAuthorObj->getAuthorId())));
}
$i++;
}
}
$cacheService = \Zend_Registry::get('container')->getService('newscoop.cache');
// Update the article.
$articleObj->setTitle($f_article_title);
$articleObj->setIsIndexed(false);
if (!empty($f_comment_status)) {
if ($f_comment_status == "enabled" || $f_comment_status == "locked") {
$commentsEnabled = true;
} else {
$commentsEnabled = false;
}
// If status has changed, then you need to show/hide all the comments
// as appropriate.
if ($articleObj->commentsEnabled() != $commentsEnabled) {
$articleObj->setCommentsEnabled($commentsEnabled);
global $controller;
$repository = $controller->getHelper('entity')->getRepository('Newscoop\Entity\Comment');
$repository->setArticleStatus($f_article_number, $f_language_selected, $commentsEnabled?STATUS_APPROVED:STATUS_HIDDEN);
$repository->flush();
}
$articleObj->setCommentsLocked($f_comment_status == "locked");
$cacheKey = $cacheService->getCacheKey(array('are_comments_enabled', $articleObj->getProperty('IdPublication'), $articleObj->getProperty('Type'), $articleObj->getArticleNumber(), $articleObj->getLanguageId()), 'publication');
$cacheService->delete($cacheKey);
}
// Make sure that the time stamp is updated.
$articleObj->setProperty('time_updated', 'NOW()', true, true);
// Verify creation date is in the correct format.
// If not, dont change it.
if (preg_match("/\d{4}-\d{2}-\d{2}/", $f_creation_date)) {
$articleObj->setCreationDate($f_creation_date);
}
// Verify publish date is in the correct format.
// If not, dont change it.
if (preg_match("/\d{4}-\d{2}-\d{2}/", $f_publish_date)) {
$articleObj->setPublishDate($f_publish_date);
}
foreach ($articleFields as $dbColumnName => $text) {
$articleTypeObj->setProperty($dbColumnName, $text);
}
Log::ArticleMessage($articleObj, $translator->trans('Content edited', array(), 'articles'), $g_user->getUserId(), 37);
ArticleIndex::RunIndexer(3, 10, true);
if (CampTemplateCache::factory()) {
CampTemplateCache::factory()->update(array(
'language' => $articleObj->getLanguageId(),
'publication' => $articleObj->getPublicationId(),
'issue' => $articleObj->getIssueNumber(),
'section' => $articleObj->getSectionNumber(),
'article' => $articleObj->getArticleNumber(),
), !($articleObj->isPublished() || $articleObj->m_published));
}
$cacheService->clearNamespace('authors');
$cacheService->clearNamespace('article');
$cacheService->clearNamespace('article_type');
$cacheService->clearNamespace('boxarticles');
echo json_encode($data);
exit;
================================================
FILE: newscoop/admin-files/articles/preview.php
================================================
getService('translator');
$f_language_id = Input::Get('f_language_id', 'int', 0);
$f_language_selected = Input::Get('f_language_selected', 'int', 0);
$f_publication_id = Input::Get('f_publication_id', 'int', 0);
$f_issue_number = Input::Get('f_issue_number', 'int', 0);
$f_section_number = Input::Get('f_section_number', 'int', 0);
$f_article_number = Input::Get('f_article_number', 'int', 0);
$languageObj = new Language($f_language_selected);
$publicationObj = new Publication($f_publication_id);
$issueObj = new Issue($f_publication_id, $f_language_id, $f_issue_number);
$sectionObj = new Section($f_publication_id, $f_issue_number, $f_language_id, $f_section_number);
$articleObj = new Article($f_language_selected, $f_article_number);
$errorStr = "";
if (!$articleObj->exists()) {
$errorStr = $translator->trans('There was an error reading request parameters.', array(), 'articles');
camp_html_display_error($errorStr, null, true);
}
/**
* @author Mihai Balaceanu
trans('Specific dates', array(), 'articles'); ?>
trans('Recurring', array(), 'articles'); ?>
0) { ?>
/left_arrow.png" BORDER="0">
">trans("Article List", array(), 'articles'); ?>
0) { ?>style="padding-left: 20px;">
/left_arrow.png" BORDER="0">
">trans("Back to Edit Article"); ?>
trans("Translate article", array(), 'articles'); ?>
trans("Article name ($1)", array('$1' => $articleObj->getLanguageName()), 'articles'); ?>:
getTitle())); ?>
trans("New article name", array(), 'articles'); ?>:
0) && ($f_issue_number > 0) ) {
// Every article must live inside a cooresponding issue of the same language.
if (!$translationIssueObj->exists()) {
if ($g_user->hasPermission("ManageIssue")) {
// If a section needs to be translated, but the user doesnt have the permission
// to create a section, then we dont want to display anything here. Even
// if they can create the issue, they still need to create a cooresponding section.
// If they dont have the permission to do that, then no use in creating the issue.
if ($translationSectionObj->exists() || $g_user->hasPermission("ManageSection")) {
?>
trans("Language"); ?>:
trans("An issue must be created for the selected language. Please enter the issue name and URL name.", array(), 'articles'); ?>
trans("New issue name", array(), 'articles'); ?>:
trans("New issue URL name", array(), 'articles'); ?>:
exists()) {
if ($g_user->hasPermission("ManageSection")) {
// If an issue needs to be translated, but the user doesnt have the permission
// to create an issue, then we dont want to display anything here. Even
// if they can create the section, they still need to create a cooresponding issue.
if ($translationIssueObj->exists() || $g_user->hasPermission("ManageIssue")) {
?>
trans("A section must be created for the selected language. Please enter the section name and URL name.", array(), 'articles'); ?>
trans("New section name", array(), 'articles'); ?>:
trans("New section URL name", array(), 'articles'); ?>:
';
$options = array('--default-dir', '--keep-session');
include CS_PATH_SITE.DIR_SEP . 'bin' . DIR_SEP . 'newscoop-backup';
echo '';
echo '';
$options = array(
'f' => true,
'e' => true,
'b' => $file,
'--keep-session'
);
include CS_PATH_SITE.DIR_SEP . 'bin' . DIR_SEP . 'newscoop-restore';
echo '';
echo '
================================================
FILE: newscoop/admin-files/bugreporter/bug_handler_main.php
================================================
setFile($p_file);
$exception->setLine($p_line);
throw $exception;
}*/
// -- Return on generic errors ---
if (preg_match ('/^Undefined index:/i', $p_string)){
return;
}
if (preg_match ('/^Undefined variable:/i', $p_string)){
return;
}
if (preg_match ('/^Undefined offset:/i', $p_string)){
return;
}
// -- SimpleXMLElement errors ---
if (preg_match('/^SimpleXMLElement/i', $p_string)) {
return;
}
// -- Return on URL parse errors
if (preg_match('/^parse_url/i', $p_string)) {
return;
}
// -- Return on mysql connect errors ---
if (preg_match ('/^mysql_connect/i', $p_string)){
return;
}
// --- Return on socket errors ---
if (preg_match ('/^fsockopen/i', $p_string)){
return;
}
// --- Return on unlink errors ---
if (preg_match ('/^unlink/i', $p_string)){
return;
}
// --- Return on upload file errors ---
if (preg_match ('/^move_uploaded_file/i', $p_string)){
return;
}
// -- Return on getimagesize errors --
if (preg_match ('/^getimagesize/i', $p_string)){
return;
}
// -- Return on imagecreate* errors --
if (preg_match ('/^imagecreate/i', $p_string)) {
return;
}
// -- Return on rmdir errors --
if (preg_match ('/^rmdir/i', $p_string)){
return;
}
// -- Return on mkdir errors --
if (preg_match ('/^mkdir/i', $p_string)){
return;
}
// -- Return on fopen errors --
if (preg_match ('/^fopen/i', $p_string)){
return;
}
// -- Return on chown errors --
if (preg_match ('/^chown/i', $p_string)){
return;
}
// -- Return on chgrp errors --
if (preg_match ('/^chgrp/i', $p_string)){
return;
}
define('IN_BUG_HANDLE', TRUE);
if (ob_get_length() !== false) { // --- Don't print out the previous screen (in which the error occurred). ---
ob_end_clean();
}
if (is_object($g_user)) {
require_once($Campsite['HTML_DIR'] . "/$ADMIN_DIR/menu.php");
}
// --- If reporter doesn't exist, make one ($reporter might exist
// already if this script is an 'include') ---
// Remove the code name from the version number.
$version = explode(" ", $Campsite['VERSION']);
$version = array_shift($version);
if (!isset($reporter)) {
$reporter = new BugReporter($p_number, $p_string, $p_file, $p_line,
'Newscoop', $version);
}
// --- Print results ---
if (!function_exists('http_response_code')) {
httpResponseCode(500);
} else {
http_response_code(500);
}
include dirname(__FILE__) . '/emailus.php';
exit();
}
/**
* http_response_code function is supported from PHP >= 5.4
* This function provide same functionality for PHP < 5.4
*
* @param int|string $newCode Status code.
*
* @return int
*/
function httpResponseCode($newcode = null)
{
$code = 200;
if ($newcode !== null) {
header('X-PHP-Response-Code: '.$newcode, true, $newcode);
if (!headers_sent()) {
$code = $newcode;
}
}
return $code;
}
================================================
FILE: newscoop/admin-files/bugreporter/emailus.php
================================================
getService('translator');
global $ADMIN_DIR;
global $Campsite;
?>
trans("Free disk space", array(), 'home') . ': '
. ceil(disk_free_space($Campsite['CAMPSITE_DIR'])/1024/1024) . ' ' . $translator->trans('MiB', array(), 'home');?>
/add.png" border="0">
trans("Make a new backup", array(), 'home')?>
/tol.gif" border="0">
trans("Upload backup file", array(), 'home')?>
$file) {
if ($color) {
$color = 0;
$tr_class = "class=\"list_row_even\"";
} else {
$color = 1;
$tr_class = "class=\"list_row_odd\"";
}
print "trans("File"); ?>
trans("Creation date"); ?>
trans("Size", array(), 'home') . ', ' . $translator->trans("Mb", array(), 'home'); ?>
trans("Download", array(), 'home'); ?>
trans("Restore", array(), 'home'); ?>
trans("Delete"); ?>
';
}
} else {
echo '{$file['name']} {$file['time']} {$file['size']} ";
print '';
?>
/help.png" border="0" alt="trans('Restore file', array(), 'home') ?>"
title="trans('Restore file', array(), 'home') ?>">
';
print '
' ;
}
?>
'.$translator->trans('Backup list is empty.', array(), 'home').'
================================================
FILE: newscoop/admin-files/bugreporter/errormessage.php
================================================
getService('translator');
global $Campsite;
global $ADMIN_DIR;
global $ADMIN;
?>
";
echo $translator->trans("We are sorry, but there was a problem sending your bug report.", array(), 'bug_reporting');
echo "";
} else {
echo '';
echo $translator->trans("Newscoop has encountered a problem.", array(), 'bug_reporting');
echo "";
echo '
';
}
?>
";
echo $translator->trans("Simply copy and paste the error report below and send it to:", array(), 'bug_reporting');
echo(" ");
echo $Campsite["SUPPORT_EMAIL"];
echo("");
?>.
trans("Error Report", array(), 'bug_reporting'); ?>
trans("Email:");
?>
getEmail());
?>
trans("Description:", array(), 'bug_reporting');
?>
getDescription());
?>
trans("Error ID:", array(), 'bug_reporting'); ?>
getId(); ?>
PHP trans("Version", array(), 'messages'); ?>:
getPHPVersion(); ?>
OS:
getServerOS(); ?>
trans("Error String:", array(), 'bug_reporting'); ?>
getStr(); ?>
trans("Time:"); ?>
getTime(); ?>
trans("Backtrace:", array(), 'bug_reporting'); ?>
getBacktraceString(); ?>
================================================
FILE: newscoop/admin-files/camp_html.php
================================================
$v) {
$str .= " $k=\"$v\"";
}
$str .= '>'.htmlspecialchars($p_printValue)."\n";
echo $str;
return $selected;
} // fn camp_html_select_option
/**
* Display the copyright notice and close the HTML page.
*/
function camp_html_copyright_notice($p_displayBorder = true)
{
global $Campsite;
$campVersion = new CampVersion();
if ($p_displayBorder) {
?>
trans("Error Report", array(), 'bug_reporting'); ?>
trans("What were you trying to do when this happened?", array(), 'bug_reporting'); ?> trans("(optional)"); ?>
trans("Email:"); ?> trans("(optional)"); ?>
" id="my_icon" border=
"0" align="center">trans("Show error details", array(), 'bug_reporting'); ?>
">