# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET   /                             controllers.Application.index

# Map static resources from the /public folder to the /assets URL path
GET   /assets/*file                 controllers.Assets.at(path="/public", file)

# Change language
GET   /language/:lang               controllers.Application.language(lang: String)

# JsMessages
GET   /all-messages.js              controllers.Application.allJsMessages

GET   /uploads/:id                  controllers.Application.sendImage(id: String)

# Search page
GET   /search                       controllers.Application.search(tag_line_id = "none")
GET   /search/:tag_line_id          controllers.Application.search(tag_line_id: String)

# Content pages
GET   /media/:slug                  controllers.Application.content(primaryTag = "none", slug: String)
GET   /media/:primaryTag/:slug      controllers.Application.content(primaryTag: String, slug: String)
GET   /menu/media/:id               controllers.Application.menuContent(id: String)

# Image handling
POST  /uploader/upload                          controllers.Tagger.upload

# JavaScript routes
GET   /javascriptRoutes                         controllers.Tagger.javascriptRoutes

# Tagger
GET   /login                                    controllers.Tagger.login
POST  /login                                    controllers.Tagger.authenticate
GET   /logout                                   controllers.Tagger.logout

# Admin
GET   /admin                                    controllers.Tagger.admin
POST  /addText                                  controllers.api.Texts.addText
POST  /addLink                                  controllers.api.Links.addLink
POST  /addVideo                                 controllers.api.Videos.addVideo
POST  /addAudio                                 controllers.api.Audios.addAudio
POST  /addSite                                  controllers.api.Sites.addSite
POST  /addSlide                                 controllers.api.Slides.addSlide
POST  /addTagLine                               controllers.api.TagLines.addTagLine
POST  /addHeaderItem                            controllers.api.HeaderItems.addHeaderItem
POST  /addFooterItem                            controllers.api.FooterItems.addFooterItem
POST  /addFeatured                              controllers.api.Featureds.addFeatured
POST  /addSelectFeatured                        controllers.api.SelectFeatureds.addSelectFeatured
POST  /addSiteWord                              controllers.api.SiteWords.addSiteWord
POST  /editText/:english_id/:french_id          controllers.api.Texts.editText(english_id: String, french_id: String)
POST  /editLink/:english_id/:french_id          controllers.api.Links.editLink(english_id: String, french_id: String)
POST  /editVideo/:english_id/:french_id         controllers.api.Videos.editVideo(english_id: String, french_id: String)
POST  /editAudio/:english_id/:french_id         controllers.api.Audios.editAudio(english_id: String, french_id: String)
POST  /editSite/:english_id/:french_id          controllers.api.Sites.editSite(english_id: String, french_id: String)
POST  /editSlide/:english_id/:french_id         controllers.api.Slides.editSlide(english_id: String, french_id: String)
POST  /editTag/:id                              controllers.api.Tags.editTag(id: String)
POST  /editTagLine/:english_id/:french_id       controllers.api.TagLines.editTagLine(english_id: String, french_id: String)
POST  /editHeaderItem/:english_id/:french_id    controllers.api.HeaderItems.editHeaderItem(english_id: String, french_id: String)
POST  /editFooterItem/:english_id/:french_id    controllers.api.FooterItems.editFooterItem(english_id: String, french_id: String)
POST  /editFeatured/:english_id/:french_id      controllers.api.Featureds.editFeatured(english_id: String, french_id: String)
POST  /editSiteWord/:english_id/:french_id      controllers.api.SiteWords.editSiteWord(english_id: String, french_id: String)
POST  /editSelectFeatured/:english_id/:french_id  controllers.api.SelectFeatureds.editSelectFeatured(english_id: String, french_id: String)
GET   /delete/:id                               controllers.Tagger.delete(id: String)
GET   /delete/tag/:id                           controllers.api.Tags.deleteTag(id: String)

# JSON requests
GET   /api/tags                                     controllers.api.Tags.findByLanguage(language: String)
GET   /api/tags/tagged                              controllers.api.Tags.findByTagged(content_id: String)
GET   /api/tags/manyTagged                          controllers.api.Tags.findByManyTagged(content_ids: String)
GET   /api/tags/tags                                controllers.api.Tags.findByTags(tags: String, language: String)
GET   /api/tags/tag                                 controllers.api.Tags.findById(tag_id: String)
GET   /api/contents                                 controllers.api.Contents.findByTags(tags: String, language: String)
GET   /api/contents/language                        controllers.api.Contents.findByLanguage(language: String)
GET   /api/contents/content                         controllers.api.Contents.findById(id: String)
GET   /api/contents/tagLines                        controllers.api.TagLines.findByLanguage(language: String)
POST  /api/contents/tagLines/sort/:id               controllers.api.TagLines.setPosition(id: String)
GET   /api/contents/headerItems                     controllers.api.HeaderItems.findByLanguage(language: String)
POST  /api/contents/headerItems/sort/:id            controllers.api.HeaderItems.setPosition(id: String)
GET   /api/contents/footerItems                     controllers.api.FooterItems.findByLanguage(language: String)
GET   /api/contents/featured                        controllers.api.Featureds.findByLanguage(language: String)
GET   /api/contents/untagged                        controllers.api.Contents.findUntagged(language: String)
GET   /api/contents/siteWords                       controllers.api.SiteWords.findByLanguage(language: String)
POST  /api/contents/siteWords/sort/:id              controllers.api.SiteWords.setPosition(id: String)
GET   /api/contents/slides                          controllers.api.Slides.findByLanguage(language: String)
GET   /api/contents/selectFeatured                  controllers.api.SelectFeatureds.findByLanguage(language: String)
GET   /api/contents/isSlugUnique/:slug              controllers.api.Contents.isSlugUnique(primaryTag = "none", slug: String)
GET   /api/contents/isSlugUnique/:primaryTag/:slug  controllers.api.Contents.isSlugUnique(primaryTag: String, slug: String)
GET   /api/menuItems/parents/:language              controllers.api.MenuItems.findAllParents(language: String)
GET   /api/menuItems/subMenus/:id/:language         controllers.api.MenuItems.findByParentId(id: String, language: String)
POST  /api/menuItems                                controllers.api.MenuItems.create
POST  /api/menuItems/delete/:id/:deleteSubMenus     controllers.api.MenuItems.deleteMenuItem(id: String, deleteSubMenus: String)
PUT   /api/menuItems                                controllers.api.MenuItems.save
POST  /api/menuItems/sort/:id                       controllers.api.MenuItems.setPosition(id: String)
GET   /api/homeBlocks/:language                     controllers.api.HomeBlocks.findByLanguage(language: String)
PUT   /api/homeBlocks/                              controllers.api.HomeBlocks.save
