@** * Yona, 21st Century Project Hosting SW * * Copyright Yona & Yobi Authors & NAVER Corp. * https://yona.io **@ @import com.fasterxml.jackson.databind.node.ObjectNode @import org.apache.commons.io._ @(project:Project, branches:List[String], recursiveData:List[ObjectNode], branch:String, path:String) @import utils.TemplateHelper._ @import utils.TemplateHelper.Branches._ @import utils.TemplateHelper.CodeBrowser._ @import java.net.URLEncoder @parseFileInfo(files:ObjectNode) = { @fieldText(files, "type") match { case "folder" => { @partial_view_folder(project, files.get("data"), branch, fieldText(files, "path")) } case "file" => { @partial_view_file(project, files, branch, path) } } } @makeBreadCrumbs(pagePath:String) = @{ if(pagePath != null){ var basePath = routes.CodeApp.codeBrowserWithBranch(project.owner, project.name, URLEncoder.encode(branch, "UTF-8"), "").toString() var partialPath = "" pagePath.split("/").toList.map { p => if(partialPath == ""){ partialPath = p } else { partialPath = partialPath + "/" + p } Html("" + p + "") } } } @dir = @{ if(fieldText(recursiveData.last, "type").eq("folder") && path.length != 0){ path + "/" } else { FilenameUtils.getPath(path) } } @pathWithoutFileName(path:String) = @{ if(path.lastIndexOf("/") > 0){ path.substring(0, path.lastIndexOf("/")) } else { "" } } @projectLayout(Messages("menu.code"), project, utils.MenuType.CODE){ @projectMenu(project, utils.MenuType.CODE, "main-menu-only")