def app()

in app/controllers/Application.scala [99:166]


  def app(title: String) = AuthAction.async { request =>
    for {
      sections <-  getSortedSections()
      desks <- getSortedDesks()
      sectionsInDesks <- getSectionsInDesks()
      commissioningDesks <- tagService.getTags(
        Map(
          "limit" -> "200",
          "query" -> "tracking/commissioningdesk/",
          "type" -> "tracking",
          "searchField" -> "path"
        ).toList
      )
    }
    yield {
      val statuses = StatusDatabase.statuses
      val user = request.user

      val jsonConfig = Json.obj(

        ("composer", Json.obj(
          ("create", Json.fromString(ComposerConfig(config).newContentUrl)),
          ("view", Json.fromString(ComposerConfig(config).adminUrl)),
          ("details", Json.fromString(ComposerConfig(config).contentDetails)),
          ("templates", Json.fromString(ComposerConfig(config).templates))
        )),
        ("mediaAtomMaker", Json.obj(
          ("create", Json.fromString(MediaAtomMakerConfig(config).newContentUrl)),
          ("view", Json.fromString(MediaAtomMakerConfig(config).viewContentUrl))
        )),
        ("atomWorkshop", Json.obj(
          ("create", Json.fromString(AtomWorkshopConfig(config).newContentUrl)),
          ("view", Json.fromString(AtomWorkshopConfig(config).viewContentUrl))
        )),
        ("statuses", statuses.asJson),
        ("desks", desks.asJson),
        ("sections", sections.asJson),
        ("sectionsInDesks", sectionsInDesks.asJson), // TODO: Combine desks & sectionsInDesks
        ("priorities", Priorities.all.asJson),
        ("viewerUrl", Json.fromString(config.viewerUrl)),
        ("storyPackagesUrl", Json.fromString(config.storyPackagesUrl)),
        ("presenceUrl", Json.fromString(config.presenceUrl)),
        ("user", parser.parse(user.toJson).getOrElse(Json.Null)),
        ("incopyOpenUrl", Json.fromString(config.incopyOpenUrl)),
        ("incopyExportUrl", Json.fromString(config.incopyExportUrl)),
        ("indesignExportUrl", Json.fromString(config.indesignExportUrl)),
        ("composerRestorerUrl", Json.fromString(config.composerRestorerUrl)),
        ("commissioningDesks", commissioningDesks.map(t => LimitedTag(t.id, t.externalName)).asJson),
        ("atomTypes", config.atomTypes.asJson),
        ("sessionId", Json.fromString(config.sessionId)),
        ("gaId", Json.fromString(config.googleTrackingId)),
        ("tagManagerUrl", Json.fromString(config.tagManagerUrl)),
        ("stage", Json.fromString(config.stage.toString)),
        ("telemetryUrl", Json.fromString(config.telemetryUrl))
      )

      val hasPinboardPermission = permissions.hasPermission(pinboardPermission, request.user.email)

      Ok(views.html.app(
        title,
        Some(user),
        config = jsonConfig,
        gaId = config.googleTrackingId,
        presenceClientLib = config.presenceClientLib,
        maybePinboardLoaderUrl = if(hasPinboardPermission) Some(config.pinboardLoaderUrl) else None
      ))
    }
  }