Compare commits
35 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
7876a60106 | ||
|
|
38e71001cb | ||
|
|
a1307b7464 | ||
|
|
fd413d36ad | ||
|
|
509dfc57ca | ||
|
|
95bdd6228e | ||
|
|
fd1430371a | ||
|
|
437f944c6e | ||
|
|
f64b6e10bb | ||
|
|
5925bd3772 | ||
|
|
fe8d4616db | ||
|
|
99b40974c3 | ||
|
|
c463590ede | ||
|
|
82163eebc2 | ||
|
|
f1e427f926 | ||
|
|
c21dcdca80 | ||
|
|
2ce51472c3 | ||
|
|
514b1aeec1 | ||
|
|
3f34622fe0 | ||
|
|
8c6d5b8178 | ||
|
|
1971c29fd0 | ||
|
|
40ca9b6682 | ||
|
|
81aeed6f6c | ||
|
|
bf50b1bf82 | ||
|
|
1094e8ca2d | ||
|
|
860ccce89b | ||
|
|
59e5993eba | ||
|
|
c08627e5d6 | ||
|
|
3e0bb46699 | ||
|
|
9a972e40ef | ||
|
|
99ad0db1f6 | ||
|
|
12d11bc80c | ||
|
|
dc98079b55 | ||
|
|
88f56126a6 | ||
|
|
313c9976c8 |
@@ -49,6 +49,7 @@ GitBucket has the plug-in system to extend GitBucket from outside of GitBucket.
|
||||
- [gitbucket-desktopnotify-plugin](https://github.com/yoshiyoshifujii/gitbucket-desktopnotify-plugin)
|
||||
- [gitbucket-commitgraphs-plugin](https://github.com/yoshiyoshifujii/gitbucket-commitgraphs-plugin)
|
||||
- [gitbucket-asciidoctor-plugin](https://github.com/lefou/gitbucket-asciidoctor-plugin)
|
||||
- [gitbucket-network-plugin](https://github.com/mrkm4ntr/gitbucket-network-plugin)
|
||||
|
||||
You can find community plugins other than them at [gitbucket community plugins](http://gitbucket-plugins.github.io/).
|
||||
|
||||
@@ -63,6 +64,13 @@ Support
|
||||
|
||||
Release Notes
|
||||
-------------
|
||||
### 4.2 - 2 Jul 2016
|
||||
|
||||
- New UI based on [AdminLTE](https://github.com/almasaeed2010/AdminLTE)
|
||||
- git gc
|
||||
- Issues and Wiki have been possible to be disabled
|
||||
- SMTP configuration test mail
|
||||
|
||||
### 4.1 - 4 Jun 2016
|
||||
|
||||
- Generic ssh user
|
||||
|
||||
26
build.sbt
@@ -1,8 +1,8 @@
|
||||
val Organization = "gitbucket"
|
||||
val Name = "gitbucket"
|
||||
val GitBucketVersion = "4.1.0"
|
||||
val ScalatraVersion = "2.4.0"
|
||||
val JettyVersion = "9.3.6.v20151106"
|
||||
val GitBucketVersion = "4.2.0"
|
||||
val ScalatraVersion = "2.4.1"
|
||||
val JettyVersion = "9.3.9.v20160517"
|
||||
|
||||
lazy val root = (project in file(".")).enablePlugins(SbtTwirl, JettyPlugin)
|
||||
|
||||
@@ -21,8 +21,8 @@ resolvers ++= Seq(
|
||||
)
|
||||
libraryDependencies ++= Seq(
|
||||
"org.scala-lang.modules" %% "scala-java8-compat" % "0.7.0",
|
||||
"org.eclipse.jgit" % "org.eclipse.jgit.http.server" % "4.1.1.201511131810-r",
|
||||
"org.eclipse.jgit" % "org.eclipse.jgit.archive" % "4.1.1.201511131810-r",
|
||||
"org.eclipse.jgit" % "org.eclipse.jgit.http.server" % "4.1.2.201602141800-r",
|
||||
"org.eclipse.jgit" % "org.eclipse.jgit.archive" % "4.1.2.201602141800-r",
|
||||
"org.scalatra" %% "scalatra" % ScalatraVersion,
|
||||
"org.scalatra" %% "scalatra-json" % ScalatraVersion,
|
||||
"org.json4s" %% "json4s-jackson" % "3.3.0",
|
||||
@@ -30,27 +30,27 @@ libraryDependencies ++= Seq(
|
||||
"commons-io" % "commons-io" % "2.4",
|
||||
"io.github.gitbucket" % "solidbase" % "1.0.0",
|
||||
"io.github.gitbucket" % "markedj" % "1.0.9-SNAPSHOT",
|
||||
"org.apache.commons" % "commons-compress" % "1.10",
|
||||
"org.apache.commons" % "commons-compress" % "1.11",
|
||||
"org.apache.commons" % "commons-email" % "1.4",
|
||||
"org.apache.httpcomponents" % "httpclient" % "4.5.1",
|
||||
"org.apache.sshd" % "apache-sshd" % "1.0.0",
|
||||
"org.apache.tika" % "tika-core" % "1.11",
|
||||
"org.apache.tika" % "tika-core" % "1.13",
|
||||
"com.typesafe.slick" %% "slick" % "2.1.0",
|
||||
"com.novell.ldap" % "jldap" % "2009-10-07",
|
||||
"com.h2database" % "h2" % "1.4.190",
|
||||
"mysql" % "mysql-connector-java" % "5.1.38",
|
||||
"com.h2database" % "h2" % "1.4.192",
|
||||
"mysql" % "mysql-connector-java" % "5.1.39",
|
||||
"org.postgresql" % "postgresql" % "9.4.1208",
|
||||
"ch.qos.logback" % "logback-classic" % "1.1.1",
|
||||
"com.zaxxer" % "HikariCP" % "2.4.5",
|
||||
"ch.qos.logback" % "logback-classic" % "1.1.7",
|
||||
"com.zaxxer" % "HikariCP" % "2.4.6",
|
||||
"com.typesafe" % "config" % "1.3.0",
|
||||
"com.typesafe.akka" %% "akka-actor" % "2.3.14",
|
||||
"com.typesafe.akka" %% "akka-actor" % "2.3.15",
|
||||
"fr.brouillard.oss.security.xhub" % "xhub4j-core" % "1.0.0",
|
||||
"com.enragedginger" %% "akka-quartz-scheduler" % "1.4.0-akka-2.3.x" exclude("c3p0","c3p0"),
|
||||
"org.eclipse.jetty" % "jetty-webapp" % JettyVersion % "provided",
|
||||
"javax.servlet" % "javax.servlet-api" % "3.1.0" % "provided",
|
||||
"junit" % "junit" % "4.12" % "test",
|
||||
"org.scalatra" %% "scalatra-scalatest" % ScalatraVersion % "test",
|
||||
"org.scalaz" %% "scalaz-core" % "7.2.0" % "test",
|
||||
"org.scalaz" %% "scalaz-core" % "7.2.4" % "test",
|
||||
"com.wix" % "wix-embedded-mysql" % "1.0.3" % "test",
|
||||
"ru.yandex.qatools.embed" % "postgresql-embedded" % "1.14" % "test"
|
||||
)
|
||||
|
||||
@@ -1,37 +1,54 @@
|
||||
Automatic Schema Updating
|
||||
========
|
||||
GitBucket uses H2 database to manage project and account data. GitBucket updates database schema automatically in the first run after the upgrading.
|
||||
GitBucket updates database schema automatically using [Solidbase](https://github.com/gitbucket/solidbase) in the first run after the upgrading.
|
||||
|
||||
To release a new version of GitBucket, add the version definition to the [gitbucket.core.servlet.AutoUpdate](https://github.com/gitbucket/gitbucket/blob/master/src/main/scala/gitbucket/core/servlet/AutoUpdate.scala) at first.
|
||||
To release a new version of GitBucket, add the version definition to the [gitbucket.core.GitBucketCoreModule](https://github.com/gitbucket/gitbucket/blob/master/src/main/scala/gitbucket/core/GitBucketCoreModule.scala) at first.
|
||||
|
||||
```scala
|
||||
object AutoUpdate {
|
||||
...
|
||||
/**
|
||||
* The history of versions. A head of this sequence is the current GitBucket version.
|
||||
*/
|
||||
val versions = Seq(
|
||||
Version(1, 0)
|
||||
object GitBucketCoreModule extends Module("gitbucket-core",
|
||||
new Version("4.0.0",
|
||||
new LiquibaseMigration("update/gitbucket-core_4.0.xml"),
|
||||
new SqlMigration("update/gitbucket-core_4.0.sql")
|
||||
),
|
||||
new Version("4.1.0"),
|
||||
new Version("4.2.0",
|
||||
new LiquibaseMigration("update/gitbucket-core_4.2.xml")
|
||||
)
|
||||
...
|
||||
```
|
||||
|
||||
Next, add a SQL file which updates database schema into [/src/main/resources/update/](https://github.com/gitbucket/gitbucket/tree/master/src/main/resources/update) as ```MAJOR_MINOR.sql```.
|
||||
|
||||
GitBucket stores the current version to ```GITBUCKET_HOME/version``` and checks it at start-up. If the stored version differs from the actual version, it executes differences of SQL files between the stored version and the actual version. And ```GITBUCKET_HOME/version``` is updated by the actual version.
|
||||
|
||||
We can also add any Scala code for upgrade GitBucket which modifies resources other than database. Override ```Version.update``` like below:
|
||||
|
||||
```scala
|
||||
val versions = Seq(
|
||||
new Version(1, 3){
|
||||
override def update(conn: Connection): Unit = {
|
||||
super.update(conn)
|
||||
// Add any code here!
|
||||
}
|
||||
},
|
||||
Version(1, 2),
|
||||
Version(1, 1),
|
||||
Version(1, 0)
|
||||
)
|
||||
```
|
||||
|
||||
Next, add a XML file which updates database schema into [/src/main/resources/update/](https://github.com/gitbucket/gitbucket/tree/master/src/main/resources/update) with a filenane defined in `GitBucketCoreModule`.
|
||||
|
||||
```xml
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<changeSet>
|
||||
<addColumn tableName="REPOSITORY">
|
||||
<column name="ENABLE_WIKI" type="boolean" nullable="false" defaultValueBoolean="true"/>
|
||||
<column name="ENABLE_ISSUES" type="boolean" nullable="false" defaultValueBoolean="true"/>
|
||||
<column name="EXTERNAL_WIKI_URL" type="varchar(200)" nullable="true"/>
|
||||
<column name="EXTERNAL_ISSUES_URL" type="varchar(200)" nullable="true"/>
|
||||
</addColumn>
|
||||
</changeSet>
|
||||
```
|
||||
|
||||
Solidbase stores the current version to `VERSIONS` table and checks it at start-up. If the stored version differs from the actual version, it executes differences between the stored version and the actual version.
|
||||
|
||||
We can add the SQL file instead of the XML file using `SqlMigration`. It try to load a SQL file from classpath as following order:
|
||||
|
||||
1. Specified path (if specified)
|
||||
2. `${moduleId}_${version}_${database}.sql`
|
||||
3. `${moduleId}_${version}.sql`
|
||||
|
||||
Also we can add any code by extending `Migration`:
|
||||
|
||||
```scala
|
||||
object GitBucketCoreModule extends Module("gitbucket-core",
|
||||
new Version("4.0.0", new Migration(){
|
||||
override def migrate(moduleId: String, version: String, context: java.util.Map[String, String]): Unit = {
|
||||
...
|
||||
}
|
||||
})
|
||||
)
|
||||
```
|
||||
|
||||
See more details [README of Solidbase](https://github.com/gitbucket/solidbase).
|
||||
|
||||
@@ -20,13 +20,13 @@ val JettyVersion = "9.3.6.v20151106"
|
||||
|
||||
```scala
|
||||
object GitBucketCoreModule extends Module("gitbucket-core",
|
||||
// add new version definition
|
||||
new Version("4.1.0",
|
||||
new LiquibaseMigration("update/gitbucket-core_4.1.xml")
|
||||
),
|
||||
new Version("4.0.0",
|
||||
new LiquibaseMigration("update/gitbucket-core_4.0.xml"),
|
||||
new SqlMigration("update/gitbucket-core_4.0.sql")
|
||||
),
|
||||
// add new version definition
|
||||
new Version("4.1.0",
|
||||
new LiquibaseMigration("update/gitbucket-core_4.1.xml")
|
||||
)
|
||||
)
|
||||
```
|
||||
@@ -41,7 +41,7 @@ Note: Release operation requires [Ant](http://ant.apache.org/) and [Maven](https
|
||||
Run `sbt executable`. The release war file and fingerprint are generated into `target/executable/gitbucket.war`.
|
||||
|
||||
```bash
|
||||
$sbt executable
|
||||
$ sbt executable
|
||||
```
|
||||
|
||||
### Deploy assembly jar file
|
||||
|
||||
@@ -1 +1 @@
|
||||
sbt.version=0.13.9
|
||||
sbt.version=0.13.11
|
||||
|
||||
10
src/main/resources/update/gitbucket-core_4.2.xml
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<changeSet>
|
||||
<addColumn tableName="REPOSITORY">
|
||||
<column name="ENABLE_ISSUES" type="boolean" nullable="false" defaultValueBoolean="true"/>
|
||||
<column name="EXTERNAL_ISSUES_URL" type="varchar(200)" nullable="true"/>
|
||||
<column name="ENABLE_WIKI" type="boolean" nullable="false" defaultValueBoolean="true"/>
|
||||
<column name="ALLOW_WIKI_EDITING" type="boolean" nullable="false" defaultValueBoolean="false"/>
|
||||
<column name="EXTERNAL_WIKI_URL" type="varchar(200)" nullable="true"/>
|
||||
</addColumn>
|
||||
</changeSet>
|
||||
@@ -4,9 +4,12 @@ import io.github.gitbucket.solidbase.migration.{SqlMigration, LiquibaseMigration
|
||||
import io.github.gitbucket.solidbase.model.{Version, Module}
|
||||
|
||||
object GitBucketCoreModule extends Module("gitbucket-core",
|
||||
new Version("4.1.0"),
|
||||
new Version("4.0.0",
|
||||
new LiquibaseMigration("update/gitbucket-core_4.0.xml"),
|
||||
new SqlMigration("update/gitbucket-core_4.0.sql")
|
||||
),
|
||||
new Version("4.1.0"),
|
||||
new Version("4.2.0",
|
||||
new LiquibaseMigration("update/gitbucket-core_4.2.xml")
|
||||
)
|
||||
)
|
||||
|
||||
@@ -27,12 +27,26 @@ trait RepositorySettingsControllerBase extends ControllerBase {
|
||||
with OwnerAuthenticator with UsersAuthenticator =>
|
||||
|
||||
// for repository options
|
||||
case class OptionsForm(repositoryName: String, description: Option[String], isPrivate: Boolean)
|
||||
case class OptionsForm(
|
||||
repositoryName: String,
|
||||
description: Option[String],
|
||||
isPrivate: Boolean,
|
||||
enableIssues: Boolean,
|
||||
externalIssuesUrl: Option[String],
|
||||
enableWiki: Boolean,
|
||||
allowWikiEditing: Boolean,
|
||||
externalWikiUrl: Option[String]
|
||||
)
|
||||
|
||||
val optionsForm = mapping(
|
||||
"repositoryName" -> trim(label("Repository Name", text(required, maxlength(40), identifier, renameRepositoryName))),
|
||||
"description" -> trim(label("Description" , optional(text()))),
|
||||
"isPrivate" -> trim(label("Repository Type", boolean()))
|
||||
"repositoryName" -> trim(label("Repository Name" , text(required, maxlength(40), identifier, renameRepositoryName))),
|
||||
"description" -> trim(label("Description" , optional(text()))),
|
||||
"isPrivate" -> trim(label("Repository Type" , boolean())),
|
||||
"enableIssues" -> trim(label("Enable Issues" , boolean())),
|
||||
"externalIssuesUrl" -> trim(label("External Issues URL", optional(text(maxlength(200))))),
|
||||
"enableWiki" -> trim(label("Enable Wiki" , boolean())),
|
||||
"allowWikiEditing" -> trim(label("Allow Wiki Editing" , boolean())),
|
||||
"externalWikiUrl" -> trim(label("External Wiki URL" , optional(text(maxlength(200)))))
|
||||
)(OptionsForm.apply)
|
||||
|
||||
// for default branch
|
||||
@@ -92,7 +106,12 @@ trait RepositorySettingsControllerBase extends ControllerBase {
|
||||
form.description,
|
||||
repository.repository.parentUserName.map { _ =>
|
||||
repository.repository.isPrivate
|
||||
} getOrElse form.isPrivate
|
||||
} getOrElse form.isPrivate,
|
||||
form.enableIssues,
|
||||
form.externalIssuesUrl,
|
||||
form.enableWiki,
|
||||
form.allowWikiEditing,
|
||||
form.externalWikiUrl
|
||||
)
|
||||
// Change repository name
|
||||
if(repository.name != form.repositoryName){
|
||||
@@ -294,7 +313,7 @@ trait RepositorySettingsControllerBase extends ControllerBase {
|
||||
* Display the danger zone.
|
||||
*/
|
||||
get("/:owner/:repository/settings/danger")(ownerOnly {
|
||||
html.danger(_)
|
||||
html.danger(_, flash.get("info"))
|
||||
})
|
||||
|
||||
/**
|
||||
@@ -333,6 +352,19 @@ trait RepositorySettingsControllerBase extends ControllerBase {
|
||||
redirect(s"/${repository.owner}")
|
||||
})
|
||||
|
||||
/**
|
||||
* Run GC
|
||||
*/
|
||||
post("/:owner/:repository/settings/gc")(ownerOnly { repository =>
|
||||
LockUtil.lock(s"${repository.owner}/${repository.name}") {
|
||||
using(Git.open(getRepositoryDir(repository.owner, repository.name))) { git =>
|
||||
git.gc();
|
||||
}
|
||||
}
|
||||
flash += "info" -> "Garbage collection has been executed."
|
||||
redirect(s"/${repository.owner}/${repository.name}/settings/danger")
|
||||
})
|
||||
|
||||
/**
|
||||
* Provides duplication check for web hook url.
|
||||
*/
|
||||
|
||||
@@ -691,8 +691,6 @@ trait RepositoryViewerControllerBase extends ControllerBase {
|
||||
private def isEditable(owner: String, repository: String, author: String)(implicit context: Context): Boolean =
|
||||
hasWritePermission(owner, repository, context.loginAccount) || author == context.loginAccount.get.userName
|
||||
|
||||
|
||||
|
||||
override protected def renderUncaughtException(e: Throwable)(implicit request: HttpServletRequest, response: HttpServletResponse): Unit = {
|
||||
e.printStackTrace()
|
||||
}
|
||||
|
||||
@@ -3,8 +3,8 @@ package gitbucket.core.controller
|
||||
import java.io.FileInputStream
|
||||
|
||||
import gitbucket.core.admin.html
|
||||
import gitbucket.core.service.{AccountService, SystemSettingsService, RepositoryService}
|
||||
import gitbucket.core.util.AdminAuthenticator
|
||||
import gitbucket.core.service.{AccountService, RepositoryService, SystemSettingsService}
|
||||
import gitbucket.core.util.{AdminAuthenticator, Mailer}
|
||||
import gitbucket.core.ssh.SshServer
|
||||
import gitbucket.core.plugin.PluginRegistry
|
||||
import SystemSettingsService._
|
||||
@@ -13,7 +13,8 @@ import gitbucket.core.util.ControlUtil._
|
||||
import gitbucket.core.util.Directory._
|
||||
import gitbucket.core.util.StringUtil._
|
||||
import io.github.gitbucket.scalatra.forms._
|
||||
import org.apache.commons.io.{IOUtils, FileUtils}
|
||||
import org.apache.commons.io.{FileUtils, IOUtils}
|
||||
import org.apache.commons.mail.{DefaultAuthenticator, HtmlEmail}
|
||||
import org.scalatra.i18n.Messages
|
||||
|
||||
class SystemSettingsController extends SystemSettingsControllerBase
|
||||
@@ -70,11 +71,20 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase {
|
||||
).flatten
|
||||
}
|
||||
|
||||
private val pluginForm = mapping(
|
||||
"pluginId" -> list(trim(label("", text())))
|
||||
)(PluginForm.apply)
|
||||
private val sendMailForm = mapping(
|
||||
"smtp" -> mapping(
|
||||
"host" -> trim(label("SMTP Host", text(required))),
|
||||
"port" -> trim(label("SMTP Port", optional(number()))),
|
||||
"user" -> trim(label("SMTP User", optional(text()))),
|
||||
"password" -> trim(label("SMTP Password", optional(text()))),
|
||||
"ssl" -> trim(label("Enable SSL", optional(boolean()))),
|
||||
"fromAddress" -> trim(label("FROM Address", optional(text()))),
|
||||
"fromName" -> trim(label("FROM Name", optional(text())))
|
||||
)(Smtp.apply),
|
||||
"testAddress" -> trim(label("", text(required)))
|
||||
)(SendMailForm.apply)
|
||||
|
||||
case class PluginForm(pluginIds: List[String])
|
||||
case class SendMailForm(smtp: Smtp, testAddress: String)
|
||||
|
||||
case class DataExportForm(tableNames: List[String])
|
||||
|
||||
@@ -152,6 +162,18 @@ trait SystemSettingsControllerBase extends AccountManagementControllerBase {
|
||||
redirect("/admin/system")
|
||||
})
|
||||
|
||||
post("/admin/system/sendmail", sendMailForm)(adminOnly { form =>
|
||||
try {
|
||||
new Mailer(form.smtp).send(form.testAddress,
|
||||
"Test message from GitBucket", "This is a test message from GitBucket.")
|
||||
|
||||
"Test mail has been sent to: " + form.testAddress
|
||||
|
||||
} catch {
|
||||
case e: Exception => "[Error] " + e.toString
|
||||
}
|
||||
})
|
||||
|
||||
get("/admin/plugins")(adminOnly {
|
||||
html.plugins(PluginRegistry().getPlugins())
|
||||
})
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
package gitbucket.core.controller
|
||||
|
||||
import gitbucket.core.service.RepositoryService.RepositoryInfo
|
||||
import gitbucket.core.wiki.html
|
||||
import gitbucket.core.service.{RepositoryService, WikiService, ActivityService, AccountService}
|
||||
import gitbucket.core.service.{AccountService, ActivityService, RepositoryService, WikiService}
|
||||
import gitbucket.core.util._
|
||||
import gitbucket.core.util.StringUtil._
|
||||
import gitbucket.core.util.ControlUtil._
|
||||
@@ -39,7 +40,7 @@ trait WikiControllerBase extends ControllerBase {
|
||||
get("/:owner/:repository/wiki")(referrersOnly { repository =>
|
||||
getWikiPage(repository.owner, repository.name, "Home").map { page =>
|
||||
html.page("Home", page, getWikiPageList(repository.owner, repository.name),
|
||||
repository, hasWritePermission(repository.owner, repository.name, context.loginAccount),
|
||||
repository, isEditable(repository),
|
||||
getWikiPage(repository.owner, repository.name, "_Sidebar"),
|
||||
getWikiPage(repository.owner, repository.name, "_Footer"))
|
||||
} getOrElse redirect(s"/${repository.owner}/${repository.name}/wiki/Home/_edit")
|
||||
@@ -50,7 +51,7 @@ trait WikiControllerBase extends ControllerBase {
|
||||
|
||||
getWikiPage(repository.owner, repository.name, pageName).map { page =>
|
||||
html.page(pageName, page, getWikiPageList(repository.owner, repository.name),
|
||||
repository, hasWritePermission(repository.owner, repository.name, context.loginAccount),
|
||||
repository, isEditable(repository),
|
||||
getWikiPage(repository.owner, repository.name, "_Sidebar"),
|
||||
getWikiPage(repository.owner, repository.name, "_Footer"))
|
||||
} getOrElse redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}/_edit")
|
||||
@@ -62,7 +63,7 @@ trait WikiControllerBase extends ControllerBase {
|
||||
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))){ git =>
|
||||
JGitUtil.getCommitLog(git, "master", path = pageName + ".md") match {
|
||||
case Right((logs, hasNext)) => html.history(Some(pageName), logs, repository)
|
||||
case Left(_) => NotFound
|
||||
case Left(_) => NotFound()
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -73,7 +74,7 @@ trait WikiControllerBase extends ControllerBase {
|
||||
|
||||
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))){ git =>
|
||||
html.compare(Some(pageName), from, to, JGitUtil.getDiffs(git, from, to, true).filter(_.newPath == pageName + ".md"), repository,
|
||||
hasWritePermission(repository.owner, repository.name, context.loginAccount), flash.get("info"))
|
||||
isEditable(repository), flash.get("info"))
|
||||
}
|
||||
})
|
||||
|
||||
@@ -82,102 +83,115 @@ trait WikiControllerBase extends ControllerBase {
|
||||
|
||||
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))){ git =>
|
||||
html.compare(None, from, to, JGitUtil.getDiffs(git, from, to, true), repository,
|
||||
hasWritePermission(repository.owner, repository.name, context.loginAccount), flash.get("info"))
|
||||
isEditable(repository), flash.get("info"))
|
||||
}
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/:page/_revert/:commitId")(collaboratorsOnly { repository =>
|
||||
val pageName = StringUtil.urlDecode(params("page"))
|
||||
val Array(from, to) = params("commitId").split("\\.\\.\\.")
|
||||
get("/:owner/:repository/wiki/:page/_revert/:commitId")(referrersOnly { repository =>
|
||||
if(isEditable(repository)){
|
||||
val pageName = StringUtil.urlDecode(params("page"))
|
||||
val Array(from, to) = params("commitId").split("\\.\\.\\.")
|
||||
|
||||
if(revertWikiPage(repository.owner, repository.name, from, to, context.loginAccount.get, Some(pageName))){
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}")
|
||||
} else {
|
||||
flash += "info" -> "This patch was not able to be reversed."
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}/_compare/${from}...${to}")
|
||||
}
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/_revert/:commitId")(collaboratorsOnly { repository =>
|
||||
val Array(from, to) = params("commitId").split("\\.\\.\\.")
|
||||
|
||||
if(revertWikiPage(repository.owner, repository.name, from, to, context.loginAccount.get, None)){
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/")
|
||||
} else {
|
||||
flash += "info" -> "This patch was not able to be reversed."
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/_compare/${from}...${to}")
|
||||
}
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/:page/_edit")(collaboratorsOnly { repository =>
|
||||
val pageName = StringUtil.urlDecode(params("page"))
|
||||
html.edit(pageName, getWikiPage(repository.owner, repository.name, pageName), repository)
|
||||
})
|
||||
|
||||
post("/:owner/:repository/wiki/_edit", editForm)(collaboratorsOnly { (form, repository) =>
|
||||
defining(context.loginAccount.get){ loginAccount =>
|
||||
saveWikiPage(
|
||||
repository.owner,
|
||||
repository.name,
|
||||
form.currentPageName,
|
||||
form.pageName,
|
||||
appendNewLine(convertLineSeparator(form.content, "LF"), "LF"),
|
||||
loginAccount,
|
||||
form.message.getOrElse(""),
|
||||
Some(form.id)
|
||||
).map { commitId =>
|
||||
updateLastActivityDate(repository.owner, repository.name)
|
||||
recordEditWikiPageActivity(repository.owner, repository.name, loginAccount.userName, form.pageName, commitId)
|
||||
}
|
||||
if(notReservedPageName(form.pageName)) {
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(form.pageName)}")
|
||||
if(revertWikiPage(repository.owner, repository.name, from, to, context.loginAccount.get, Some(pageName))){
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}")
|
||||
} else {
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki")
|
||||
flash += "info" -> "This patch was not able to be reversed."
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(pageName)}/_compare/${from}...${to}")
|
||||
}
|
||||
}
|
||||
} else Unauthorized()
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/_revert/:commitId")(referrersOnly { repository =>
|
||||
if(isEditable(repository)){
|
||||
val Array(from, to) = params("commitId").split("\\.\\.\\.")
|
||||
|
||||
if(revertWikiPage(repository.owner, repository.name, from, to, context.loginAccount.get, None)){
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/")
|
||||
} else {
|
||||
flash += "info" -> "This patch was not able to be reversed."
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/_compare/${from}...${to}")
|
||||
}
|
||||
} else Unauthorized()
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/:page/_edit")(referrersOnly { repository =>
|
||||
if(isEditable(repository)){
|
||||
val pageName = StringUtil.urlDecode(params("page"))
|
||||
html.edit(pageName, getWikiPage(repository.owner, repository.name, pageName), repository)
|
||||
} else Unauthorized()
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/_new")(collaboratorsOnly {
|
||||
html.edit("", None, _)
|
||||
post("/:owner/:repository/wiki/_edit", editForm)(referrersOnly { (form, repository) =>
|
||||
if(isEditable(repository)){
|
||||
defining(context.loginAccount.get){ loginAccount =>
|
||||
saveWikiPage(
|
||||
repository.owner,
|
||||
repository.name,
|
||||
form.currentPageName,
|
||||
form.pageName,
|
||||
appendNewLine(convertLineSeparator(form.content, "LF"), "LF"),
|
||||
loginAccount,
|
||||
form.message.getOrElse(""),
|
||||
Some(form.id)
|
||||
).map { commitId =>
|
||||
updateLastActivityDate(repository.owner, repository.name)
|
||||
recordEditWikiPageActivity(repository.owner, repository.name, loginAccount.userName, form.pageName, commitId)
|
||||
}
|
||||
if(notReservedPageName(form.pageName)) {
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(form.pageName)}")
|
||||
} else {
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki")
|
||||
}
|
||||
}
|
||||
} else Unauthorized()
|
||||
})
|
||||
|
||||
post("/:owner/:repository/wiki/_new", newForm)(collaboratorsOnly { (form, repository) =>
|
||||
defining(context.loginAccount.get){ loginAccount =>
|
||||
saveWikiPage(repository.owner, repository.name, form.currentPageName, form.pageName,
|
||||
get("/:owner/:repository/wiki/_new")(referrersOnly { repository =>
|
||||
if(isEditable(repository)){
|
||||
html.edit("", None, repository)
|
||||
} else Unauthorized()
|
||||
})
|
||||
|
||||
post("/:owner/:repository/wiki/_new", newForm)(referrersOnly { (form, repository) =>
|
||||
if(isEditable(repository)){
|
||||
defining(context.loginAccount.get){ loginAccount =>
|
||||
saveWikiPage(repository.owner, repository.name, form.currentPageName, form.pageName,
|
||||
form.content, loginAccount, form.message.getOrElse(""), None)
|
||||
|
||||
updateLastActivityDate(repository.owner, repository.name)
|
||||
recordCreateWikiPageActivity(repository.owner, repository.name, loginAccount.userName, form.pageName)
|
||||
updateLastActivityDate(repository.owner, repository.name)
|
||||
recordCreateWikiPageActivity(repository.owner, repository.name, loginAccount.userName, form.pageName)
|
||||
|
||||
if(notReservedPageName(form.pageName)) {
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(form.pageName)}")
|
||||
} else {
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki")
|
||||
if(notReservedPageName(form.pageName)) {
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki/${StringUtil.urlEncode(form.pageName)}")
|
||||
} else {
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki")
|
||||
}
|
||||
}
|
||||
}
|
||||
} else Unauthorized()
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/:page/_delete")(collaboratorsOnly { repository =>
|
||||
val pageName = StringUtil.urlDecode(params("page"))
|
||||
get("/:owner/:repository/wiki/:page/_delete")(referrersOnly { repository =>
|
||||
if(isEditable(repository)){
|
||||
val pageName = StringUtil.urlDecode(params("page"))
|
||||
|
||||
defining(context.loginAccount.get){ loginAccount =>
|
||||
deleteWikiPage(repository.owner, repository.name, pageName, loginAccount.fullName, loginAccount.mailAddress, s"Destroyed ${pageName}")
|
||||
updateLastActivityDate(repository.owner, repository.name)
|
||||
defining(context.loginAccount.get){ loginAccount =>
|
||||
deleteWikiPage(repository.owner, repository.name, pageName, loginAccount.fullName, loginAccount.mailAddress, s"Destroyed ${pageName}")
|
||||
updateLastActivityDate(repository.owner, repository.name)
|
||||
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki")
|
||||
}
|
||||
redirect(s"/${repository.owner}/${repository.name}/wiki")
|
||||
}
|
||||
} else Unauthorized()
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/_pages")(referrersOnly { repository =>
|
||||
html.pages(getWikiPageList(repository.owner, repository.name), repository,
|
||||
hasWritePermission(repository.owner, repository.name, context.loginAccount))
|
||||
html.pages(getWikiPageList(repository.owner, repository.name), repository, isEditable(repository))
|
||||
})
|
||||
|
||||
get("/:owner/:repository/wiki/_history")(referrersOnly { repository =>
|
||||
using(Git.open(getWikiRepositoryDir(repository.owner, repository.name))){ git =>
|
||||
JGitUtil.getCommitLog(git, "master") match {
|
||||
case Right((logs, hasNext)) => html.history(None, logs, repository)
|
||||
case Left(_) => NotFound
|
||||
case Left(_) => NotFound()
|
||||
}
|
||||
}
|
||||
})
|
||||
@@ -226,4 +240,9 @@ trait WikiControllerBase extends ControllerBase {
|
||||
|
||||
private def targetWikiPage = getWikiPage(params("owner"), params("repository"), params("pageName"))
|
||||
|
||||
private def isEditable(repository: RepositoryInfo)(implicit context: Context): Boolean =
|
||||
repository.repository.allowWikiEditing || (
|
||||
hasWritePermission(repository.owner, repository.name, context.loginAccount)
|
||||
)
|
||||
|
||||
}
|
||||
|
||||
@@ -17,7 +17,14 @@ trait RepositoryComponent extends TemplateComponent { self: Profile =>
|
||||
val originRepositoryName = column[String]("ORIGIN_REPOSITORY_NAME")
|
||||
val parentUserName = column[String]("PARENT_USER_NAME")
|
||||
val parentRepositoryName = column[String]("PARENT_REPOSITORY_NAME")
|
||||
def * = (userName, repositoryName, isPrivate, description.?, defaultBranch, registeredDate, updatedDate, lastActivityDate, originUserName.?, originRepositoryName.?, parentUserName.?, parentRepositoryName.?) <> (Repository.tupled, Repository.unapply)
|
||||
val enableIssues = column[Boolean]("ENABLE_ISSUES")
|
||||
val externalIssuesUrl = column[String]("EXTERNAL_ISSUES_URL")
|
||||
val enableWiki = column[Boolean]("ENABLE_WIKI")
|
||||
val allowWikiEditing = column[Boolean]("ALLOW_WIKI_EDITING")
|
||||
val externalWikiUrl = column[String]("EXTERNAL_WIKI_URL")
|
||||
def * = (userName, repositoryName, isPrivate, description.?, defaultBranch,
|
||||
registeredDate, updatedDate, lastActivityDate, originUserName.?, originRepositoryName.?, parentUserName.?, parentRepositoryName.?,
|
||||
enableIssues, externalIssuesUrl.?, enableWiki, allowWikiEditing, externalWikiUrl.?) <> (Repository.tupled, Repository.unapply)
|
||||
|
||||
def byPrimaryKey(owner: String, repository: String) = byRepository(owner, repository)
|
||||
}
|
||||
@@ -35,5 +42,10 @@ case class Repository(
|
||||
originUserName: Option[String],
|
||||
originRepositoryName: Option[String],
|
||||
parentUserName: Option[String],
|
||||
parentRepositoryName: Option[String]
|
||||
parentRepositoryName: Option[String],
|
||||
enableIssues: Boolean,
|
||||
externalIssuesUrl: Option[String],
|
||||
enableWiki: Boolean,
|
||||
allowWikiEditing: Boolean,
|
||||
externalWikiUrl: Option[String]
|
||||
)
|
||||
|
||||
@@ -18,7 +18,7 @@ trait IssuesService {
|
||||
import IssuesService._
|
||||
|
||||
def getIssue(owner: String, repository: String, issueId: String)(implicit s: Session) =
|
||||
if (issueId forall (_.isDigit))
|
||||
if (isInteger(issueId))
|
||||
Issues filter (_.byPrimaryKey(owner, repository, issueId.toInt)) firstOption
|
||||
else None
|
||||
|
||||
|
||||
@@ -36,7 +36,13 @@ trait RepositoryService { self: AccountService =>
|
||||
originUserName = originUserName,
|
||||
originRepositoryName = originRepositoryName,
|
||||
parentUserName = parentUserName,
|
||||
parentRepositoryName = parentRepositoryName)
|
||||
parentRepositoryName = parentRepositoryName,
|
||||
enableIssues = true,
|
||||
externalIssuesUrl = None,
|
||||
enableWiki = true,
|
||||
allowWikiEditing = true,
|
||||
externalWikiUrl = None
|
||||
)
|
||||
|
||||
IssueId insert (userName, repositoryName, 0)
|
||||
}
|
||||
@@ -222,7 +228,7 @@ trait RepositoryService { self: AccountService =>
|
||||
* Include public repository, private own repository and private but collaborator repository.
|
||||
*
|
||||
* @param userName the user name of collaborator
|
||||
* @return the repository infomation list
|
||||
* @return the repository information list
|
||||
*/
|
||||
def getAllRepositories(userName: String)(implicit s: Session): List[(String, String)] = {
|
||||
Repositories.filter { t1 =>
|
||||
@@ -313,10 +319,12 @@ trait RepositoryService { self: AccountService =>
|
||||
* Save repository options.
|
||||
*/
|
||||
def saveRepositoryOptions(userName: String, repositoryName: String,
|
||||
description: Option[String], isPrivate: Boolean)(implicit s: Session): Unit =
|
||||
description: Option[String], isPrivate: Boolean,
|
||||
enableIssues: Boolean, externalIssuesUrl: Option[String],
|
||||
enableWiki: Boolean, allowWikiEditing: Boolean, externalWikiUrl: Option[String])(implicit s: Session): Unit =
|
||||
Repositories.filter(_.byRepository(userName, repositoryName))
|
||||
.map { r => (r.description.?, r.isPrivate, r.updatedDate) }
|
||||
.update (description, isPrivate, currentDate)
|
||||
.map { r => (r.description.?, r.isPrivate, r.enableIssues, r.externalIssuesUrl.?, r.enableWiki, r.allowWikiEditing, r.externalWikiUrl.?, r.updatedDate) }
|
||||
.update (description, isPrivate, enableIssues, externalIssuesUrl, enableWiki, allowWikiEditing, externalWikiUrl, currentDate)
|
||||
|
||||
def saveRepositoryDefaultBranch(userName: String, repositoryName: String,
|
||||
defaultBranch: String)(implicit s: Session): Unit =
|
||||
|
||||
@@ -119,7 +119,7 @@ trait WebHookService {
|
||||
}
|
||||
case WebHookContentType.JSON => {
|
||||
httpPost.setEntity(EntityBuilder.create().setText(json).build())
|
||||
if (!webHook.token.isEmpty) {
|
||||
if (webHook.token.exists(_.trim.nonEmpty)) {
|
||||
httpPost.addHeader("X-Hub-Signature", XHub.generateHeaderXHubToken(XHubConverter.HEXA_LOWERCASE, XHubDigest.SHA1, webHook.token.orNull, json.getBytes("UTF-8")))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -84,26 +84,7 @@ class Mailer(private val smtp: Smtp) extends Notifier {
|
||||
enableLineBreaks = false
|
||||
))) { case (subject, msg) =>
|
||||
recipients(issue) { to =>
|
||||
val email = new HtmlEmail
|
||||
email.setHostName(smtp.host)
|
||||
email.setSmtpPort(smtp.port.get)
|
||||
smtp.user.foreach { user =>
|
||||
email.setAuthenticator(new DefaultAuthenticator(user, smtp.password.getOrElse("")))
|
||||
}
|
||||
smtp.ssl.foreach { ssl =>
|
||||
email.setSSLOnConnect(ssl)
|
||||
}
|
||||
smtp.fromAddress
|
||||
.map (_ -> smtp.fromName.getOrElse(context.loginAccount.get.userName))
|
||||
.orElse (Some("notifications@gitbucket.com" -> context.loginAccount.get.userName))
|
||||
.foreach { case (address, name) =>
|
||||
email.setFrom(address, name)
|
||||
}
|
||||
email.setCharset("UTF-8")
|
||||
email.setSubject(subject)
|
||||
email.setHtmlMsg(msg)
|
||||
|
||||
email.addTo(to).send
|
||||
send(to, subject, msg)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -116,6 +97,30 @@ class Mailer(private val smtp: Smtp) extends Notifier {
|
||||
case t => logger.error("Notifications Failed.", t)
|
||||
}
|
||||
}
|
||||
|
||||
def send(to: String, subject: String, msg: String)(implicit context: Context): Unit = {
|
||||
val email = new HtmlEmail
|
||||
email.setHostName(smtp.host)
|
||||
email.setSmtpPort(smtp.port.get)
|
||||
smtp.user.foreach { user =>
|
||||
email.setAuthenticator(new DefaultAuthenticator(user, smtp.password.getOrElse("")))
|
||||
}
|
||||
smtp.ssl.foreach { ssl =>
|
||||
email.setSSLOnConnect(ssl)
|
||||
}
|
||||
smtp.fromAddress
|
||||
.map (_ -> smtp.fromName.getOrElse(context.loginAccount.get.userName))
|
||||
.orElse (Some("notifications@gitbucket.com" -> context.loginAccount.get.userName))
|
||||
.foreach { case (address, name) =>
|
||||
email.setFrom(address, name)
|
||||
}
|
||||
email.setCharset("UTF-8")
|
||||
email.setSubject(subject)
|
||||
email.setHtmlMsg(msg)
|
||||
|
||||
email.addTo(to).send
|
||||
}
|
||||
|
||||
}
|
||||
class MockMailer extends Notifier {
|
||||
def toNotify(r: RepositoryService.RepositoryInfo, issue: Issue, content: String)
|
||||
|
||||
@@ -5,6 +5,7 @@ import org.mozilla.universalchardet.UniversalDetector
|
||||
import ControlUtil._
|
||||
import org.apache.commons.io.input.BOMInputStream
|
||||
import org.apache.commons.io.IOUtils
|
||||
import scala.util.control.Exception._
|
||||
|
||||
object StringUtil {
|
||||
|
||||
@@ -26,6 +27,8 @@ object StringUtil {
|
||||
|
||||
def splitWords(value: String): Array[String] = value.split("[ \\t ]+")
|
||||
|
||||
def isInteger(value: String): Boolean = allCatch opt { value.toInt } map(_ => true) getOrElse(false)
|
||||
|
||||
def escapeHtml(value: String): String =
|
||||
value.replace("&", "&").replace("<", "<").replace(">", ">").replace("\"", """)
|
||||
|
||||
|
||||
@@ -222,8 +222,14 @@ object helpers extends AvatarImageProvider with LinkConverter with RequestCache
|
||||
* Generates the avatar link to the account page.
|
||||
* If user does not exist or disabled, this method returns avatar image without link.
|
||||
*/
|
||||
def avatarLink(userName: String, size: Int, mailAddress: String = "", tooltip: Boolean = false)(implicit context: Context): Html =
|
||||
userWithContent(userName, mailAddress)(avatar(userName, size, tooltip, mailAddress))
|
||||
def avatarLink(userName: String, size: Int, mailAddress: String = "", tooltip: Boolean = false, label: Boolean = false)
|
||||
(implicit context: Context): Html = {
|
||||
|
||||
val avatarHtml = avatar(userName, size, tooltip, mailAddress)
|
||||
val contentHtml = if(label == true) Html(avatarHtml.body + " " + userName) else avatarHtml
|
||||
|
||||
userWithContent(userName, mailAddress)(contentHtml)
|
||||
}
|
||||
|
||||
/**
|
||||
* Generates the avatar link to the account page.
|
||||
@@ -232,7 +238,8 @@ object helpers extends AvatarImageProvider with LinkConverter with RequestCache
|
||||
def avatarLink(commit: JGitUtil.CommitInfo, size: Int)(implicit context: Context): Html =
|
||||
userWithContent(commit.authorName, commit.authorEmailAddress)(avatar(commit, size))
|
||||
|
||||
private def userWithContent(userName: String, mailAddress: String = "", styleClass: String = "")(content: Html)(implicit context: Context): Html =
|
||||
private def userWithContent(userName: String, mailAddress: String = "", styleClass: String = "")(content: Html)
|
||||
(implicit context: Context): Html =
|
||||
(if(mailAddress.isEmpty){
|
||||
getAccountByUserName(userName)
|
||||
} else {
|
||||
|
||||
@@ -2,8 +2,10 @@
|
||||
@import context._
|
||||
@import gitbucket.core.view.helpers._
|
||||
@html.main(if(account.isEmpty) "Create group" else "Edit group"){
|
||||
<div class="body main-center">
|
||||
<form id="form" method="post" action="@if(account.isEmpty){@path/groups/new} else {@path/@account.get.userName/_editgroup}" validate="true">
|
||||
<div class="content-wrapper main-center">
|
||||
<div class="content body">
|
||||
<h2>@{if(account.isEmpty) "Create group" else "Edit group"}</h2>
|
||||
<form id="form" method="post" action="@if(account.isEmpty){@path/groups/new} else {@path/@account.get.userName/_editgroup}" validate="true">
|
||||
<div class="row">
|
||||
<div class="col-md-5">
|
||||
<fieldset class="form-group">
|
||||
@@ -39,7 +41,7 @@
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<fieldset class="margin">
|
||||
<fieldset class="border-top">
|
||||
@if(account.isDefined){
|
||||
<div class="pull-right">
|
||||
<a href="@url(account.get.userName)/_deletegroup" id="delete" class="btn btn-danger">Delete Group</a>
|
||||
@@ -50,7 +52,8 @@
|
||||
<a href="@url(account.get.userName)" class="btn btn-default">Cancel</a>
|
||||
}
|
||||
</fieldset>
|
||||
</form>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<script>
|
||||
|
||||
@@ -3,29 +3,37 @@
|
||||
@import context._
|
||||
@import gitbucket.core.view.helpers._
|
||||
@html.main(account.userName){
|
||||
<div class="container body">
|
||||
<div class="main-sidebar">
|
||||
<div class="block">
|
||||
<div class="account-image">@avatar(account.userName, 240)</div>
|
||||
<div class="account-fullname">@account.fullName</div>
|
||||
<div class="account-username">@account.userName</div>
|
||||
<div class="main-sidebar">
|
||||
<div class="sidebar">
|
||||
<div class="user-panel">
|
||||
<div class="pull-left image">@avatar(account.userName, 40)</div>
|
||||
<div class="pull-left info">
|
||||
<p>@account.userName</p>
|
||||
@account.fullName
|
||||
</div>
|
||||
</div>
|
||||
<div class="block">
|
||||
<div style="padding-left: 10px; padding-right: 10px;">
|
||||
@if(account.url.isDefined){
|
||||
<div><i class="octicon octicon-home"></i> <a href="@account.url">@account.url</a></div>
|
||||
<p style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;">
|
||||
<i class="octicon octicon-home"></i> <a href="@account.url">@account.url</a>
|
||||
</p>
|
||||
}
|
||||
<div><i class="octicon octicon-clock"></i> <span class="muted">Joined on</span> @date(account.registeredDate)</div>
|
||||
<p style="color: white;">
|
||||
<i class="octicon octicon-clock"></i> Joined on @date(account.registeredDate)
|
||||
</p>
|
||||
</div>
|
||||
@if(groupNames.nonEmpty){
|
||||
<div>
|
||||
<div>Groups</div>
|
||||
<ul class="sidebar-menu">
|
||||
<li class="header">Groups</li>
|
||||
@groupNames.map { groupName =>
|
||||
@avatarLink(groupName, 36, tooltip = true)
|
||||
<li>@avatarLink(groupName, 20, tooltip = true, label = true)</li>
|
||||
}
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
<div class="main-content">
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="content body">
|
||||
<ul class="nav nav-tabs" style="margin-bottom: 5px;">
|
||||
<li@if(active == "repositories"){ class="active"}><a href="@url(account.userName)?tab=repositories">Repositories</a></li>
|
||||
@if(account.isGroupAccount){
|
||||
|
||||
@@ -1,27 +1,31 @@
|
||||
@(active: String, ssh: Boolean)(body: Html)(implicit context: gitbucket.core.controller.Context)
|
||||
@import context._
|
||||
<div class="main-sidebar">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li@if(active=="profile"){ class="active"}>
|
||||
<a href="@path/@loginAccount.get.userName/_edit">Profile</a>
|
||||
</li>
|
||||
@if(ssh){
|
||||
<li@if(active=="ssh"){ class="active"}>
|
||||
<a href="@path/@loginAccount.get.userName/_ssh">SSH Keys</a>
|
||||
</li>
|
||||
}
|
||||
<li@if(active=="application"){ class="active"}>
|
||||
<a href="@path/@loginAccount.get.userName/_application">Applications</a>
|
||||
</li>
|
||||
@gitbucket.core.plugin.PluginRegistry().getAccountSettingMenus.map { menu =>
|
||||
@menu(context).map { link =>
|
||||
<li@if(active==link.id){ class="active"}>
|
||||
<a href="@path/@link.path">@link.label</a>
|
||||
</li>
|
||||
<div class="sidebar">
|
||||
<ul class="sidebar-menu">
|
||||
<li@if(active=="profile"){ class="active"}>
|
||||
<a href="@path/@loginAccount.get.userName/_edit">Profile</a>
|
||||
</li>
|
||||
@if(ssh){
|
||||
<li@if(active=="ssh"){ class="active"}>
|
||||
<a href="@path/@loginAccount.get.userName/_ssh">SSH Keys</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
<li@if(active=="application"){ class="active"}>
|
||||
<a href="@path/@loginAccount.get.userName/_application">Applications</a>
|
||||
</li>
|
||||
@gitbucket.core.plugin.PluginRegistry().getAccountSettingMenus.map { menu =>
|
||||
@menu(context).map { link =>
|
||||
<li@if(active==link.id){ class="active"}>
|
||||
<a href="@path/@link.path">@link.label</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="main-content">
|
||||
@body
|
||||
<div class="content-wrapper">
|
||||
<div class="content body">
|
||||
@body
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -3,73 +3,75 @@ isCreateRepoOptionPublic: Boolean)(implicit context: gitbucket.core.controller.C
|
||||
@import context._
|
||||
@import gitbucket.core.view.helpers._
|
||||
@html.main("Create a New Repository"){
|
||||
<div class="body main-center">
|
||||
<h2>Create a new repository</h2>
|
||||
<p class="muted">
|
||||
A repository contains all the files for your project, including the revision history.
|
||||
</p>
|
||||
<form id="form" method="post" action="@path/new" validate="true">
|
||||
<fieldset class="margin form-group">
|
||||
<dl style="float: left;">
|
||||
<dt>Owner</dt>
|
||||
<dd style="margin-left: 0px;">
|
||||
<div class="btn-group" id="owner-dropdown">
|
||||
<button class="btn dropdown-toggle btn-default" data-toggle="dropdown">
|
||||
<span class="strong">@avatar(loginAccount.get.userName, 20) @loginAccount.get.userName</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="javascript:void(0);" data-name="@loginAccount.get.userName"><i class="octicon octicon-check"></i> <span>@avatar(loginAccount.get.userName, 20) @loginAccount.get.userName</span></a></li>
|
||||
@groupNames.map { groupName =>
|
||||
<li><a href="javascript:void(0);" data-name="@groupName"><i class="octicon"></i> <span>@avatar(groupName, 20) @groupName</span></a></li>
|
||||
}
|
||||
</ul>
|
||||
<input type="hidden" name="owner" id="owner" value="@loginAccount.get.userName"/>
|
||||
<div class="content-wrapper main-center">
|
||||
<div class="content body">
|
||||
<h2>Create a new repository</h2>
|
||||
<p class="muted">
|
||||
A repository contains all the files for your project, including the revision history.
|
||||
</p>
|
||||
<form id="form" method="post" action="@path/new" validate="true">
|
||||
<fieldset class="border-top form-group">
|
||||
<dl style="float: left;">
|
||||
<dt>Owner</dt>
|
||||
<dd style="margin-left: 0px;">
|
||||
<div class="btn-group" id="owner-dropdown">
|
||||
<button class="btn dropdown-toggle btn-default" data-toggle="dropdown">
|
||||
<span class="strong">@avatar(loginAccount.get.userName, 20) @loginAccount.get.userName</span>
|
||||
<span class="caret"></span>
|
||||
</button>
|
||||
<ul class="dropdown-menu">
|
||||
<li><a href="javascript:void(0);" data-name="@loginAccount.get.userName"><i class="octicon octicon-check"></i> <span>@avatar(loginAccount.get.userName, 20) @loginAccount.get.userName</span></a></li>
|
||||
@groupNames.map { groupName =>
|
||||
<li><a href="javascript:void(0);" data-name="@groupName"><i class="octicon"></i> <span>@avatar(groupName, 20) @groupName</span></a></li>
|
||||
}
|
||||
</ul>
|
||||
<input type="hidden" name="owner" id="owner" value="@loginAccount.get.userName"/>
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="slash" style="float: left; margin-left: 10px; margin-right: 10px; margin-top: 15px;">/</span>
|
||||
<dl>
|
||||
<dt>Repository name</dt>
|
||||
<dd style="margin-left: 0px;">
|
||||
<input type="text" name="name" id="name" class="form-control" style="width: 200px;" autofocus />
|
||||
<span id="error-name" class="error"></span>
|
||||
</dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
<fieldset class="form-group">
|
||||
<label for="description" class="strong">Description (optional):</label>
|
||||
<input type="text" name="description" id="description" class="form-control" style="width: 95%;"/>
|
||||
</fieldset>
|
||||
<fieldset class="border-top">
|
||||
<label class="radio">
|
||||
<input type="radio" name="isPrivate" value="false" @if(isCreateRepoOptionPublic){checked}>
|
||||
<span class="strong"><i class="octicon octicon-repo"></i> </i> Public</span>
|
||||
<div class="normal muted">
|
||||
Anyone can see this repository. You choose who can commit.
|
||||
</div>
|
||||
</dd>
|
||||
</dl>
|
||||
<span class="slash" style="float: left; margin-left: 10px; margin-right: 10px; margin-top: 15px;">/</span>
|
||||
<dl>
|
||||
<dt>Repository name</dt>
|
||||
<dd style="margin-left: 0px;">
|
||||
<input type="text" name="name" id="name" class="form-control" style="width: 200px;" autofocus />
|
||||
<span id="error-name" class="error"></span>
|
||||
</dd>
|
||||
</dl>
|
||||
</fieldset>
|
||||
<fieldset class="form-group">
|
||||
<label for="description" class="strong">Description (optional):</label>
|
||||
<input type="text" name="description" id="description" class="form-control" style="width: 95%;"/>
|
||||
</fieldset>
|
||||
<fieldset class="margin">
|
||||
<label class="radio">
|
||||
<input type="radio" name="isPrivate" value="false" @if(isCreateRepoOptionPublic){checked}>
|
||||
<span class="strong"><i class="octicon octicon-repo"></i> </i> Public</span>
|
||||
<div class="normal muted">
|
||||
Anyone can see this repository. You choose who can commit.
|
||||
</div>
|
||||
</label>
|
||||
<label class="radio">
|
||||
<input type="radio" name="isPrivate" value="true" @if(!isCreateRepoOptionPublic){checked}>
|
||||
<span class="strong"><i class="octicon octicon-lock"></i> </i> Private</span>
|
||||
<div class="normal muted">
|
||||
You choose who can see and commit to this repository.
|
||||
</div>
|
||||
</label>
|
||||
</fieldset>
|
||||
<fieldset class="margin">
|
||||
<label for="createReadme" class="checkbox">
|
||||
<input type="checkbox" name="createReadme" id="createReadme"/>
|
||||
<span class="strong">Initialize this repository with a README</span>
|
||||
<div class="normal muted">
|
||||
This will let you immediately clone the repository to your computer. Skip this step if you’re importing an existing repository.
|
||||
</div>
|
||||
</label>
|
||||
</fieldset>
|
||||
<fieldset class="margin form-actions">
|
||||
<input type="submit" class="btn btn-success" value="Create repository"/>
|
||||
</fieldset>
|
||||
</form>
|
||||
</label>
|
||||
<label class="radio">
|
||||
<input type="radio" name="isPrivate" value="true" @if(!isCreateRepoOptionPublic){checked}>
|
||||
<span class="strong"><i class="octicon octicon-lock"></i> </i> Private</span>
|
||||
<div class="normal muted">
|
||||
You choose who can see and commit to this repository.
|
||||
</div>
|
||||
</label>
|
||||
</fieldset>
|
||||
<fieldset class="border-top">
|
||||
<label for="createReadme" class="checkbox">
|
||||
<input type="checkbox" name="createReadme" id="createReadme"/>
|
||||
<span class="strong">Initialize this repository with a README</span>
|
||||
<div class="normal muted">
|
||||
This will let you immediately clone the repository to your computer. Skip this step if you’re importing an existing repository.
|
||||
</div>
|
||||
</label>
|
||||
</fieldset>
|
||||
<fieldset class="border-top form-actions">
|
||||
<input type="submit" class="btn btn-success" value="Create repository"/>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
<script>
|
||||
|
||||
@@ -2,49 +2,51 @@
|
||||
@import context._
|
||||
@import gitbucket.core.view.helpers._
|
||||
@html.main("Create your account"){
|
||||
<div class="container body main-center">
|
||||
<h3>Create your account</h3>
|
||||
<form action="@path/register" method="POST" validate="true">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<fieldset>
|
||||
<label for="userName" class="strong">Username:</label>
|
||||
<input type="text" name="userName" id="userName" value="" class="form-control" autofocus/>
|
||||
<span id="error-userName" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="password" class="strong">
|
||||
Password:
|
||||
</label>
|
||||
<input type="password" name="password" id="password" class="form-control" value=""/>
|
||||
<span id="error-password" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="fullName" class="strong">Full Name:</label>
|
||||
<input type="text" name="fullName" id="fullName" class="form-control" value=""/>
|
||||
<span id="error-fullName" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="mailAddress" class="strong">Mail Address:</label>
|
||||
<input type="text" name="mailAddress" id="mailAddress" class="form-control" value=""/>
|
||||
<span id="error-mailAddress" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="url" class="strong">URL (optional):</label>
|
||||
<input type="text" name="url" id="url" class="form-control" value=""/>
|
||||
<span id="error-url" class="error"></span>
|
||||
</fieldset>
|
||||
<div class="content-wrapper main-center">
|
||||
<div class="content body">
|
||||
<h2>Create your account</h2>
|
||||
<form action="@path/register" method="POST" validate="true">
|
||||
<div class="row">
|
||||
<div class="col-md-6">
|
||||
<fieldset>
|
||||
<label for="userName" class="strong">Username:</label>
|
||||
<input type="text" name="userName" id="userName" value="" class="form-control" autofocus/>
|
||||
<span id="error-userName" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="password" class="strong">
|
||||
Password:
|
||||
</label>
|
||||
<input type="password" name="password" id="password" class="form-control" value=""/>
|
||||
<span id="error-password" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="fullName" class="strong">Full Name:</label>
|
||||
<input type="text" name="fullName" id="fullName" class="form-control" value=""/>
|
||||
<span id="error-fullName" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="mailAddress" class="strong">Mail Address:</label>
|
||||
<input type="text" name="mailAddress" id="mailAddress" class="form-control" value=""/>
|
||||
<span id="error-mailAddress" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="url" class="strong">URL (optional):</label>
|
||||
<input type="text" name="url" id="url" class="form-control" value=""/>
|
||||
<span id="error-url" class="error"></span>
|
||||
</fieldset>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<fieldset>
|
||||
<label for="avatar" class="strong">Image (optional):</label>
|
||||
@helper.html.uploadavatar(None)
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<fieldset>
|
||||
<label for="avatar" class="strong">Image (optional):</label>
|
||||
@helper.html.uploadavatar(None)
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<fieldset class="margin">
|
||||
<input type="submit" class="btn btn-success" value="Create account"/>
|
||||
</fieldset>
|
||||
</form>
|
||||
<fieldset class="border-top">
|
||||
<input type="submit" class="btn btn-success" value="Create account"/>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
@(active: String)(body: Html)(implicit context: gitbucket.core.controller.Context)
|
||||
@import context._
|
||||
<div class="container body">
|
||||
<div class="main-sidebar">
|
||||
<ul class="nav nav-pills nav-stacked" id="system-admin-menu-container">
|
||||
<div class="main-sidebar">
|
||||
<div class="sidebar">
|
||||
<ul class="sidebar-menu" id="system-admin-menu-container">
|
||||
<li@if(active=="users"){ class="active"}>
|
||||
<a href="@path/admin/users">User Management</a>
|
||||
</li>
|
||||
@@ -16,7 +16,7 @@
|
||||
<a href="@path/admin/data">Data export / import</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="@path/console/login.jsp">H2 Console</a>
|
||||
<a href="@path/console/login.jsp" target="_blank">H2 Console</a>
|
||||
</li>
|
||||
@gitbucket.core.plugin.PluginRegistry().getSystemSettingMenus.map { menu =>
|
||||
@menu(context).map { link =>
|
||||
@@ -27,7 +27,9 @@
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="main-content">
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="content body">
|
||||
@body
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -18,19 +18,19 @@
|
||||
<div class="panel-body">
|
||||
<div class="row">
|
||||
<label class="col-md-2">Id</label>
|
||||
<span class="col-md-8">@plugin.pluginId</span>
|
||||
<span class="col-md-10">@plugin.pluginId</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-2">Version</label>
|
||||
<span class="col-md-8">@plugin.version</span>
|
||||
<span class="col-md-10">@plugin.version</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-2">Name</label>
|
||||
<span class="col-md-8">@plugin.pluginName</span>
|
||||
<span class="col-md-10">@plugin.pluginName</span>
|
||||
</div>
|
||||
<div class="row">
|
||||
<label class="col-md-2">Description</label>
|
||||
<span class="col-md-8 muted">@plugin.description</span>
|
||||
<span class="col-md-10 muted">@plugin.description</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -97,10 +97,15 @@
|
||||
<!--====================================================================-->
|
||||
<hr>
|
||||
<label><span class="strong">Limit of activity logs</span> (Unlimited if it's not specified or zero)</label>
|
||||
<div class="controls">
|
||||
<input type="text" id="activityLogLimit" name="activityLogLimit" class="form-control input-mini" value="@settings.activityLogLimit"/>
|
||||
<span id="error-activityLogLimit" class="error"></span>
|
||||
</div>
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label class="control-label col-md-3" for="activityLogLimit">Limit</label>
|
||||
<div class="col-md-9">
|
||||
<input type="text" id="activityLogLimit" name="activityLogLimit" class="form-control input-mini" value="@settings.activityLogLimit"/>
|
||||
<span id="error-activityLogLimit" class="error"></span>
|
||||
</div>
|
||||
</div>
|
||||
</fieldset>
|
||||
<!--====================================================================-->
|
||||
<!-- Services -->
|
||||
<!--====================================================================-->
|
||||
@@ -289,7 +294,7 @@
|
||||
<div class="form-group">
|
||||
<label class="control-label col-md-3" for="smtpPassword">Enable SSL</label>
|
||||
<div class="col-md-9">
|
||||
<input type="checkbox" name="smtp.ssl"@if(settings.smtp.flatMap(_.ssl).getOrElse(false)){ checked}/>
|
||||
<input type="checkbox" id="smtpSsl" name="smtp.ssl"@if(settings.smtp.flatMap(_.ssl).getOrElse(false)){ checked}/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
@@ -304,6 +309,12 @@
|
||||
<input type="text" id="fromName" name="smtp.fromName" class="form-control" value="@settings.smtp.map(_.fromName)"/>
|
||||
</div>
|
||||
</div>
|
||||
<div class="text-right">
|
||||
Send test mail to:
|
||||
<input type="text" id="testAddress" size="30"/>
|
||||
<input type="button" id="sendTestMail" value="Send"/>
|
||||
</div>
|
||||
|
||||
<p class="muted">
|
||||
Enable notification not only SMTP configuration if you want to send notification email.
|
||||
</p>
|
||||
@@ -318,6 +329,40 @@
|
||||
}
|
||||
<script>
|
||||
$(function(){
|
||||
$('#sendTestMail').click(function(){
|
||||
var host = $('#smtpHost' ).val();
|
||||
var port = $('#smtpPort' ).val();
|
||||
var user = $('#smtpUser' ).val();
|
||||
var password = $('#smtpPassword').val();
|
||||
var ssl = $('#smtpSsl' ).prop('checked');
|
||||
var fromAddress = $('#fromAddress' ).val();
|
||||
var fromName = $('#fromName' ).val();
|
||||
var testAddress = $('#testAddress' ).val();
|
||||
|
||||
if(host == ''){
|
||||
alert('SMTP Host is required.');
|
||||
$('#smtpHost').focus();
|
||||
} else if(testAddress == ''){
|
||||
alert('Destination is required.');
|
||||
$('#testAddress').focus();
|
||||
} else {
|
||||
$.post('@path/admin/system/sendmail', {
|
||||
'smtp.host': host,
|
||||
'smtp.port': port,
|
||||
'smtp.user': user,
|
||||
'smtp.password': password,
|
||||
'smtp.ssl': ssl,
|
||||
'smtp.fromAddress': fromAddress,
|
||||
'smtp.fromName': fromName,
|
||||
'testAddress': testAddress
|
||||
}, function(data, status){
|
||||
if(data != ''){
|
||||
alert(data);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
$('#ssh').change(function(){
|
||||
$('.ssh input').prop('disabled', !$(this).prop('checked'));
|
||||
}).change();
|
||||
|
||||
@@ -75,7 +75,7 @@
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<fieldset class="margin">
|
||||
<fieldset class="border-top">
|
||||
<input type="submit" class="btn btn-success" value="@if(account.isEmpty){Create User} else {Update User}"/>
|
||||
<a href="@path/admin/users" class="btn btn-default">Cancel</a>
|
||||
</fieldset>
|
||||
|
||||
@@ -45,7 +45,7 @@
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<fieldset class="margin">
|
||||
<fieldset class="border-top">
|
||||
<input type="submit" class="btn btn-success" value="@if(account.isEmpty){Create Group} else {Update Group}"/>
|
||||
<a href="@path/admin/users" class="btn btn-default">Cancel</a>
|
||||
</fieldset>
|
||||
@@ -103,11 +103,11 @@ $(function(){
|
||||
}
|
||||
|
||||
function addMemberHTML(userName, isManager){
|
||||
var memberButton = $('<input type="radio" value="false" checked>Member</input>').data('name', userName);
|
||||
var memberButton = $('<label class="btn btn-default btn-mini"><input type="radio" value="false" name="' + userName + '">Member</label>');
|
||||
if(!isManager){
|
||||
memberButton.addClass('active');
|
||||
}
|
||||
var managerButton = $('<input type="radio" value="true">Manager</input>').data('name', userName);
|
||||
var managerButton = $('<label class="btn btn-default btn-mini"><input type="radio" value="true" name="' + userName + '">Manager</label>');
|
||||
if(isManager){
|
||||
managerButton.addClass('active');
|
||||
}
|
||||
@@ -115,8 +115,8 @@ $(function(){
|
||||
$('#member-list').append($('<li>')
|
||||
.data('name', userName)
|
||||
.append($('<div class="btn-group is_manager" data-toggle="buttons">')
|
||||
.append($('<label class="btn btn-default btn-mini active">').append(memberButton))
|
||||
.append($('<label class="btn btn-default btn-mini">').append(managerButton)))
|
||||
.append(memberButton)
|
||||
.append(managerButton))
|
||||
.append(' ')
|
||||
.append($('<a>').attr('href', '@path/' + userName).text(userName))
|
||||
.append(' ')
|
||||
@@ -126,9 +126,7 @@ $(function(){
|
||||
function updateMembers(){
|
||||
var members = $('#member-list li').map(function(i, e){
|
||||
var userName = $(e).data('name');
|
||||
return userName + ':' + $('label.active > input[type=radio]').filter(function(i, e){
|
||||
return $(e).data('name') == userName;
|
||||
}).attr('value');
|
||||
return userName + ':' + $(e).find('label.active input[type=radio]').attr('value');
|
||||
}).get().join(',');
|
||||
$('#members').val(members);
|
||||
}
|
||||
|
||||
@@ -2,71 +2,62 @@
|
||||
userRepositories: List[gitbucket.core.service.RepositoryService.RepositoryInfo])(body: Html)(implicit context: gitbucket.core.controller.Context)
|
||||
@import context._
|
||||
@import gitbucket.core.view.helpers._
|
||||
<div class="container body">
|
||||
<div class="dashboard-sidebar">
|
||||
@if(loginAccount.isEmpty){
|
||||
<div id="dashboard-signin-form">@html.signinform(settings)</div>
|
||||
<div class="main-sidebar">
|
||||
<div class="sidebar">
|
||||
<ul class="nav sidebar-menu">
|
||||
@if(loginAccount.isDefined){
|
||||
<li class="header">Your repositories <span class="label label-primary pull-right">@userRepositories.size</span></li>
|
||||
@if(userRepositories.isEmpty){
|
||||
<li>No repositories</li>
|
||||
} else {
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading strong">
|
||||
Your repositories <span class="badge">@userRepositories.size</span>
|
||||
</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
@if(userRepositories.isEmpty){
|
||||
<li class="list-group-item">No repositories</li>
|
||||
} else {
|
||||
@defining(20){ max =>
|
||||
@userRepositories.zipWithIndex.map { case (repository, i) =>
|
||||
<li class="list-group-item repo-link" style="@if(i > max - 1){display:none;}">
|
||||
@helper.html.repositoryicon(repository, false)
|
||||
@if(repository.owner == loginAccount.get.userName){
|
||||
<a href="@url(repository)"><span class="strong">@repository.name</span></a>
|
||||
} else {
|
||||
<a href="@url(repository)">@repository.owner/<span class="strong">@repository.name</span></a>
|
||||
}
|
||||
</li>
|
||||
}
|
||||
@if(userRepositories.size > max){
|
||||
<li class="list-group-item show-more">
|
||||
<a href="javascript:void(0);" id="show-more-repos">Show @{userRepositories.size - max} more repositories...</a>
|
||||
</li>
|
||||
}
|
||||
@defining(10){ max =>
|
||||
@userRepositories.zipWithIndex.map { case (repository, i) =>
|
||||
<li class="repo-link" style="@if(i > max - 1){display:none;}">
|
||||
@if(repository.owner == loginAccount.get.userName){
|
||||
<a href="@url(repository)">@helper.html.repositoryicon(repository, false) <span class="strong">@repository.name</span></a>
|
||||
} else {
|
||||
<a href="@url(repository)">@helper.html.repositoryicon(repository, false) @repository.owner/<span class="strong">@repository.name</span></a>
|
||||
}
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading strong">Recent updated repositories</div>
|
||||
<ul class="list-group list-group-flush">
|
||||
@if(recentRepositories.isEmpty){
|
||||
<li class="list-group-item">No repositories</li>
|
||||
} else {
|
||||
@defining(20){ max =>
|
||||
@recentRepositories.zipWithIndex.map { case (repository, i) =>
|
||||
<li class="list-group-item repo-link" style="@if(i > max - 1){display:none;}">
|
||||
@helper.html.repositoryicon(repository, false)
|
||||
<a href="@url(repository)">@repository.owner/<span class="strong">@repository.name</span></a>
|
||||
</li>
|
||||
}
|
||||
@if(recentRepositories.size > max){
|
||||
<li class="list-group-item show-more">
|
||||
<a href="javascript:void(0);" id="show-more-recent-repos">Show @{recentRepositories.size - max} more repositories...</a>
|
||||
</li>
|
||||
}
|
||||
@if(userRepositories.size > max){
|
||||
<li class="show-more">
|
||||
<a href="javascript:void(0);" id="show-more-repos">Show @{userRepositories.size - max} more repositories...</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
}
|
||||
} else {
|
||||
<li class="header">Recent updated repositories</li>
|
||||
@if(recentRepositories.isEmpty){
|
||||
<li>No repositories</li>
|
||||
} else {
|
||||
@defining(10){ max =>
|
||||
@recentRepositories.zipWithIndex.map { case (repository, i) =>
|
||||
<li class="repo-link" style="@if(i > max - 1){display:none;}">
|
||||
<a href="@url(repository)">@helper.html.repositoryicon(repository, false) @repository.owner/<span class="strong">@repository.name</span></a>
|
||||
</li>
|
||||
}
|
||||
@if(recentRepositories.size > max){
|
||||
<li class="show-more">
|
||||
<a href="javascript:void(0);" id="show-more-recent-repos">Show @{recentRepositories.size - max} more repositories...</a>
|
||||
</li>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="dashboard-content">
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="content body">
|
||||
@body
|
||||
</div>
|
||||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
$('#show-more-repos, #show-more-recent-repos').click(function(e){
|
||||
$(e.target).parents('ul.list-group').find('li.repo-link').show();
|
||||
$(e.target).parents('ul').find('li.repo-link').show();
|
||||
$(e.target).parents('li.show-more').remove();
|
||||
});
|
||||
});
|
||||
|
||||
@@ -10,15 +10,13 @@
|
||||
@import gitbucket.core.view.helpers._
|
||||
@import org.eclipse.jgit.diff.DiffEntry.ChangeType
|
||||
@if(showIndex){
|
||||
<div style="overflow: hidden;">
|
||||
<div class="pull-right" style="margin-bottom: 10px;">
|
||||
<div class="btn-group" data-toggle="buttons-radio">
|
||||
<input type="button" id="btn-unified" class="btn btn-default btn-small active" value="Unified">
|
||||
<input type="button" id="btn-split" class="btn btn-default btn-small" value="Split">
|
||||
</div>
|
||||
<div class="pull-right" style="margin-bottom: 10px;">
|
||||
<div class="btn-group" data-toggle="buttons-radio">
|
||||
<input type="button" id="btn-unified" class="btn btn-default btn-small active" value="Unified">
|
||||
<input type="button" id="btn-split" class="btn btn-default btn-small" value="Split">
|
||||
</div>
|
||||
Showing <a href="javascript:void(0);" id="toggle-file-list">@diffs.size changed @plural(diffs.size, "file")</a>
|
||||
</div>
|
||||
Showing <a href="javascript:void(0);" id="toggle-file-list">@diffs.size changed @plural(diffs.size, "file")</a>
|
||||
<ul id="commit-file-list" style="display: none;">
|
||||
@diffs.zipWithIndex.map { case (diff, i) =>
|
||||
<li@if(i > 0){ class="border"}>
|
||||
|
||||
@@ -11,11 +11,13 @@
|
||||
<link rel="icon" href="@assets/common/images/gitbucket.png" type="image/vnd.microsoft.icon" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="@assets/vendors/bootstrap-3.3.6/css/bootstrap.min.css" rel="stylesheet">
|
||||
<link href="@assets/vendors/octicons/octicons.css" rel="stylesheet">
|
||||
<link href="@assets/vendors/octicons-4.2.0/octicons.css" rel="stylesheet">
|
||||
<link href="@assets/vendors/datepicker/css/bootstrap-datetimepicker.min.css" rel="stylesheet">
|
||||
<link href="@assets/vendors/colorpicker/css/bootstrap-colorpicker.css" rel="stylesheet">
|
||||
<link href="@assets/vendors/google-code-prettify/prettify.css" type="text/css" rel="stylesheet"/>
|
||||
<link href="@assets/vendors/facebox/facebox.css" rel="stylesheet"/>
|
||||
<link href="@assets/vendors/AdminLTE-2.2.3/css/AdminLTE.min.css" rel="stylesheet">
|
||||
<link href="@assets/vendors/AdminLTE-2.2.3/css/skins/skin-blue.min.css" rel="stylesheet">
|
||||
<link href="@assets/common/css/gitbucket.css" rel="stylesheet">
|
||||
<script src="@assets/vendors/jquery/jquery-1.11.1.js"></script>
|
||||
<script src="@assets/vendors/dropzone/dropzone.js"></script>
|
||||
@@ -36,75 +38,73 @@
|
||||
<meta name="go-import" content="@context.baseUrl.replaceFirst("^https?://", "")/@repository.owner/@repository.name git @repository.httpUrl" />
|
||||
}
|
||||
}
|
||||
<script src="@assets/vendors/AdminLTE-2.2.3/js/app.js" type="text/javascript"></script>
|
||||
</head>
|
||||
<body>
|
||||
<form id="search" action="@path/search" method="POST" class="form-inline">
|
||||
<nav class="navbar navbar-default">
|
||||
<div class="container">
|
||||
@* TODO: for plugi-ins?
|
||||
<button type="button" class="btn btn-navbar" data-toggle="collapse" data-target=".nav-collapse">
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
<span class="icon-bar"></span>
|
||||
</button>
|
||||
*@
|
||||
<a class="navbar-brand" href="@path/">
|
||||
<img src="@assets/common/images/gitbucket.png" style="width: 24px; height: 24px; display: inline;"/>GitBucket
|
||||
<span class="header-version">@gitbucket.core.GitBucketCoreModule.getVersions.get(0).getVersion</span>
|
||||
</a>
|
||||
@if(loginAccount.isDefined){
|
||||
@repository.map { repository =>
|
||||
<input type="text" name="query" class="form-control" style="width: 400px; margin-top: 3px; margin-bottom: 3px;" placeholder="Search this repository"/>
|
||||
<input type="hidden" name="owner" value="@repository.owner"/>
|
||||
<input type="hidden" name="repository" value="@repository.name"/>
|
||||
}
|
||||
<a href="@path/dashboard/pulls" class="global-header-menu">Pull requests</a>
|
||||
<a href="@path/dashboard/issues" class="global-header-menu">Issues</a>
|
||||
} else {
|
||||
@* TODO: merge with below *@
|
||||
@repository.map { repository =>
|
||||
<input type="text" name="query" class="form-control" style="width: 400px; margin-top: 3px; margin-bottom: 3px;" placeholder="Search this repository"/>
|
||||
<input type="hidden" name="owner" value="@repository.owner"/>
|
||||
<input type="hidden" name="repository" value="@repository.name"/>
|
||||
}
|
||||
}
|
||||
@gitbucket.core.plugin.PluginRegistry().getGlobalMenus.map { menu =>
|
||||
@menu(context).map { link =>
|
||||
<a href="@path/@link.path" class="global-header-menu">@link.label</a>
|
||||
}
|
||||
}
|
||||
@if(loginAccount.isDefined){
|
||||
<div class="pull-right" style="margin-top: 6px;">
|
||||
<div class="btn-group" style="margin-right: 8px;">
|
||||
<a class="dropdown-toggle menu" data-toggle="dropdown" href="#">
|
||||
<i class="octicon octicon-plus" style="color: black; font-size: 20px; vertical-align: middle;height:20px !important;"></i><span class="caret" style="color: black; vertical-align: middle;"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<li><a href="@path/new">New repository</a></li>
|
||||
<li><a href="@path/groups/new">New group</a></li>
|
||||
</ul>
|
||||
<body class="skin-blue">
|
||||
<div class="wrapper">
|
||||
<header class="main-header">
|
||||
<a href="@path/" class="logo">
|
||||
<img src="@assets/common/images/gitbucket.png" style="width: 24px; height: 24px; display: inline;"/>
|
||||
GitBucket
|
||||
<span class="header-version">@gitbucket.core.GitBucketCoreModule.getVersions.last.getVersion</span>
|
||||
</a>
|
||||
<nav class="navbar navbar-static-top" role="navigation">
|
||||
@repository.map { repository =>
|
||||
<form id="search" action="@path/search" method="POST" class="navbar-form navbar-left" role="search">
|
||||
<div class="form-group">
|
||||
<input type="text" name="query" id="navbar-search-input" class="form-control" placeholder="Search this repository"/>
|
||||
<input type="hidden" name="owner" value="@repository.owner"/>
|
||||
<input type="hidden" name="repository" value="@repository.name"/>
|
||||
</div>
|
||||
<div class="btn-group">
|
||||
<a class="dropdown-toggle menu" data-toggle="dropdown" href="#" data-toggle="tooltip" data-placement="bottom" title="Signed is as @loginAccount.get.userName">
|
||||
@avatar(loginAccount.get.userName, 16)<span class="caret" style="color: black; vertical-align: middle;"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<li><a href="@url(loginAccount.get.userName)">Your profile</a></li>
|
||||
<li><a href="@url(loginAccount.get.userName)/_edit">Account settings</a></li>
|
||||
@if(loginAccount.get.isAdmin){
|
||||
<li><a href="@path/admin/users">System administration</a></li>
|
||||
}
|
||||
<li><a href="@path/signout">Sign out</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
} else {
|
||||
<a href="@path/signin?redirect=@urlEncode(currentPath)" class="btn btn-default pull-right" style="margin-top: 3px; margin-bottom: 3px;" id="signin">Sign in</a>
|
||||
</form>
|
||||
}
|
||||
</div>
|
||||
</nav>
|
||||
</form>
|
||||
@body
|
||||
<ul class="nav navbar-nav">
|
||||
@if(loginAccount.isDefined){
|
||||
<li><a href="@path/dashboard/pulls">Pull requests</a></li>
|
||||
<li><a href="@path/dashboard/issues">Issues</a></li>
|
||||
}
|
||||
@gitbucket.core.plugin.PluginRegistry().getGlobalMenus.map { menu =>
|
||||
@menu(context).map { link =>
|
||||
<li><a href="@path/@link.path">@link.label</a></li>
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
<div class="navbar-custom-menu">
|
||||
<ul class="nav navbar-nav">
|
||||
@if(loginAccount.isDefined){
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle menu" data-toggle="dropdown" href="#">
|
||||
<i class="octicon octicon-plus" style="color: black;"></i><span class="caret" style="color: black; vertical-align: middle;"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<li><a href="@path/new">New repository</a></li>
|
||||
<li><a href="@path/groups/new">New group</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li class="dropdown">
|
||||
<a class="dropdown-toggle menu" data-toggle="dropdown" href="#" data-toggle="tooltip" data-placement="bottom" title="Signed is as @loginAccount.get.userName">
|
||||
@avatar(loginAccount.get.userName, 16)<span class="caret" style="color: black; vertical-align: middle;"></span>
|
||||
</a>
|
||||
<ul class="dropdown-menu pull-right">
|
||||
<li><a href="@url(loginAccount.get.userName)">Your profile</a></li>
|
||||
<li><a href="@url(loginAccount.get.userName)/_edit">Account settings</a></li>
|
||||
@if(loginAccount.get.isAdmin){
|
||||
<li><a href="@path/admin/users">System administration</a></li>
|
||||
}
|
||||
<li><a href="@path/signout">Sign out</a></li>
|
||||
</ul>
|
||||
</li>
|
||||
} else {
|
||||
<li>
|
||||
<a href="@path/signin?redirect=@urlEncode(currentPath)" class="pull-right" id="signin">Sign in</a>
|
||||
</li>
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</nav>
|
||||
</header>
|
||||
@body
|
||||
</div>
|
||||
<script>
|
||||
$(function(){
|
||||
$('#search').submit(function(){
|
||||
|
||||
@@ -8,65 +8,80 @@
|
||||
|
||||
@menuitem(path: String, name: String, label: String, icon: String, count: Int = 0) = {
|
||||
<li @if(active == name){class="active"}>
|
||||
<a href="@url(repository)@path">
|
||||
<i class="menu-icon octicon octicon-@icon"></i>
|
||||
<span class="pc">
|
||||
@label
|
||||
@if(count > 0){
|
||||
<span class="badge">@count</span>
|
||||
}
|
||||
</span>
|
||||
</a>
|
||||
@if(path.startsWith("http")){
|
||||
<a href="@path" target="_blank">
|
||||
<i class="menu-icon octicon octicon-@icon"></i> <span class="pc">@label @if(count > 0) { <span class="label label-primary pull-right">@count</span> }</span>
|
||||
</a>
|
||||
} else {
|
||||
<a href="@url(repository)@path">
|
||||
<i class="menu-icon octicon octicon-@icon"></i> <span class="pc">@label @if(count > 0) { <span class="label label-primary pull-right">@count</span> }</span>
|
||||
</a>
|
||||
}
|
||||
</li>
|
||||
}
|
||||
|
||||
<div class="headbar">
|
||||
<div class="container">
|
||||
@helper.html.information(info)
|
||||
@helper.html.error(error)
|
||||
<div class="head">
|
||||
@helper.html.repositoryicon(repository, true)
|
||||
<a href="@url(repository.owner)">@repository.owner</a> / <a href="@url(repository)" class="strong">@repository.name</a>
|
||||
<div class="main-sidebar">
|
||||
<div class="sidebar">
|
||||
<ul class="sidebar-menu">
|
||||
@menuitem("", "files", "Files", "code")
|
||||
@if(repository.commitCount != 0) {
|
||||
@menuitem("/branches", "branches", "Branches", "git-branch", repository.branchList.length)
|
||||
@menuitem("/tags", "tags", "Tags", "tag", repository.tags.length)
|
||||
}
|
||||
@if(repository.repository.enableIssues) {
|
||||
@menuitem("/issues", "issues", "Issues", "issue-opened", repository.issueCount)
|
||||
@menuitem("/pulls", "pulls", "Pull Requests", "git-pull-request", repository.pullCount)
|
||||
@menuitem("/issues/labels", "labels", "Labels", "tag")
|
||||
@menuitem("/issues/milestones", "milestones", "Milestones", "milestone")
|
||||
} else {
|
||||
@repository.repository.externalIssuesUrl.map { externalIssuesUrl =>
|
||||
@menuitem(externalIssuesUrl, "issues", "Issues", "issue-opened")
|
||||
}
|
||||
}
|
||||
@if(repository.repository.enableWiki) {
|
||||
@menuitem("/wiki", "wiki", "Wiki", "book")
|
||||
} else {
|
||||
@repository.repository.externalWikiUrl.map { externalWikiUrl =>
|
||||
@menuitem(externalWikiUrl, "wiki", "Wiki", "book")
|
||||
}
|
||||
}
|
||||
@menuitem("/network/members", "fork", "Forks", "repo-forked", repository.forkedCount)
|
||||
@if(loginAccount.isDefined && (loginAccount.get.isAdmin || repository.managers.contains(loginAccount.get.userName))){
|
||||
@menuitem("/settings", "settings", "Settings", "tools")
|
||||
}
|
||||
@gitbucket.core.plugin.PluginRegistry().getRepositoryMenus.map { menu =>
|
||||
@menu(repository, context).map { link =>
|
||||
@menuitem(link.path, link.id, link.label, link.icon.getOrElse("ruby"))
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
<div class="content-wrapper">
|
||||
<div class="content body">
|
||||
<div class="headbar">
|
||||
<div class="container">
|
||||
@helper.html.information(info)
|
||||
@helper.html.error(error)
|
||||
<div class="head">
|
||||
@helper.html.repositoryicon(repository, true)
|
||||
<a href="@url(repository.owner)">@repository.owner</a> / <a href="@url(repository)" class="strong">@repository.name</a>
|
||||
|
||||
@defining(repository.repository){ x =>
|
||||
@if(repository.repository.originRepositoryName.isDefined){
|
||||
<div class="forked">
|
||||
forked from <a href="@path/@x.parentUserName/@x.parentRepositoryName">@x.parentUserName/@x.parentRepositoryName</a>
|
||||
@defining(repository.repository){ x =>
|
||||
@if(repository.repository.originRepositoryName.isDefined){
|
||||
<div class="forked">
|
||||
forked from <a href="@path/@x.parentUserName/@x.parentRepositoryName">@x.parentUserName/@x.parentRepositoryName</a>
|
||||
</div>
|
||||
}
|
||||
@x.description.map { description =>
|
||||
<div class="normal muted" style="margin-left: 36px; font-size: 80%;">@detectAndRenderLinks(description)</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
}
|
||||
@x.description.map { description =>
|
||||
<div class="normal muted" style="margin-left: 36px; font-size: 80%;">@detectAndRenderLinks(description)</div>
|
||||
}
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
@body
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="container body">
|
||||
<div class="main-sidebar">
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
@menuitem("" ,"files" ,"Files", "code")
|
||||
@if(repository.commitCount != 0) {
|
||||
@menuitem("/branches" ,"branches" ,"Branches", "git-branch", repository.branchList.length)
|
||||
@menuitem("/tags" ,"tags" ,"Tags", "tag", repository.tags.length)
|
||||
}
|
||||
@menuitem("/issues" ,"issues" ,"Issues", "issue-opened", repository.issueCount)
|
||||
@menuitem("/pulls" ,"pulls" ,"Pull Requests", "git-pull-request", repository.pullCount)
|
||||
@menuitem("/issues/labels" ,"labels" ,"Labels", "tag")
|
||||
@menuitem("/issues/milestones" ,"milestones" ,"Milestones", "milestone")
|
||||
@menuitem("/wiki" ,"wiki" ,"Wiki", "book")
|
||||
@menuitem("/network/members", "fork", "Forks", "repo-forked", repository.forkedCount)
|
||||
@if(loginAccount.isDefined && (loginAccount.get.isAdmin || repository.managers.contains(loginAccount.get.userName))){
|
||||
@menuitem("/settings" , "settings" , "Settings", "tools")
|
||||
}
|
||||
@gitbucket.core.plugin.PluginRegistry().getRepositoryMenus.map { menu =>
|
||||
@menu(repository, context).map { link =>
|
||||
@menuitem(link.path, link.id, link.label, link.icon.getOrElse("ruby"))
|
||||
}
|
||||
}
|
||||
</ul>
|
||||
</div>
|
||||
<div class="main-content">
|
||||
@body
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -48,7 +48,7 @@
|
||||
<div>
|
||||
<div class="commit-avatar-image">@avatarLink(commit, 40)</div>
|
||||
<div>
|
||||
<a href="@url(repository)/commit/@commit.id" class="commit-message strong">@link(commit.summary, repository)</a>
|
||||
@link(commit.summary, repository)
|
||||
@if(commit.description.isDefined){
|
||||
<a href="javascript:void(0)" onclick="$('#description-@commit.id').toggle();" class="omit">...</a>
|
||||
}
|
||||
|
||||
@@ -7,65 +7,63 @@
|
||||
@html.main("Branches", Some(repository)){
|
||||
@html.menu("settings", repository){
|
||||
@menu("branches", repository){
|
||||
<div style="overflow: hidden;">
|
||||
@if(repository.branchList.isEmpty){
|
||||
<div class="well">
|
||||
<center>
|
||||
<p><i class="octicon octicon-git-branch" style="font-size:300%"></i></p>
|
||||
<p>You don’t have any branches</p>
|
||||
<p>Before you can edit branch settings, you need to add a branch.</p>
|
||||
</center>
|
||||
@if(repository.branchList.isEmpty){
|
||||
<div class="well">
|
||||
<center>
|
||||
<p><i class="octicon octicon-git-branch" style="font-size:300%"></i></p>
|
||||
<p>You don’t have any branches</p>
|
||||
<p>Before you can edit branch settings, you need to add a branch.</p>
|
||||
</center>
|
||||
</div>
|
||||
} else {
|
||||
@helper.html.information(info)
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading strong">Default branch</div>
|
||||
<div class="panel-body">
|
||||
<p>The default branch is considered the “base” branch in your repository, against which all pull requests and code commits are automatically made, unless you specify a different branch.</p>
|
||||
<form id="form" method="post" action="@url(repository)/settings/update_default_branch" validate="true" class="form-inline">
|
||||
<span class="error" id="error-defaultBranch"></span>
|
||||
<select name="defaultBranch" id="defaultBranch" class="form-control">
|
||||
@repository.branchList.map { branch =>
|
||||
<option @if(branch==repository.repository.defaultBranch){ selected}>@branch</option>
|
||||
}
|
||||
</select>
|
||||
<input type="submit" class="btn btn-default" value="Update" />
|
||||
</form>
|
||||
</div>
|
||||
} else {
|
||||
@helper.html.information(info)
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading strong">Default branch</div>
|
||||
<div class="panel-body">
|
||||
<p>The default branch is considered the “base” branch in your repository, against which all pull requests and code commits are automatically made, unless you specify a different branch.</p>
|
||||
<form id="form" method="post" action="@url(repository)/settings/update_default_branch" validate="true" class="form-inline">
|
||||
<span class="error" id="error-defaultBranch"></span>
|
||||
<select name="defaultBranch" id="defaultBranch" class="form-control">
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading strong">Protected branches</div>
|
||||
<div class="panel-body">
|
||||
<p>Protect branches to disable force pushing, prevent branches from being deleted, and optionally require status checks before merging. New to protected branches?
|
||||
<form class="form-inline">
|
||||
<select name="protectBranch" id="protectBranch" onchange="location=$(this).val()" class="form-control">
|
||||
<option>Choose a branch...</option>
|
||||
@repository.branchList.map { branch =>
|
||||
<option @if(branch==repository.repository.defaultBranch){ selected}>@branch</option>
|
||||
<option value="@url(repository)/settings/branches/@encodeRefName(branch)">@branch</option>
|
||||
}
|
||||
</select>
|
||||
<input type="submit" class="btn btn-default" value="Update" />
|
||||
<span class="error" id="error-protectBranch"></span>
|
||||
</form>
|
||||
</div>
|
||||
</p>
|
||||
|
||||
<table class="table table-bordered table-hover branches">
|
||||
@protectedBranchList.map { branch =>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="branch-name">@branch</span>
|
||||
<span class="branch-action">
|
||||
<a href="@url(repository)/settings/branches/@encodeRefName(branch)" class="btn btn-small btn-default">Edit</a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading strong">Protected branches</div>
|
||||
<div class="panel-body">
|
||||
<p>Protect branches to disable force pushing, prevent branches from being deleted, and optionally require status checks before merging. New to protected branches?
|
||||
<form class="form-inline">
|
||||
<select name="protectBranch" id="protectBranch" onchange="location=$(this).val()" class="form-control">
|
||||
<option>Choose a branch...</option>
|
||||
@repository.branchList.map { branch =>
|
||||
<option value="@url(repository)/settings/branches/@encodeRefName(branch)">@branch</option>
|
||||
}
|
||||
</select>
|
||||
<span class="error" id="error-protectBranch"></span>
|
||||
</form>
|
||||
</p>
|
||||
|
||||
<table class="table table-bordered table-hover branches">
|
||||
@protectedBranchList.map { branch =>
|
||||
<tr>
|
||||
<td>
|
||||
<span class="branch-name">@branch</span>
|
||||
<span class="branch-action">
|
||||
<a href="@url(repository)/settings/branches/@encodeRefName(branch)" class="btn btn-small btn-default">Edit</a>
|
||||
</span>
|
||||
</td>
|
||||
</tr>
|
||||
}
|
||||
</table>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
}
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@
|
||||
@helper.html.information(info)
|
||||
<div class="alert alert-info" style="display:none" id="saved-info">Branch protection options saved</div>
|
||||
<form name="branchProtection" onsubmit="submitForm(event)">
|
||||
<div class="panel panel-default" style="overflow: hidden;">
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading">Branch protection for <b>@branch</b></div>
|
||||
<div class="panel-body">
|
||||
|
||||
|
||||
@@ -1,9 +1,10 @@
|
||||
@(repository: gitbucket.core.service.RepositoryService.RepositoryInfo)(implicit context: gitbucket.core.controller.Context)
|
||||
@(repository: gitbucket.core.service.RepositoryService.RepositoryInfo, info: Option[Any])(implicit context: gitbucket.core.controller.Context)
|
||||
@import context._
|
||||
@import gitbucket.core.view.helpers._
|
||||
@html.main("Danger Zone", Some(repository)){
|
||||
@html.menu("settings", repository){
|
||||
@menu("danger", repository){
|
||||
@helper.html.information(info)
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading strong">Danger Zone</div>
|
||||
<div class="panel-body">
|
||||
@@ -23,7 +24,7 @@
|
||||
</fieldset>
|
||||
</form>
|
||||
<form id="delete-form" method="post" action="@url(repository)/settings/delete">
|
||||
<fieldset class="margin form-group">
|
||||
<fieldset class="border-top form-group">
|
||||
<label class="strong">Delete repository</label>
|
||||
<div>
|
||||
Once you delete a repository, there is no going back.
|
||||
@@ -31,6 +32,15 @@
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form id="gc-form" method="post" action="@url(repository)/settings/gc">
|
||||
<fieldset class="border-top form-group">
|
||||
<label class="strong">Garbage collection</label>
|
||||
<div>
|
||||
Run garbage collection for this git repository immediately.
|
||||
<input type="submit" class="btn btn-danger pull-right" value="Garbage collection"/>
|
||||
</div>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -14,11 +14,11 @@
|
||||
<input type="text" name="repositoryName" id="repositoryName" class="form-control" value="@repository.name"/>
|
||||
<span id="error-repositoryName" class="error"></span>
|
||||
</fieldset>
|
||||
<fieldset class="margin form-group">
|
||||
<fieldset class="border-top form-group">
|
||||
<label for="description" class="strong">Description:</label>
|
||||
<input type="text" name="description" id="description" class="form-control" value="@repository.repository.description"/>
|
||||
</fieldset>
|
||||
<fieldset class="margin">
|
||||
<fieldset class="border-top">
|
||||
<label class="radio">
|
||||
<input type="radio" name="isPrivate" value="false"
|
||||
@if(!repository.repository.isPrivate ){ checked }
|
||||
@@ -42,6 +42,41 @@
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-heading strong">Features</div>
|
||||
<div class="panel-body">
|
||||
<fieldset class="form-group">
|
||||
<label class="checkbox" for="enableIssues">
|
||||
<input type="checkbox" id="enableIssues" name="enableIssues"@if(repository.repository.enableIssues){ checked}/>
|
||||
Issues<br>
|
||||
<div class="normal muted">
|
||||
Provides Lightweight issue tracking integrated with this repository. Add issues to milestones, label issues, and close & reference issues from commit messages.
|
||||
</div>
|
||||
</label>
|
||||
<label for="externalIssuesUrl" class="strong">External URL:
|
||||
<span class="normal muted">(Put if you have the external issue tracking system for this project)</span>
|
||||
</label>
|
||||
<input type="text" class="form-control" id="externalIssuesUrl" name="externalIssuesUrl" value="@repository.repository.externalIssuesUrl"/>
|
||||
</fieldset>
|
||||
<fieldset class="form-group margin">
|
||||
<label class="checkbox" for="enableWiki">
|
||||
<input type="checkbox" id="enableWiki" name="enableWiki"@if(repository.repository.enableWiki){ checked}/>
|
||||
Wiki<br>
|
||||
<div class="normal muted">
|
||||
Provides a simple solution to manage documents. All users who can look this repository can read and collaborators can edit pages.
|
||||
</div>
|
||||
</label>
|
||||
<label class="checkbox" for="allowWikiEditing">
|
||||
<input type="checkbox" id="allowWikiEditing" name="allowWikiEditing"@if(repository.repository.allowWikiEditing){ checked}/>
|
||||
Allow read-only users to edit Wiki pages<br>
|
||||
</label>
|
||||
<label for="externalWikiUrl" class="strong">External URL:
|
||||
<span class="normal muted">(Put if you have the external Wiki for this project)</span>
|
||||
</label>
|
||||
<input type="text" class="form-control" id="externalWikiUrl" name="externalWikiUrl" value="@repository.repository.externalWikiUrl"/>
|
||||
</fieldset>
|
||||
</div>
|
||||
</div>
|
||||
<div class="align-right" style="margin-top: 20px;">
|
||||
<input type="submit" class="btn btn-success" value="Apply changes"/>
|
||||
</div>
|
||||
@@ -49,3 +84,18 @@
|
||||
}
|
||||
}
|
||||
}
|
||||
<script>
|
||||
$(function(){
|
||||
updateFeatures();
|
||||
|
||||
$('#enableIssues, #enableWiki').click(function(){
|
||||
updateFeatures();
|
||||
});
|
||||
});
|
||||
|
||||
function updateFeatures() {
|
||||
$('#externalIssuesUrl').prop('disabled', $('#enableIssues').prop('checked'));
|
||||
$('#allowWikiEditing').prop('disabled', !$('#enableWiki').prop('checked'));
|
||||
$('#externalWikiUrl').prop('disabled', $('#enableWiki').prop('checked'));
|
||||
}
|
||||
</script>
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
@()(implicit context: gitbucket.core.controller.Context)
|
||||
@import context._
|
||||
@main("Sign in"){
|
||||
<div class="signin-form">
|
||||
@settings.information.map { information =>
|
||||
<div class="alert alert-info" style="background-color: white; color: #555; border-color: #4183c4; font-size: small; line-height: 120%;">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
@Html(information)
|
||||
<div class="content-wrapper main-center">
|
||||
<div class="content body">
|
||||
<div class="signin-form">
|
||||
@settings.information.map { information =>
|
||||
<div class="alert alert-info" style="background-color: white; color: #555; border-color: #4183c4; font-size: small; line-height: 120%;">
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
@Html(information)
|
||||
</div>
|
||||
}
|
||||
@signinform(settings)
|
||||
</div>
|
||||
}
|
||||
@signinform(settings)
|
||||
</div>
|
||||
</div>
|
||||
}
|
||||
|
||||
@@ -118,9 +118,14 @@ label.radio, label.checkbox {
|
||||
left: 24px;
|
||||
}
|
||||
|
||||
div.content-wrapper {
|
||||
background-color: white;
|
||||
}
|
||||
|
||||
/* ======================================================================== */
|
||||
/* Global Header */
|
||||
/* ======================================================================== */
|
||||
/*
|
||||
.navbar-brand {
|
||||
height: unset;
|
||||
padding: 8px;
|
||||
@@ -130,42 +135,11 @@ label.radio, label.checkbox {
|
||||
min-height: unset;
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
*/
|
||||
span.header-version {
|
||||
font-size: small;
|
||||
}
|
||||
|
||||
/*
|
||||
div.input-group>span.fork {
|
||||
display: table;
|
||||
margin-left: 4px;
|
||||
margin-top: 1px;
|
||||
}
|
||||
*/
|
||||
/*
|
||||
div.input-group>span.fork>span.count {
|
||||
background-color: white;
|
||||
-webkit-border-radius: 0 4px 4px 0;
|
||||
-moz-border-radius: 0 4px 4px 0;
|
||||
border-radius: 0 4px 4px 0;
|
||||
border: 1px solid #d8d8d8;
|
||||
border-left: none;
|
||||
font-size: 11px;
|
||||
padding: 3px 6px;
|
||||
display: table-cell;
|
||||
}
|
||||
*/
|
||||
|
||||
a.global-header-menu {
|
||||
color: black;
|
||||
font-weight: bold;
|
||||
font-size: 90%;
|
||||
margin-top: 6px;
|
||||
margin-left: 10px;
|
||||
margin-right: 10px;
|
||||
line-height: 3.1;
|
||||
}
|
||||
|
||||
/* ======================================================================== */
|
||||
/* General Styles */
|
||||
/* ======================================================================== */
|
||||
@@ -181,9 +155,6 @@ div.head div.forked {
|
||||
}
|
||||
|
||||
div.container {
|
||||
/*
|
||||
width: 980px;
|
||||
*/
|
||||
width: 100%;
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
@@ -193,7 +164,7 @@ div.container-wide {
|
||||
padding-left: 10px;
|
||||
padding-right: 10px;
|
||||
}
|
||||
|
||||
/*
|
||||
div.main-sidebar {
|
||||
width: 250px;
|
||||
float: left;
|
||||
@@ -202,7 +173,7 @@ div.main-sidebar {
|
||||
div.main-content {
|
||||
margin-left: 260px;
|
||||
}
|
||||
|
||||
*/
|
||||
div.main-center {
|
||||
width: 980px;
|
||||
margin: 0 auto;
|
||||
@@ -217,10 +188,12 @@ div.dashboard-content {
|
||||
margin-left: 310px;
|
||||
}
|
||||
|
||||
/*
|
||||
div.body {
|
||||
margin-top: 20px;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
*/
|
||||
|
||||
span.error {
|
||||
color: red;
|
||||
@@ -386,7 +359,7 @@ div.activity-message {
|
||||
margin-left: 20px;
|
||||
}
|
||||
|
||||
fieldset.margin {
|
||||
fieldset.border-top {
|
||||
border-top: 1px solid #eee;
|
||||
margin-top: 10px;
|
||||
padding-top: 10px;
|
||||
@@ -1475,6 +1448,7 @@ ul.collaborator li:hover {
|
||||
ul.collaborator a.remove {
|
||||
color: #dd0000;
|
||||
text-decoration: underline;
|
||||
padding-top: 4px;
|
||||
}
|
||||
|
||||
/****************************************************************************/
|
||||
|
||||
4915
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/AdminLTE.css
vendored
Executable file
7
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/AdminLTE.min.css
vendored
Executable file
1806
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/_all-skins.css
vendored
Executable file
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/_all-skins.min.css
vendored
Executable file
176
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-black-light.css
vendored
Executable file
@@ -0,0 +1,176 @@
|
||||
/*
|
||||
* Skin: Black
|
||||
* -----------
|
||||
*/
|
||||
/* skin-black navbar */
|
||||
.skin-black-light .main-header {
|
||||
-webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.skin-black-light .main-header .navbar-toggle {
|
||||
color: #333;
|
||||
}
|
||||
.skin-black-light .main-header .navbar-brand {
|
||||
color: #333;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black-light .main-header > .navbar {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.skin-black-light .main-header > .navbar .nav > li > a {
|
||||
color: #333333;
|
||||
}
|
||||
.skin-black-light .main-header > .navbar .nav > li > a:hover,
|
||||
.skin-black-light .main-header > .navbar .nav > li > a:active,
|
||||
.skin-black-light .main-header > .navbar .nav > li > a:focus,
|
||||
.skin-black-light .main-header > .navbar .nav .open > a,
|
||||
.skin-black-light .main-header > .navbar .nav .open > a:hover,
|
||||
.skin-black-light .main-header > .navbar .nav .open > a:focus,
|
||||
.skin-black-light .main-header > .navbar .nav > .active > a {
|
||||
background: #ffffff;
|
||||
color: #999999;
|
||||
}
|
||||
.skin-black-light .main-header > .navbar .sidebar-toggle {
|
||||
color: #333333;
|
||||
}
|
||||
.skin-black-light .main-header > .navbar .sidebar-toggle:hover {
|
||||
color: #999999;
|
||||
background: #ffffff;
|
||||
}
|
||||
.skin-black-light .main-header > .navbar > .sidebar-toggle {
|
||||
color: #333;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black-light .main-header > .navbar .navbar-nav > li > a {
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black-light .main-header > .navbar .navbar-custom-menu .navbar-nav > li > a,
|
||||
.skin-black-light .main-header > .navbar .navbar-right > li > a {
|
||||
border-left: 1px solid #eee;
|
||||
border-right-width: 0;
|
||||
}
|
||||
.skin-black-light .main-header > .logo {
|
||||
background-color: #ffffff;
|
||||
color: #333333;
|
||||
border-bottom: 0 solid transparent;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black-light .main-header > .logo:hover {
|
||||
background-color: #fcfcfc;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-black-light .main-header > .logo {
|
||||
background-color: #222222;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
border-right: none;
|
||||
}
|
||||
.skin-black-light .main-header > .logo:hover {
|
||||
background-color: #1f1f1f;
|
||||
}
|
||||
}
|
||||
.skin-black-light .main-header li.user-header {
|
||||
background-color: #222;
|
||||
}
|
||||
.skin-black-light .content-header {
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.skin-black-light .wrapper,
|
||||
.skin-black-light .main-sidebar,
|
||||
.skin-black-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-black-light .content-wrapper,
|
||||
.skin-black-light .main-footer {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-black-light .user-panel > .info,
|
||||
.skin-black-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li:hover > a,
|
||||
.skin-black-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li.active {
|
||||
border-left-color: #ffffff;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-black-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-black-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-black-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-black-light .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-black-light .treeview-menu > li.active > a,
|
||||
.skin-black-light .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-black-light .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-black-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-black-light .sidebar-form input[type="text"],
|
||||
.skin-black-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-black-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-black-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-black-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-black-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-black-light.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-black-light .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black-light .main-header .navbar-toggle{color:#333}.skin-black-light .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar{background-color:#fff}.skin-black-light .main-header>.navbar .nav>li>a{color:#333}.skin-black-light .main-header>.navbar .nav>li>a:hover,.skin-black-light .main-header>.navbar .nav>li>a:active,.skin-black-light .main-header>.navbar .nav>li>a:focus,.skin-black-light .main-header>.navbar .nav .open>a,.skin-black-light .main-header>.navbar .nav .open>a:hover,.skin-black-light .main-header>.navbar .nav .open>a:focus,.skin-black-light .main-header>.navbar .nav>.active>a{background:#fff;color:#999}.skin-black-light .main-header>.navbar .sidebar-toggle{color:#333}.skin-black-light .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black-light .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black-light .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black-light .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black-light .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black-light .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black-light .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black-light .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black-light .main-header li.user-header{background-color:#222}.skin-black-light .content-header{background:transparent;box-shadow:none}.skin-black-light .wrapper,.skin-black-light .main-sidebar,.skin-black-light .left-side{background-color:#f9fafc}.skin-black-light .content-wrapper,.skin-black-light .main-footer{border-left:1px solid #d2d6de}.skin-black-light .user-panel>.info,.skin-black-light .user-panel>.info>a{color:#444}.skin-black-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-black-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-black-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-black-light .sidebar-menu>li:hover>a,.skin-black-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-black-light .sidebar-menu>li.active{border-left-color:#fff}.skin-black-light .sidebar-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-black-light .sidebar a{color:#444}.skin-black-light .sidebar a:hover{text-decoration:none}.skin-black-light .treeview-menu>li>a{color:#777}.skin-black-light .treeview-menu>li.active>a,.skin-black-light .treeview-menu>li>a:hover{color:#000}.skin-black-light .treeview-menu>li.active>a{font-weight:600}.skin-black-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-black-light .sidebar-form input[type="text"],.skin-black-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black-light .sidebar-form input[type="text"]:focus,.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-black-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
161
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-black.css
vendored
Executable file
@@ -0,0 +1,161 @@
|
||||
/*
|
||||
* Skin: Black
|
||||
* -----------
|
||||
*/
|
||||
/* skin-black navbar */
|
||||
.skin-black .main-header {
|
||||
-webkit-box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
|
||||
box-shadow: 0px 1px 1px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
.skin-black .main-header .navbar-toggle {
|
||||
color: #333;
|
||||
}
|
||||
.skin-black .main-header .navbar-brand {
|
||||
color: #333;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black .main-header > .navbar {
|
||||
background-color: #ffffff;
|
||||
}
|
||||
.skin-black .main-header > .navbar .nav > li > a {
|
||||
color: #333333;
|
||||
}
|
||||
.skin-black .main-header > .navbar .nav > li > a:hover,
|
||||
.skin-black .main-header > .navbar .nav > li > a:active,
|
||||
.skin-black .main-header > .navbar .nav > li > a:focus,
|
||||
.skin-black .main-header > .navbar .nav .open > a,
|
||||
.skin-black .main-header > .navbar .nav .open > a:hover,
|
||||
.skin-black .main-header > .navbar .nav .open > a:focus,
|
||||
.skin-black .main-header > .navbar .nav > .active > a {
|
||||
background: #ffffff;
|
||||
color: #999999;
|
||||
}
|
||||
.skin-black .main-header > .navbar .sidebar-toggle {
|
||||
color: #333333;
|
||||
}
|
||||
.skin-black .main-header > .navbar .sidebar-toggle:hover {
|
||||
color: #999999;
|
||||
background: #ffffff;
|
||||
}
|
||||
.skin-black .main-header > .navbar > .sidebar-toggle {
|
||||
color: #333;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black .main-header > .navbar .navbar-nav > li > a {
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black .main-header > .navbar .navbar-custom-menu .navbar-nav > li > a,
|
||||
.skin-black .main-header > .navbar .navbar-right > li > a {
|
||||
border-left: 1px solid #eee;
|
||||
border-right-width: 0;
|
||||
}
|
||||
.skin-black .main-header > .logo {
|
||||
background-color: #ffffff;
|
||||
color: #333333;
|
||||
border-bottom: 0 solid transparent;
|
||||
border-right: 1px solid #eee;
|
||||
}
|
||||
.skin-black .main-header > .logo:hover {
|
||||
background-color: #fcfcfc;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-black .main-header > .logo {
|
||||
background-color: #222222;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
border-right: none;
|
||||
}
|
||||
.skin-black .main-header > .logo:hover {
|
||||
background-color: #1f1f1f;
|
||||
}
|
||||
}
|
||||
.skin-black .main-header li.user-header {
|
||||
background-color: #222;
|
||||
}
|
||||
.skin-black .content-header {
|
||||
background: transparent;
|
||||
box-shadow: none;
|
||||
}
|
||||
.skin-black .wrapper,
|
||||
.skin-black .main-sidebar,
|
||||
.skin-black .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-black .user-panel > .info,
|
||||
.skin-black .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-black .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-black .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-black .sidebar-menu > li:hover > a,
|
||||
.skin-black .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #ffffff;
|
||||
}
|
||||
.skin-black .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-black .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-black .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-black .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-black .treeview-menu > li.active > a,
|
||||
.skin-black .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-black .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-black .sidebar-form input[type="text"],
|
||||
.skin-black .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-black .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-black .sidebar-form input[type="text"]:focus,
|
||||
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-black .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-black .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.skin-black .pace .pace-progress {
|
||||
background: #222;
|
||||
}
|
||||
.skin-black .pace .pace-activity {
|
||||
border-top-color: #222;
|
||||
border-left-color: #222;
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-black.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-black .main-header{-webkit-box-shadow:0 1px 1px rgba(0,0,0,0.05);box-shadow:0 1px 1px rgba(0,0,0,0.05)}.skin-black .main-header .navbar-toggle{color:#333}.skin-black .main-header .navbar-brand{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar{background-color:#fff}.skin-black .main-header>.navbar .nav>li>a{color:#333}.skin-black .main-header>.navbar .nav>li>a:hover,.skin-black .main-header>.navbar .nav>li>a:active,.skin-black .main-header>.navbar .nav>li>a:focus,.skin-black .main-header>.navbar .nav .open>a,.skin-black .main-header>.navbar .nav .open>a:hover,.skin-black .main-header>.navbar .nav .open>a:focus,.skin-black .main-header>.navbar .nav>.active>a{background:#fff;color:#999}.skin-black .main-header>.navbar .sidebar-toggle{color:#333}.skin-black .main-header>.navbar .sidebar-toggle:hover{color:#999;background:#fff}.skin-black .main-header>.navbar>.sidebar-toggle{color:#333;border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-nav>li>a{border-right:1px solid #eee}.skin-black .main-header>.navbar .navbar-custom-menu .navbar-nav>li>a,.skin-black .main-header>.navbar .navbar-right>li>a{border-left:1px solid #eee;border-right-width:0}.skin-black .main-header>.logo{background-color:#fff;color:#333;border-bottom:0 solid transparent;border-right:1px solid #eee}.skin-black .main-header>.logo:hover{background-color:#fcfcfc}@media (max-width:767px){.skin-black .main-header>.logo{background-color:#222;color:#fff;border-bottom:0 solid transparent;border-right:none}.skin-black .main-header>.logo:hover{background-color:#1f1f1f}}.skin-black .main-header li.user-header{background-color:#222}.skin-black .content-header{background:transparent;box-shadow:none}.skin-black .wrapper,.skin-black .main-sidebar,.skin-black .left-side{background-color:#222d32}.skin-black .user-panel>.info,.skin-black .user-panel>.info>a{color:#fff}.skin-black .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-black .sidebar-menu>li>a{border-left:3px solid transparent}.skin-black .sidebar-menu>li:hover>a,.skin-black .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#fff}.skin-black .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-black .sidebar a{color:#b8c7ce}.skin-black .sidebar a:hover{text-decoration:none}.skin-black .treeview-menu>li>a{color:#8aa4af}.skin-black .treeview-menu>li.active>a,.skin-black .treeview-menu>li>a:hover{color:#fff}.skin-black .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-black .sidebar-form input[type="text"],.skin-black .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-black .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-black .sidebar-form input[type="text"]:focus,.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-black .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-black .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-black .pace .pace-progress{background:#222}.skin-black .pace .pace-activity{border-top-color:#222;border-left-color:#222}
|
||||
167
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-blue-light.css
vendored
Executable file
@@ -0,0 +1,167 @@
|
||||
/*
|
||||
* Skin: Blue
|
||||
* ----------
|
||||
*/
|
||||
.skin-blue-light .main-header .navbar {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-blue-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-blue-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-blue-light .main-header .navbar .nav .open > a,
|
||||
.skin-blue-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-blue-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-blue-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #367fa9;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-blue-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #367fa9;
|
||||
}
|
||||
}
|
||||
.skin-blue-light .main-header .logo {
|
||||
background-color: #3c8dbc;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-blue-light .main-header .logo:hover {
|
||||
background-color: #3b8ab8;
|
||||
}
|
||||
.skin-blue-light .main-header li.user-header {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-blue-light .wrapper,
|
||||
.skin-blue-light .main-sidebar,
|
||||
.skin-blue-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-blue-light .content-wrapper,
|
||||
.skin-blue-light .main-footer {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-blue-light .user-panel > .info,
|
||||
.skin-blue-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li:hover > a,
|
||||
.skin-blue-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li.active {
|
||||
border-left-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-blue-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-blue-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-blue-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-blue-light .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-blue-light .treeview-menu > li.active > a,
|
||||
.skin-blue-light .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-blue-light .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-blue-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-blue-light .sidebar-form input[type="text"],
|
||||
.skin-blue-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-blue-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-blue-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-blue-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-blue-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
.skin-blue-light .main-footer {
|
||||
border-top-color: #d2d6de;
|
||||
}
|
||||
.skin-blue.layout-top-nav .main-header > .logo {
|
||||
background-color: #3c8dbc;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-blue.layout-top-nav .main-header > .logo:hover {
|
||||
background-color: #3b8ab8;
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-blue-light.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-blue-light .main-header .navbar{background-color:#3c8dbc}.skin-blue-light .main-header .navbar .nav>li>a{color:#fff}.skin-blue-light .main-header .navbar .nav>li>a:hover,.skin-blue-light .main-header .navbar .nav>li>a:active,.skin-blue-light .main-header .navbar .nav>li>a:focus,.skin-blue-light .main-header .navbar .nav .open>a,.skin-blue-light .main-header .navbar .nav .open>a:hover,.skin-blue-light .main-header .navbar .nav .open>a:focus,.skin-blue-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue-light .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue-light .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue-light .main-header .logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue-light .main-header .logo:hover{background-color:#3b8ab8}.skin-blue-light .main-header li.user-header{background-color:#3c8dbc}.skin-blue-light .content-header{background:transparent}.skin-blue-light .wrapper,.skin-blue-light .main-sidebar,.skin-blue-light .left-side{background-color:#f9fafc}.skin-blue-light .content-wrapper,.skin-blue-light .main-footer{border-left:1px solid #d2d6de}.skin-blue-light .user-panel>.info,.skin-blue-light .user-panel>.info>a{color:#444}.skin-blue-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-blue-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-blue-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-blue-light .sidebar-menu>li:hover>a,.skin-blue-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-blue-light .sidebar-menu>li.active{border-left-color:#3c8dbc}.skin-blue-light .sidebar-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-blue-light .sidebar a{color:#444}.skin-blue-light .sidebar a:hover{text-decoration:none}.skin-blue-light .treeview-menu>li>a{color:#777}.skin-blue-light .treeview-menu>li.active>a,.skin-blue-light .treeview-menu>li>a:hover{color:#000}.skin-blue-light .treeview-menu>li.active>a{font-weight:600}.skin-blue-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-blue-light .sidebar-form input[type="text"],.skin-blue-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue-light .sidebar-form input[type="text"]:focus,.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-blue-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}.skin-blue-light .main-footer{border-top-color:#d2d6de}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}
|
||||
142
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-blue.css
vendored
Executable file
@@ -0,0 +1,142 @@
|
||||
/*
|
||||
* Skin: Blue
|
||||
* ----------
|
||||
*/
|
||||
.skin-blue .main-header .navbar {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue .main-header .navbar .nav > li > a:hover,
|
||||
.skin-blue .main-header .navbar .nav > li > a:active,
|
||||
.skin-blue .main-header .navbar .nav > li > a:focus,
|
||||
.skin-blue .main-header .navbar .nav .open > a,
|
||||
.skin-blue .main-header .navbar .nav .open > a:hover,
|
||||
.skin-blue .main-header .navbar .nav .open > a:focus,
|
||||
.skin-blue .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-blue .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #367fa9;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-blue .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-blue .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #367fa9;
|
||||
}
|
||||
}
|
||||
.skin-blue .main-header .logo {
|
||||
background-color: #367fa9;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-blue .main-header .logo:hover {
|
||||
background-color: #357ca5;
|
||||
}
|
||||
.skin-blue .main-header li.user-header {
|
||||
background-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-blue .wrapper,
|
||||
.skin-blue .main-sidebar,
|
||||
.skin-blue .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-blue .user-panel > .info,
|
||||
.skin-blue .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-blue .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-blue .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-blue .sidebar-menu > li:hover > a,
|
||||
.skin-blue .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #3c8dbc;
|
||||
}
|
||||
.skin-blue .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-blue .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-blue .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-blue .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-blue .treeview-menu > li.active > a,
|
||||
.skin-blue .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-blue .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-blue .sidebar-form input[type="text"],
|
||||
.skin-blue .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-blue .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-blue .sidebar-form input[type="text"]:focus,
|
||||
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-blue .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-blue .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
.skin-blue.layout-top-nav .main-header > .logo {
|
||||
background-color: #3c8dbc;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-blue.layout-top-nav .main-header > .logo:hover {
|
||||
background-color: #3b8ab8;
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-blue.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-blue .main-header .navbar{background-color:#3c8dbc}.skin-blue .main-header .navbar .nav>li>a{color:#fff}.skin-blue .main-header .navbar .nav>li>a:hover,.skin-blue .main-header .navbar .nav>li>a:active,.skin-blue .main-header .navbar .nav>li>a:focus,.skin-blue .main-header .navbar .nav .open>a,.skin-blue .main-header .navbar .nav .open>a:hover,.skin-blue .main-header .navbar .nav .open>a:focus,.skin-blue .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-blue .main-header .navbar .sidebar-toggle{color:#fff}.skin-blue .main-header .navbar .sidebar-toggle:hover{background-color:#367fa9}@media (max-width:767px){.skin-blue .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-blue .main-header .navbar .dropdown-menu li a{color:#fff}.skin-blue .main-header .navbar .dropdown-menu li a:hover{background:#367fa9}}.skin-blue .main-header .logo{background-color:#367fa9;color:#fff;border-bottom:0 solid transparent}.skin-blue .main-header .logo:hover{background-color:#357ca5}.skin-blue .main-header li.user-header{background-color:#3c8dbc}.skin-blue .content-header{background:transparent}.skin-blue .wrapper,.skin-blue .main-sidebar,.skin-blue .left-side{background-color:#222d32}.skin-blue .user-panel>.info,.skin-blue .user-panel>.info>a{color:#fff}.skin-blue .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-blue .sidebar-menu>li>a{border-left:3px solid transparent}.skin-blue .sidebar-menu>li:hover>a,.skin-blue .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#3c8dbc}.skin-blue .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-blue .sidebar a{color:#b8c7ce}.skin-blue .sidebar a:hover{text-decoration:none}.skin-blue .treeview-menu>li>a{color:#8aa4af}.skin-blue .treeview-menu>li.active>a,.skin-blue .treeview-menu>li>a:hover{color:#fff}.skin-blue .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-blue .sidebar-form input[type="text"],.skin-blue .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-blue .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-blue .sidebar-form input[type="text"]:focus,.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-blue .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-blue .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}.skin-blue.layout-top-nav .main-header>.logo{background-color:#3c8dbc;color:#fff;border-bottom:0 solid transparent}.skin-blue.layout-top-nav .main-header>.logo:hover{background-color:#3b8ab8}
|
||||
156
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-green-light.css
vendored
Executable file
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
* Skin: Green
|
||||
* -----------
|
||||
*/
|
||||
.skin-green-light .main-header .navbar {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-green-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-green-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-green-light .main-header .navbar .nav .open > a,
|
||||
.skin-green-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-green-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-green-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-green-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #008d4c;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-green-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-green-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #008d4c;
|
||||
}
|
||||
}
|
||||
.skin-green-light .main-header .logo {
|
||||
background-color: #00a65a;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-green-light .main-header .logo:hover {
|
||||
background-color: #00a157;
|
||||
}
|
||||
.skin-green-light .main-header li.user-header {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
.skin-green-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-green-light .wrapper,
|
||||
.skin-green-light .main-sidebar,
|
||||
.skin-green-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-green-light .content-wrapper,
|
||||
.skin-green-light .main-footer {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-green-light .user-panel > .info,
|
||||
.skin-green-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li:hover > a,
|
||||
.skin-green-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li.active {
|
||||
border-left-color: #00a65a;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-green-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-green-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-green-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-green-light .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-green-light .treeview-menu > li.active > a,
|
||||
.skin-green-light .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-green-light .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-green-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-green-light .sidebar-form input[type="text"],
|
||||
.skin-green-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-green-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-green-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-green-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-green-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-green-light.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-green-light .main-header .navbar{background-color:#00a65a}.skin-green-light .main-header .navbar .nav>li>a{color:#fff}.skin-green-light .main-header .navbar .nav>li>a:hover,.skin-green-light .main-header .navbar .nav>li>a:active,.skin-green-light .main-header .navbar .nav>li>a:focus,.skin-green-light .main-header .navbar .nav .open>a,.skin-green-light .main-header .navbar .nav .open>a:hover,.skin-green-light .main-header .navbar .nav .open>a:focus,.skin-green-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-green-light .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green-light .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green-light .main-header .logo{background-color:#00a65a;color:#fff;border-bottom:0 solid transparent}.skin-green-light .main-header .logo:hover{background-color:#00a157}.skin-green-light .main-header li.user-header{background-color:#00a65a}.skin-green-light .content-header{background:transparent}.skin-green-light .wrapper,.skin-green-light .main-sidebar,.skin-green-light .left-side{background-color:#f9fafc}.skin-green-light .content-wrapper,.skin-green-light .main-footer{border-left:1px solid #d2d6de}.skin-green-light .user-panel>.info,.skin-green-light .user-panel>.info>a{color:#444}.skin-green-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-green-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-green-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-green-light .sidebar-menu>li:hover>a,.skin-green-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-green-light .sidebar-menu>li.active{border-left-color:#00a65a}.skin-green-light .sidebar-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-green-light .sidebar a{color:#444}.skin-green-light .sidebar a:hover{text-decoration:none}.skin-green-light .treeview-menu>li>a{color:#777}.skin-green-light .treeview-menu>li.active>a,.skin-green-light .treeview-menu>li>a:hover{color:#000}.skin-green-light .treeview-menu>li.active>a{font-weight:600}.skin-green-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-green-light .sidebar-form input[type="text"],.skin-green-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green-light .sidebar-form input[type="text"]:focus,.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-green-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
134
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-green.css
vendored
Executable file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Skin: Green
|
||||
* -----------
|
||||
*/
|
||||
.skin-green .main-header .navbar {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
.skin-green .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green .main-header .navbar .nav > li > a:hover,
|
||||
.skin-green .main-header .navbar .nav > li > a:active,
|
||||
.skin-green .main-header .navbar .nav > li > a:focus,
|
||||
.skin-green .main-header .navbar .nav .open > a,
|
||||
.skin-green .main-header .navbar .nav .open > a:hover,
|
||||
.skin-green .main-header .navbar .nav .open > a:focus,
|
||||
.skin-green .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-green .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-green .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #008d4c;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-green .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-green .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #008d4c;
|
||||
}
|
||||
}
|
||||
.skin-green .main-header .logo {
|
||||
background-color: #008d4c;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-green .main-header .logo:hover {
|
||||
background-color: #008749;
|
||||
}
|
||||
.skin-green .main-header li.user-header {
|
||||
background-color: #00a65a;
|
||||
}
|
||||
.skin-green .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-green .wrapper,
|
||||
.skin-green .main-sidebar,
|
||||
.skin-green .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-green .user-panel > .info,
|
||||
.skin-green .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-green .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-green .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-green .sidebar-menu > li:hover > a,
|
||||
.skin-green .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #00a65a;
|
||||
}
|
||||
.skin-green .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-green .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-green .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-green .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-green .treeview-menu > li.active > a,
|
||||
.skin-green .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-green .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-green .sidebar-form input[type="text"],
|
||||
.skin-green .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-green .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-green .sidebar-form input[type="text"]:focus,
|
||||
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-green .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-green .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-green.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-green .main-header .navbar{background-color:#00a65a}.skin-green .main-header .navbar .nav>li>a{color:#fff}.skin-green .main-header .navbar .nav>li>a:hover,.skin-green .main-header .navbar .nav>li>a:active,.skin-green .main-header .navbar .nav>li>a:focus,.skin-green .main-header .navbar .nav .open>a,.skin-green .main-header .navbar .nav .open>a:hover,.skin-green .main-header .navbar .nav .open>a:focus,.skin-green .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-green .main-header .navbar .sidebar-toggle{color:#fff}.skin-green .main-header .navbar .sidebar-toggle:hover{background-color:#008d4c}@media (max-width:767px){.skin-green .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-green .main-header .navbar .dropdown-menu li a{color:#fff}.skin-green .main-header .navbar .dropdown-menu li a:hover{background:#008d4c}}.skin-green .main-header .logo{background-color:#008d4c;color:#fff;border-bottom:0 solid transparent}.skin-green .main-header .logo:hover{background-color:#008749}.skin-green .main-header li.user-header{background-color:#00a65a}.skin-green .content-header{background:transparent}.skin-green .wrapper,.skin-green .main-sidebar,.skin-green .left-side{background-color:#222d32}.skin-green .user-panel>.info,.skin-green .user-panel>.info>a{color:#fff}.skin-green .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-green .sidebar-menu>li>a{border-left:3px solid transparent}.skin-green .sidebar-menu>li:hover>a,.skin-green .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#00a65a}.skin-green .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-green .sidebar a{color:#b8c7ce}.skin-green .sidebar a:hover{text-decoration:none}.skin-green .treeview-menu>li>a{color:#8aa4af}.skin-green .treeview-menu>li.active>a,.skin-green .treeview-menu>li>a:hover{color:#fff}.skin-green .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-green .sidebar-form input[type="text"],.skin-green .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-green .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-green .sidebar-form input[type="text"]:focus,.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-green .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-green .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
|
||||
156
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-purple-light.css
vendored
Executable file
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
* Skin: Purple
|
||||
* ------------
|
||||
*/
|
||||
.skin-purple-light .main-header .navbar {
|
||||
background-color: #605ca8;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-purple-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-purple-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-purple-light .main-header .navbar .nav .open > a,
|
||||
.skin-purple-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-purple-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-purple-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #555299;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-purple-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #555299;
|
||||
}
|
||||
}
|
||||
.skin-purple-light .main-header .logo {
|
||||
background-color: #605ca8;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-purple-light .main-header .logo:hover {
|
||||
background-color: #5d59a6;
|
||||
}
|
||||
.skin-purple-light .main-header li.user-header {
|
||||
background-color: #605ca8;
|
||||
}
|
||||
.skin-purple-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-purple-light .wrapper,
|
||||
.skin-purple-light .main-sidebar,
|
||||
.skin-purple-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-purple-light .content-wrapper,
|
||||
.skin-purple-light .main-footer {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-purple-light .user-panel > .info,
|
||||
.skin-purple-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li:hover > a,
|
||||
.skin-purple-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li.active {
|
||||
border-left-color: #605ca8;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-purple-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-purple-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-purple-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-purple-light .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-purple-light .treeview-menu > li.active > a,
|
||||
.skin-purple-light .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-purple-light .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-purple-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-purple-light .sidebar-form input[type="text"],
|
||||
.skin-purple-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-purple-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-purple-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-purple-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-purple-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-purple-light.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-purple-light .main-header .navbar{background-color:#605ca8}.skin-purple-light .main-header .navbar .nav>li>a{color:#fff}.skin-purple-light .main-header .navbar .nav>li>a:hover,.skin-purple-light .main-header .navbar .nav>li>a:active,.skin-purple-light .main-header .navbar .nav>li>a:focus,.skin-purple-light .main-header .navbar .nav .open>a,.skin-purple-light .main-header .navbar .nav .open>a:hover,.skin-purple-light .main-header .navbar .nav .open>a:focus,.skin-purple-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple-light .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple-light .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple-light .main-header .logo{background-color:#605ca8;color:#fff;border-bottom:0 solid transparent}.skin-purple-light .main-header .logo:hover{background-color:#5d59a6}.skin-purple-light .main-header li.user-header{background-color:#605ca8}.skin-purple-light .content-header{background:transparent}.skin-purple-light .wrapper,.skin-purple-light .main-sidebar,.skin-purple-light .left-side{background-color:#f9fafc}.skin-purple-light .content-wrapper,.skin-purple-light .main-footer{border-left:1px solid #d2d6de}.skin-purple-light .user-panel>.info,.skin-purple-light .user-panel>.info>a{color:#444}.skin-purple-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-purple-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-purple-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-purple-light .sidebar-menu>li:hover>a,.skin-purple-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-purple-light .sidebar-menu>li.active{border-left-color:#605ca8}.skin-purple-light .sidebar-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-purple-light .sidebar a{color:#444}.skin-purple-light .sidebar a:hover{text-decoration:none}.skin-purple-light .treeview-menu>li>a{color:#777}.skin-purple-light .treeview-menu>li.active>a,.skin-purple-light .treeview-menu>li>a:hover{color:#000}.skin-purple-light .treeview-menu>li.active>a{font-weight:600}.skin-purple-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-purple-light .sidebar-form input[type="text"],.skin-purple-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple-light .sidebar-form input[type="text"]:focus,.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-purple-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
134
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-purple.css
vendored
Executable file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Skin: Purple
|
||||
* ------------
|
||||
*/
|
||||
.skin-purple .main-header .navbar {
|
||||
background-color: #605ca8;
|
||||
}
|
||||
.skin-purple .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple .main-header .navbar .nav > li > a:hover,
|
||||
.skin-purple .main-header .navbar .nav > li > a:active,
|
||||
.skin-purple .main-header .navbar .nav > li > a:focus,
|
||||
.skin-purple .main-header .navbar .nav .open > a,
|
||||
.skin-purple .main-header .navbar .nav .open > a:hover,
|
||||
.skin-purple .main-header .navbar .nav .open > a:focus,
|
||||
.skin-purple .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-purple .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-purple .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #555299;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-purple .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-purple .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #555299;
|
||||
}
|
||||
}
|
||||
.skin-purple .main-header .logo {
|
||||
background-color: #555299;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-purple .main-header .logo:hover {
|
||||
background-color: #545096;
|
||||
}
|
||||
.skin-purple .main-header li.user-header {
|
||||
background-color: #605ca8;
|
||||
}
|
||||
.skin-purple .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-purple .wrapper,
|
||||
.skin-purple .main-sidebar,
|
||||
.skin-purple .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-purple .user-panel > .info,
|
||||
.skin-purple .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-purple .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-purple .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-purple .sidebar-menu > li:hover > a,
|
||||
.skin-purple .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #605ca8;
|
||||
}
|
||||
.skin-purple .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-purple .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-purple .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-purple .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-purple .treeview-menu > li.active > a,
|
||||
.skin-purple .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-purple .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-purple .sidebar-form input[type="text"],
|
||||
.skin-purple .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-purple .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-purple .sidebar-form input[type="text"]:focus,
|
||||
.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-purple .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-purple .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-purple.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-purple .main-header .navbar{background-color:#605ca8}.skin-purple .main-header .navbar .nav>li>a{color:#fff}.skin-purple .main-header .navbar .nav>li>a:hover,.skin-purple .main-header .navbar .nav>li>a:active,.skin-purple .main-header .navbar .nav>li>a:focus,.skin-purple .main-header .navbar .nav .open>a,.skin-purple .main-header .navbar .nav .open>a:hover,.skin-purple .main-header .navbar .nav .open>a:focus,.skin-purple .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-purple .main-header .navbar .sidebar-toggle{color:#fff}.skin-purple .main-header .navbar .sidebar-toggle:hover{background-color:#555299}@media (max-width:767px){.skin-purple .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-purple .main-header .navbar .dropdown-menu li a{color:#fff}.skin-purple .main-header .navbar .dropdown-menu li a:hover{background:#555299}}.skin-purple .main-header .logo{background-color:#555299;color:#fff;border-bottom:0 solid transparent}.skin-purple .main-header .logo:hover{background-color:#545096}.skin-purple .main-header li.user-header{background-color:#605ca8}.skin-purple .content-header{background:transparent}.skin-purple .wrapper,.skin-purple .main-sidebar,.skin-purple .left-side{background-color:#222d32}.skin-purple .user-panel>.info,.skin-purple .user-panel>.info>a{color:#fff}.skin-purple .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-purple .sidebar-menu>li>a{border-left:3px solid transparent}.skin-purple .sidebar-menu>li:hover>a,.skin-purple .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#605ca8}.skin-purple .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-purple .sidebar a{color:#b8c7ce}.skin-purple .sidebar a:hover{text-decoration:none}.skin-purple .treeview-menu>li>a{color:#8aa4af}.skin-purple .treeview-menu>li.active>a,.skin-purple .treeview-menu>li>a:hover{color:#fff}.skin-purple .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-purple .sidebar-form input[type="text"],.skin-purple .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-purple .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-purple .sidebar-form input[type="text"]:focus,.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-purple .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-purple .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
|
||||
156
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-red-light.css
vendored
Executable file
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
* Skin: Red
|
||||
* ---------
|
||||
*/
|
||||
.skin-red-light .main-header .navbar {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-red-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-red-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-red-light .main-header .navbar .nav .open > a,
|
||||
.skin-red-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-red-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-red-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-red-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #d73925;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-red-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-red-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #d73925;
|
||||
}
|
||||
}
|
||||
.skin-red-light .main-header .logo {
|
||||
background-color: #dd4b39;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-red-light .main-header .logo:hover {
|
||||
background-color: #dc4735;
|
||||
}
|
||||
.skin-red-light .main-header li.user-header {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
.skin-red-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-red-light .wrapper,
|
||||
.skin-red-light .main-sidebar,
|
||||
.skin-red-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-red-light .content-wrapper,
|
||||
.skin-red-light .main-footer {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-red-light .user-panel > .info,
|
||||
.skin-red-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li:hover > a,
|
||||
.skin-red-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li.active {
|
||||
border-left-color: #dd4b39;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-red-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-red-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-red-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-red-light .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-red-light .treeview-menu > li.active > a,
|
||||
.skin-red-light .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-red-light .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-red-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-red-light .sidebar-form input[type="text"],
|
||||
.skin-red-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-red-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-red-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-red-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-red-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-red-light.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-red-light .main-header .navbar{background-color:#dd4b39}.skin-red-light .main-header .navbar .nav>li>a{color:#fff}.skin-red-light .main-header .navbar .nav>li>a:hover,.skin-red-light .main-header .navbar .nav>li>a:active,.skin-red-light .main-header .navbar .nav>li>a:focus,.skin-red-light .main-header .navbar .nav .open>a,.skin-red-light .main-header .navbar .nav .open>a:hover,.skin-red-light .main-header .navbar .nav .open>a:focus,.skin-red-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-red-light .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red-light .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red-light .main-header .logo{background-color:#dd4b39;color:#fff;border-bottom:0 solid transparent}.skin-red-light .main-header .logo:hover{background-color:#dc4735}.skin-red-light .main-header li.user-header{background-color:#dd4b39}.skin-red-light .content-header{background:transparent}.skin-red-light .wrapper,.skin-red-light .main-sidebar,.skin-red-light .left-side{background-color:#f9fafc}.skin-red-light .content-wrapper,.skin-red-light .main-footer{border-left:1px solid #d2d6de}.skin-red-light .user-panel>.info,.skin-red-light .user-panel>.info>a{color:#444}.skin-red-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-red-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-red-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-red-light .sidebar-menu>li:hover>a,.skin-red-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-red-light .sidebar-menu>li.active{border-left-color:#dd4b39}.skin-red-light .sidebar-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-red-light .sidebar a{color:#444}.skin-red-light .sidebar a:hover{text-decoration:none}.skin-red-light .treeview-menu>li>a{color:#777}.skin-red-light .treeview-menu>li.active>a,.skin-red-light .treeview-menu>li>a:hover{color:#000}.skin-red-light .treeview-menu>li.active>a{font-weight:600}.skin-red-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-red-light .sidebar-form input[type="text"],.skin-red-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red-light .sidebar-form input[type="text"]:focus,.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-red-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
134
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-red.css
vendored
Executable file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Skin: Red
|
||||
* ---------
|
||||
*/
|
||||
.skin-red .main-header .navbar {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
.skin-red .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red .main-header .navbar .nav > li > a:hover,
|
||||
.skin-red .main-header .navbar .nav > li > a:active,
|
||||
.skin-red .main-header .navbar .nav > li > a:focus,
|
||||
.skin-red .main-header .navbar .nav .open > a,
|
||||
.skin-red .main-header .navbar .nav .open > a:hover,
|
||||
.skin-red .main-header .navbar .nav .open > a:focus,
|
||||
.skin-red .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-red .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-red .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #d73925;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-red .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-red .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #d73925;
|
||||
}
|
||||
}
|
||||
.skin-red .main-header .logo {
|
||||
background-color: #d73925;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-red .main-header .logo:hover {
|
||||
background-color: #d33724;
|
||||
}
|
||||
.skin-red .main-header li.user-header {
|
||||
background-color: #dd4b39;
|
||||
}
|
||||
.skin-red .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-red .wrapper,
|
||||
.skin-red .main-sidebar,
|
||||
.skin-red .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-red .user-panel > .info,
|
||||
.skin-red .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-red .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-red .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-red .sidebar-menu > li:hover > a,
|
||||
.skin-red .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #dd4b39;
|
||||
}
|
||||
.skin-red .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-red .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-red .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-red .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-red .treeview-menu > li.active > a,
|
||||
.skin-red .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-red .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-red .sidebar-form input[type="text"],
|
||||
.skin-red .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-red .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-red .sidebar-form input[type="text"]:focus,
|
||||
.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-red .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-red .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-red.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-red .main-header .navbar{background-color:#dd4b39}.skin-red .main-header .navbar .nav>li>a{color:#fff}.skin-red .main-header .navbar .nav>li>a:hover,.skin-red .main-header .navbar .nav>li>a:active,.skin-red .main-header .navbar .nav>li>a:focus,.skin-red .main-header .navbar .nav .open>a,.skin-red .main-header .navbar .nav .open>a:hover,.skin-red .main-header .navbar .nav .open>a:focus,.skin-red .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-red .main-header .navbar .sidebar-toggle{color:#fff}.skin-red .main-header .navbar .sidebar-toggle:hover{background-color:#d73925}@media (max-width:767px){.skin-red .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-red .main-header .navbar .dropdown-menu li a{color:#fff}.skin-red .main-header .navbar .dropdown-menu li a:hover{background:#d73925}}.skin-red .main-header .logo{background-color:#d73925;color:#fff;border-bottom:0 solid transparent}.skin-red .main-header .logo:hover{background-color:#d33724}.skin-red .main-header li.user-header{background-color:#dd4b39}.skin-red .content-header{background:transparent}.skin-red .wrapper,.skin-red .main-sidebar,.skin-red .left-side{background-color:#222d32}.skin-red .user-panel>.info,.skin-red .user-panel>.info>a{color:#fff}.skin-red .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-red .sidebar-menu>li>a{border-left:3px solid transparent}.skin-red .sidebar-menu>li:hover>a,.skin-red .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#dd4b39}.skin-red .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-red .sidebar a{color:#b8c7ce}.skin-red .sidebar a:hover{text-decoration:none}.skin-red .treeview-menu>li>a{color:#8aa4af}.skin-red .treeview-menu>li.active>a,.skin-red .treeview-menu>li>a:hover{color:#fff}.skin-red .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-red .sidebar-form input[type="text"],.skin-red .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-red .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-red .sidebar-form input[type="text"]:focus,.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-red .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-red .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
|
||||
156
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-yellow-light.css
vendored
Executable file
@@ -0,0 +1,156 @@
|
||||
/*
|
||||
* Skin: Yellow
|
||||
* ------------
|
||||
*/
|
||||
.skin-yellow-light .main-header .navbar {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .nav > li > a:hover,
|
||||
.skin-yellow-light .main-header .navbar .nav > li > a:active,
|
||||
.skin-yellow-light .main-header .navbar .nav > li > a:focus,
|
||||
.skin-yellow-light .main-header .navbar .nav .open > a,
|
||||
.skin-yellow-light .main-header .navbar .nav .open > a:hover,
|
||||
.skin-yellow-light .main-header .navbar .nav .open > a:focus,
|
||||
.skin-yellow-light .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #e08e0b;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-yellow-light .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #e08e0b;
|
||||
}
|
||||
}
|
||||
.skin-yellow-light .main-header .logo {
|
||||
background-color: #f39c12;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-yellow-light .main-header .logo:hover {
|
||||
background-color: #f39a0d;
|
||||
}
|
||||
.skin-yellow-light .main-header li.user-header {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
.skin-yellow-light .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-yellow-light .wrapper,
|
||||
.skin-yellow-light .main-sidebar,
|
||||
.skin-yellow-light .left-side {
|
||||
background-color: #f9fafc;
|
||||
}
|
||||
.skin-yellow-light .content-wrapper,
|
||||
.skin-yellow-light .main-footer {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
.skin-yellow-light .user-panel > .info,
|
||||
.skin-yellow-light .user-panel > .info > a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li {
|
||||
-webkit-transition: border-left-color 0.3s ease;
|
||||
-o-transition: border-left-color 0.3s ease;
|
||||
transition: border-left-color 0.3s ease;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li.header {
|
||||
color: #848484;
|
||||
background: #f9fafc;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li:hover > a,
|
||||
.skin-yellow-light .sidebar-menu > li.active > a {
|
||||
color: #000000;
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li.active {
|
||||
border-left-color: #f39c12;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-yellow-light .sidebar-menu > li > .treeview-menu {
|
||||
background: #f4f4f5;
|
||||
}
|
||||
.skin-yellow-light .sidebar a {
|
||||
color: #444444;
|
||||
}
|
||||
.skin-yellow-light .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-yellow-light .treeview-menu > li > a {
|
||||
color: #777777;
|
||||
}
|
||||
.skin-yellow-light .treeview-menu > li.active > a,
|
||||
.skin-yellow-light .treeview-menu > li > a:hover {
|
||||
color: #000000;
|
||||
}
|
||||
.skin-yellow-light .treeview-menu > li.active > a {
|
||||
font-weight: 600;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #d2d6de;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form input[type="text"],
|
||||
.skin-yellow-light .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #fff;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form input[type="text"]:focus,
|
||||
.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-yellow-light .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
@media (min-width: 768px) {
|
||||
.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu > li > .treeview-menu {
|
||||
border-left: 1px solid #d2d6de;
|
||||
}
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-yellow-light.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-yellow-light .main-header .navbar{background-color:#f39c12}.skin-yellow-light .main-header .navbar .nav>li>a{color:#fff}.skin-yellow-light .main-header .navbar .nav>li>a:hover,.skin-yellow-light .main-header .navbar .nav>li>a:active,.skin-yellow-light .main-header .navbar .nav>li>a:focus,.skin-yellow-light .main-header .navbar .nav .open>a,.skin-yellow-light .main-header .navbar .nav .open>a:hover,.skin-yellow-light .main-header .navbar .nav .open>a:focus,.skin-yellow-light .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow-light .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow-light .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow-light .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow-light .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow-light .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow-light .main-header .logo{background-color:#f39c12;color:#fff;border-bottom:0 solid transparent}.skin-yellow-light .main-header .logo:hover{background-color:#f39a0d}.skin-yellow-light .main-header li.user-header{background-color:#f39c12}.skin-yellow-light .content-header{background:transparent}.skin-yellow-light .wrapper,.skin-yellow-light .main-sidebar,.skin-yellow-light .left-side{background-color:#f9fafc}.skin-yellow-light .content-wrapper,.skin-yellow-light .main-footer{border-left:1px solid #d2d6de}.skin-yellow-light .user-panel>.info,.skin-yellow-light .user-panel>.info>a{color:#444}.skin-yellow-light .sidebar-menu>li{-webkit-transition:border-left-color .3s ease;-o-transition:border-left-color .3s ease;transition:border-left-color .3s ease}.skin-yellow-light .sidebar-menu>li.header{color:#848484;background:#f9fafc}.skin-yellow-light .sidebar-menu>li>a{border-left:3px solid transparent;font-weight:600}.skin-yellow-light .sidebar-menu>li:hover>a,.skin-yellow-light .sidebar-menu>li.active>a{color:#000;background:#f4f4f5}.skin-yellow-light .sidebar-menu>li.active{border-left-color:#f39c12}.skin-yellow-light .sidebar-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-menu>li>.treeview-menu{background:#f4f4f5}.skin-yellow-light .sidebar a{color:#444}.skin-yellow-light .sidebar a:hover{text-decoration:none}.skin-yellow-light .treeview-menu>li>a{color:#777}.skin-yellow-light .treeview-menu>li.active>a,.skin-yellow-light .treeview-menu>li>a:hover{color:#000}.skin-yellow-light .treeview-menu>li.active>a{font-weight:600}.skin-yellow-light .sidebar-form{border-radius:3px;border:1px solid #d2d6de;margin:10px 10px}.skin-yellow-light .sidebar-form input[type="text"],.skin-yellow-light .sidebar-form .btn{box-shadow:none;background-color:#fff;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow-light .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow-light .sidebar-form input[type="text"]:focus,.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow-light .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow-light .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}@media (min-width:768px){.skin-yellow-light.sidebar-mini.sidebar-collapse .sidebar-menu>li>.treeview-menu{border-left:1px solid #d2d6de}}
|
||||
134
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-yellow.css
vendored
Executable file
@@ -0,0 +1,134 @@
|
||||
/*
|
||||
* Skin: Yellow
|
||||
* ------------
|
||||
*/
|
||||
.skin-yellow .main-header .navbar {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .nav > li > a {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .nav > li > a:hover,
|
||||
.skin-yellow .main-header .navbar .nav > li > a:active,
|
||||
.skin-yellow .main-header .navbar .nav > li > a:focus,
|
||||
.skin-yellow .main-header .navbar .nav .open > a,
|
||||
.skin-yellow .main-header .navbar .nav .open > a:hover,
|
||||
.skin-yellow .main-header .navbar .nav .open > a:focus,
|
||||
.skin-yellow .main-header .navbar .nav > .active > a {
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
color: #f6f6f6;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle:hover {
|
||||
color: #f6f6f6;
|
||||
background: rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .sidebar-toggle:hover {
|
||||
background-color: #e08e0b;
|
||||
}
|
||||
@media (max-width: 767px) {
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li.divider {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
}
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow .main-header .navbar .dropdown-menu li a:hover {
|
||||
background: #e08e0b;
|
||||
}
|
||||
}
|
||||
.skin-yellow .main-header .logo {
|
||||
background-color: #e08e0b;
|
||||
color: #ffffff;
|
||||
border-bottom: 0 solid transparent;
|
||||
}
|
||||
.skin-yellow .main-header .logo:hover {
|
||||
background-color: #db8b0b;
|
||||
}
|
||||
.skin-yellow .main-header li.user-header {
|
||||
background-color: #f39c12;
|
||||
}
|
||||
.skin-yellow .content-header {
|
||||
background: transparent;
|
||||
}
|
||||
.skin-yellow .wrapper,
|
||||
.skin-yellow .main-sidebar,
|
||||
.skin-yellow .left-side {
|
||||
background-color: #222d32;
|
||||
}
|
||||
.skin-yellow .user-panel > .info,
|
||||
.skin-yellow .user-panel > .info > a {
|
||||
color: #fff;
|
||||
}
|
||||
.skin-yellow .sidebar-menu > li.header {
|
||||
color: #4b646f;
|
||||
background: #1a2226;
|
||||
}
|
||||
.skin-yellow .sidebar-menu > li > a {
|
||||
border-left: 3px solid transparent;
|
||||
}
|
||||
.skin-yellow .sidebar-menu > li:hover > a,
|
||||
.skin-yellow .sidebar-menu > li.active > a {
|
||||
color: #ffffff;
|
||||
background: #1e282c;
|
||||
border-left-color: #f39c12;
|
||||
}
|
||||
.skin-yellow .sidebar-menu > li > .treeview-menu {
|
||||
margin: 0 1px;
|
||||
background: #2c3b41;
|
||||
}
|
||||
.skin-yellow .sidebar a {
|
||||
color: #b8c7ce;
|
||||
}
|
||||
.skin-yellow .sidebar a:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
.skin-yellow .treeview-menu > li > a {
|
||||
color: #8aa4af;
|
||||
}
|
||||
.skin-yellow .treeview-menu > li.active > a,
|
||||
.skin-yellow .treeview-menu > li > a:hover {
|
||||
color: #ffffff;
|
||||
}
|
||||
.skin-yellow .sidebar-form {
|
||||
border-radius: 3px;
|
||||
border: 1px solid #374850;
|
||||
margin: 10px 10px;
|
||||
}
|
||||
.skin-yellow .sidebar-form input[type="text"],
|
||||
.skin-yellow .sidebar-form .btn {
|
||||
box-shadow: none;
|
||||
background-color: #374850;
|
||||
border: 1px solid transparent;
|
||||
height: 35px;
|
||||
-webkit-transition: all 0.3s ease-in-out;
|
||||
-o-transition: all 0.3s ease-in-out;
|
||||
transition: all 0.3s ease-in-out;
|
||||
}
|
||||
.skin-yellow .sidebar-form input[type="text"] {
|
||||
color: #666;
|
||||
border-top-left-radius: 2px;
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
border-bottom-left-radius: 2px;
|
||||
}
|
||||
.skin-yellow .sidebar-form input[type="text"]:focus,
|
||||
.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
background-color: #fff;
|
||||
color: #666;
|
||||
}
|
||||
.skin-yellow .sidebar-form input[type="text"]:focus + .input-group-btn .btn {
|
||||
border-left-color: #fff;
|
||||
}
|
||||
.skin-yellow .sidebar-form .btn {
|
||||
color: #999;
|
||||
border-top-left-radius: 0;
|
||||
border-top-right-radius: 2px;
|
||||
border-bottom-right-radius: 2px;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
1
src/main/webapp/assets/vendors/AdminLTE-2.2.3/css/skins/skin-yellow.min.css
vendored
Executable file
@@ -0,0 +1 @@
|
||||
.skin-yellow .main-header .navbar{background-color:#f39c12}.skin-yellow .main-header .navbar .nav>li>a{color:#fff}.skin-yellow .main-header .navbar .nav>li>a:hover,.skin-yellow .main-header .navbar .nav>li>a:active,.skin-yellow .main-header .navbar .nav>li>a:focus,.skin-yellow .main-header .navbar .nav .open>a,.skin-yellow .main-header .navbar .nav .open>a:hover,.skin-yellow .main-header .navbar .nav .open>a:focus,.skin-yellow .main-header .navbar .nav>.active>a{background:rgba(0,0,0,0.1);color:#f6f6f6}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{color:#f6f6f6;background:rgba(0,0,0,0.1)}.skin-yellow .main-header .navbar .sidebar-toggle{color:#fff}.skin-yellow .main-header .navbar .sidebar-toggle:hover{background-color:#e08e0b}@media (max-width:767px){.skin-yellow .main-header .navbar .dropdown-menu li.divider{background-color:rgba(255,255,255,0.1)}.skin-yellow .main-header .navbar .dropdown-menu li a{color:#fff}.skin-yellow .main-header .navbar .dropdown-menu li a:hover{background:#e08e0b}}.skin-yellow .main-header .logo{background-color:#e08e0b;color:#fff;border-bottom:0 solid transparent}.skin-yellow .main-header .logo:hover{background-color:#db8b0b}.skin-yellow .main-header li.user-header{background-color:#f39c12}.skin-yellow .content-header{background:transparent}.skin-yellow .wrapper,.skin-yellow .main-sidebar,.skin-yellow .left-side{background-color:#222d32}.skin-yellow .user-panel>.info,.skin-yellow .user-panel>.info>a{color:#fff}.skin-yellow .sidebar-menu>li.header{color:#4b646f;background:#1a2226}.skin-yellow .sidebar-menu>li>a{border-left:3px solid transparent}.skin-yellow .sidebar-menu>li:hover>a,.skin-yellow .sidebar-menu>li.active>a{color:#fff;background:#1e282c;border-left-color:#f39c12}.skin-yellow .sidebar-menu>li>.treeview-menu{margin:0 1px;background:#2c3b41}.skin-yellow .sidebar a{color:#b8c7ce}.skin-yellow .sidebar a:hover{text-decoration:none}.skin-yellow .treeview-menu>li>a{color:#8aa4af}.skin-yellow .treeview-menu>li.active>a,.skin-yellow .treeview-menu>li>a:hover{color:#fff}.skin-yellow .sidebar-form{border-radius:3px;border:1px solid #374850;margin:10px 10px}.skin-yellow .sidebar-form input[type="text"],.skin-yellow .sidebar-form .btn{box-shadow:none;background-color:#374850;border:1px solid transparent;height:35px;-webkit-transition:all .3s ease-in-out;-o-transition:all .3s ease-in-out;transition:all .3s ease-in-out}.skin-yellow .sidebar-form input[type="text"]{color:#666;border-top-left-radius:2px;border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:2px}.skin-yellow .sidebar-form input[type="text"]:focus,.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{background-color:#fff;color:#666}.skin-yellow .sidebar-form input[type="text"]:focus+.input-group-btn .btn{border-left-color:#fff}.skin-yellow .sidebar-form .btn{color:#999;border-top-left-radius:0;border-top-right-radius:2px;border-bottom-right-radius:2px;border-bottom-left-radius:0}
|
||||
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/avatar.png
vendored
Executable file
|
After Width: | Height: | Size: 8.3 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/avatar04.png
vendored
Executable file
|
After Width: | Height: | Size: 14 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/avatar2.png
vendored
Executable file
|
After Width: | Height: | Size: 8.6 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/avatar3.png
vendored
Executable file
|
After Width: | Height: | Size: 9.6 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/avatar5.png
vendored
Executable file
|
After Width: | Height: | Size: 7.8 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/boxed-bg.jpg
vendored
Executable file
|
After Width: | Height: | Size: 121 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/boxed-bg.png
vendored
Executable file
|
After Width: | Height: | Size: 43 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/credit/american-express.png
vendored
Executable file
|
After Width: | Height: | Size: 2.2 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/credit/cirrus.png
vendored
Executable file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/credit/mastercard.png
vendored
Executable file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/credit/mestro.png
vendored
Executable file
|
After Width: | Height: | Size: 1.6 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/credit/paypal.png
vendored
Executable file
|
After Width: | Height: | Size: 2.0 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/credit/paypal2.png
vendored
Executable file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/credit/visa.png
vendored
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/default-50x50.gif
vendored
Executable file
|
After Width: | Height: | Size: 184 B |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/icons.png
vendored
Executable file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/photo1.png
vendored
Executable file
|
After Width: | Height: | Size: 658 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/photo2.png
vendored
Executable file
|
After Width: | Height: | Size: 414 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/photo3.jpg
vendored
Executable file
|
After Width: | Height: | Size: 383 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/photo4.jpg
vendored
Executable file
|
After Width: | Height: | Size: 1.1 MiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/user1-128x128.jpg
vendored
Executable file
|
After Width: | Height: | Size: 2.8 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/user2-160x160.jpg
vendored
Executable file
|
After Width: | Height: | Size: 6.9 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/user3-128x128.jpg
vendored
Executable file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/user4-128x128.jpg
vendored
Executable file
|
After Width: | Height: | Size: 3.4 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/user5-128x128.jpg
vendored
Executable file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/user6-128x128.jpg
vendored
Executable file
|
After Width: | Height: | Size: 4.2 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/user7-128x128.jpg
vendored
Executable file
|
After Width: | Height: | Size: 6.3 KiB |
BIN
src/main/webapp/assets/vendors/AdminLTE-2.2.3/img/user8-128x128.jpg
vendored
Executable file
|
After Width: | Height: | Size: 4.9 KiB |
758
src/main/webapp/assets/vendors/AdminLTE-2.2.3/js/app.js
vendored
Executable file
@@ -0,0 +1,758 @@
|
||||
/*! AdminLTE app.js
|
||||
* ================
|
||||
* Main JS application file for AdminLTE v2. This file
|
||||
* should be included in all pages. It controls some layout
|
||||
* options and implements exclusive AdminLTE plugins.
|
||||
*
|
||||
* @Author Almsaeed Studio
|
||||
* @Support <http://www.almsaeedstudio.com>
|
||||
* @Email <support@almsaeedstudio.com>
|
||||
* @version 2.3.3
|
||||
* @license MIT <http://opensource.org/licenses/MIT>
|
||||
*/
|
||||
|
||||
//Make sure jQuery has been loaded before app.js
|
||||
if (typeof jQuery === "undefined") {
|
||||
throw new Error("AdminLTE requires jQuery");
|
||||
}
|
||||
|
||||
/* AdminLTE
|
||||
*
|
||||
* @type Object
|
||||
* @description $.AdminLTE is the main object for the template's app.
|
||||
* It's used for implementing functions and options related
|
||||
* to the template. Keeping everything wrapped in an object
|
||||
* prevents conflict with other plugins and is a better
|
||||
* way to organize our code.
|
||||
*/
|
||||
$.AdminLTE = {};
|
||||
|
||||
/* --------------------
|
||||
* - AdminLTE Options -
|
||||
* --------------------
|
||||
* Modify these options to suit your implementation
|
||||
*/
|
||||
$.AdminLTE.options = {
|
||||
//Add slimscroll to navbar menus
|
||||
//This requires you to load the slimscroll plugin
|
||||
//in every page before app.js
|
||||
navbarMenuSlimscroll: true,
|
||||
navbarMenuSlimscrollWidth: "3px", //The width of the scroll bar
|
||||
navbarMenuHeight: "200px", //The height of the inner menu
|
||||
//General animation speed for JS animated elements such as box collapse/expand and
|
||||
//sidebar treeview slide up/down. This options accepts an integer as milliseconds,
|
||||
//'fast', 'normal', or 'slow'
|
||||
animationSpeed: 500,
|
||||
//Sidebar push menu toggle button selector
|
||||
sidebarToggleSelector: "[data-toggle='offcanvas']",
|
||||
//Activate sidebar push menu
|
||||
sidebarPushMenu: true,
|
||||
//Activate sidebar slimscroll if the fixed layout is set (requires SlimScroll Plugin)
|
||||
sidebarSlimScroll: true,
|
||||
//Enable sidebar expand on hover effect for sidebar mini
|
||||
//This option is forced to true if both the fixed layout and sidebar mini
|
||||
//are used together
|
||||
sidebarExpandOnHover: false,
|
||||
//BoxRefresh Plugin
|
||||
enableBoxRefresh: true,
|
||||
//Bootstrap.js tooltip
|
||||
enableBSToppltip: true,
|
||||
BSTooltipSelector: "[data-toggle='tooltip']",
|
||||
//Enable Fast Click. Fastclick.js creates a more
|
||||
//native touch experience with touch devices. If you
|
||||
//choose to enable the plugin, make sure you load the script
|
||||
//before AdminLTE's app.js
|
||||
enableFastclick: true,
|
||||
//Control Sidebar Options
|
||||
enableControlSidebar: true,
|
||||
controlSidebarOptions: {
|
||||
//Which button should trigger the open/close event
|
||||
toggleBtnSelector: "[data-toggle='control-sidebar']",
|
||||
//The sidebar selector
|
||||
selector: ".control-sidebar",
|
||||
//Enable slide over content
|
||||
slide: true
|
||||
},
|
||||
//Box Widget Plugin. Enable this plugin
|
||||
//to allow boxes to be collapsed and/or removed
|
||||
enableBoxWidget: true,
|
||||
//Box Widget plugin options
|
||||
boxWidgetOptions: {
|
||||
boxWidgetIcons: {
|
||||
//Collapse icon
|
||||
collapse: 'fa-minus',
|
||||
//Open icon
|
||||
open: 'fa-plus',
|
||||
//Remove icon
|
||||
remove: 'fa-times'
|
||||
},
|
||||
boxWidgetSelectors: {
|
||||
//Remove button selector
|
||||
remove: '[data-widget="remove"]',
|
||||
//Collapse button selector
|
||||
collapse: '[data-widget="collapse"]'
|
||||
}
|
||||
},
|
||||
//Direct Chat plugin options
|
||||
directChat: {
|
||||
//Enable direct chat by default
|
||||
enable: true,
|
||||
//The button to open and close the chat contacts pane
|
||||
contactToggleSelector: '[data-widget="chat-pane-toggle"]'
|
||||
},
|
||||
//Define the set of colors to use globally around the website
|
||||
colors: {
|
||||
lightBlue: "#3c8dbc",
|
||||
red: "#f56954",
|
||||
green: "#00a65a",
|
||||
aqua: "#00c0ef",
|
||||
yellow: "#f39c12",
|
||||
blue: "#0073b7",
|
||||
navy: "#001F3F",
|
||||
teal: "#39CCCC",
|
||||
olive: "#3D9970",
|
||||
lime: "#01FF70",
|
||||
orange: "#FF851B",
|
||||
fuchsia: "#F012BE",
|
||||
purple: "#8E24AA",
|
||||
maroon: "#D81B60",
|
||||
black: "#222222",
|
||||
gray: "#d2d6de"
|
||||
},
|
||||
//The standard screen sizes that bootstrap uses.
|
||||
//If you change these in the variables.less file, change
|
||||
//them here too.
|
||||
screenSizes: {
|
||||
xs: 480,
|
||||
sm: 768,
|
||||
md: 992,
|
||||
lg: 1200
|
||||
}
|
||||
};
|
||||
|
||||
/* ------------------
|
||||
* - Implementation -
|
||||
* ------------------
|
||||
* The next block of code implements AdminLTE's
|
||||
* functions and plugins as specified by the
|
||||
* options above.
|
||||
*/
|
||||
$(function () {
|
||||
"use strict";
|
||||
|
||||
//Fix for IE page transitions
|
||||
$("body").removeClass("hold-transition");
|
||||
|
||||
//Extend options if external options exist
|
||||
if (typeof AdminLTEOptions !== "undefined") {
|
||||
$.extend(true,
|
||||
$.AdminLTE.options,
|
||||
AdminLTEOptions);
|
||||
}
|
||||
|
||||
//Easy access to options
|
||||
var o = $.AdminLTE.options;
|
||||
|
||||
//Set up the object
|
||||
_init();
|
||||
|
||||
//Activate the layout maker
|
||||
$.AdminLTE.layout.activate();
|
||||
|
||||
//Enable sidebar tree view controls
|
||||
$.AdminLTE.tree('.sidebar');
|
||||
|
||||
//Enable control sidebar
|
||||
if (o.enableControlSidebar) {
|
||||
$.AdminLTE.controlSidebar.activate();
|
||||
}
|
||||
|
||||
//Add slimscroll to navbar dropdown
|
||||
if (o.navbarMenuSlimscroll && typeof $.fn.slimscroll != 'undefined') {
|
||||
$(".navbar .menu").slimscroll({
|
||||
height: o.navbarMenuHeight,
|
||||
alwaysVisible: false,
|
||||
size: o.navbarMenuSlimscrollWidth
|
||||
}).css("width", "100%");
|
||||
}
|
||||
|
||||
//Activate sidebar push menu
|
||||
if (o.sidebarPushMenu) {
|
||||
$.AdminLTE.pushMenu.activate(o.sidebarToggleSelector);
|
||||
}
|
||||
|
||||
//Activate Bootstrap tooltip
|
||||
if (o.enableBSToppltip) {
|
||||
$('body').tooltip({
|
||||
selector: o.BSTooltipSelector
|
||||
});
|
||||
}
|
||||
|
||||
//Activate box widget
|
||||
if (o.enableBoxWidget) {
|
||||
$.AdminLTE.boxWidget.activate();
|
||||
}
|
||||
|
||||
//Activate fast click
|
||||
if (o.enableFastclick && typeof FastClick != 'undefined') {
|
||||
FastClick.attach(document.body);
|
||||
}
|
||||
|
||||
//Activate direct chat widget
|
||||
if (o.directChat.enable) {
|
||||
$(document).on('click', o.directChat.contactToggleSelector, function () {
|
||||
var box = $(this).parents('.direct-chat').first();
|
||||
box.toggleClass('direct-chat-contacts-open');
|
||||
});
|
||||
}
|
||||
|
||||
/*
|
||||
* INITIALIZE BUTTON TOGGLE
|
||||
* ------------------------
|
||||
*/
|
||||
$('.btn-group[data-toggle="btn-toggle"]').each(function () {
|
||||
var group = $(this);
|
||||
$(this).find(".btn").on('click', function (e) {
|
||||
group.find(".btn.active").removeClass("active");
|
||||
$(this).addClass("active");
|
||||
e.preventDefault();
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
/* ----------------------------------
|
||||
* - Initialize the AdminLTE Object -
|
||||
* ----------------------------------
|
||||
* All AdminLTE functions are implemented below.
|
||||
*/
|
||||
function _init() {
|
||||
'use strict';
|
||||
/* Layout
|
||||
* ======
|
||||
* Fixes the layout height in case min-height fails.
|
||||
*
|
||||
* @type Object
|
||||
* @usage $.AdminLTE.layout.activate()
|
||||
* $.AdminLTE.layout.fix()
|
||||
* $.AdminLTE.layout.fixSidebar()
|
||||
*/
|
||||
$.AdminLTE.layout = {
|
||||
activate: function () {
|
||||
var _this = this;
|
||||
_this.fix();
|
||||
_this.fixSidebar();
|
||||
$(window, ".wrapper").resize(function () {
|
||||
_this.fix();
|
||||
_this.fixSidebar();
|
||||
});
|
||||
},
|
||||
fix: function () {
|
||||
//Get window height and the wrapper height
|
||||
var neg = $('.main-header').outerHeight() + $('.main-footer').outerHeight();
|
||||
var window_height = $(window).height();
|
||||
var sidebar_height = $(".sidebar").height();
|
||||
//Set the min-height of the content and sidebar based on the
|
||||
//the height of the document.
|
||||
if ($("body").hasClass("fixed")) {
|
||||
$(".content-wrapper, .right-side").css('min-height', window_height - $('.main-footer').outerHeight());
|
||||
} else {
|
||||
var postSetWidth;
|
||||
if (window_height >= sidebar_height) {
|
||||
$(".content-wrapper, .right-side").css('min-height', window_height - neg);
|
||||
postSetWidth = window_height - neg;
|
||||
} else {
|
||||
$(".content-wrapper, .right-side").css('min-height', sidebar_height);
|
||||
postSetWidth = sidebar_height;
|
||||
}
|
||||
|
||||
//Fix for the control sidebar height
|
||||
var controlSidebar = $($.AdminLTE.options.controlSidebarOptions.selector);
|
||||
if (typeof controlSidebar !== "undefined") {
|
||||
if (controlSidebar.height() > postSetWidth)
|
||||
$(".content-wrapper, .right-side").css('min-height', controlSidebar.height());
|
||||
}
|
||||
|
||||
}
|
||||
},
|
||||
fixSidebar: function () {
|
||||
//Make sure the body tag has the .fixed class
|
||||
if (!$("body").hasClass("fixed")) {
|
||||
if (typeof $.fn.slimScroll != 'undefined') {
|
||||
$(".sidebar").slimScroll({destroy: true}).height("auto");
|
||||
}
|
||||
return;
|
||||
} else if (typeof $.fn.slimScroll == 'undefined' && window.console) {
|
||||
window.console.error("Error: the fixed layout requires the slimscroll plugin!");
|
||||
}
|
||||
//Enable slimscroll for fixed layout
|
||||
if ($.AdminLTE.options.sidebarSlimScroll) {
|
||||
if (typeof $.fn.slimScroll != 'undefined') {
|
||||
//Destroy if it exists
|
||||
$(".sidebar").slimScroll({destroy: true}).height("auto");
|
||||
//Add slimscroll
|
||||
$(".sidebar").slimscroll({
|
||||
height: ($(window).height() - $(".main-header").height()) + "px",
|
||||
color: "rgba(0,0,0,0.2)",
|
||||
size: "3px"
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/* PushMenu()
|
||||
* ==========
|
||||
* Adds the push menu functionality to the sidebar.
|
||||
*
|
||||
* @type Function
|
||||
* @usage: $.AdminLTE.pushMenu("[data-toggle='offcanvas']")
|
||||
*/
|
||||
$.AdminLTE.pushMenu = {
|
||||
activate: function (toggleBtn) {
|
||||
//Get the screen sizes
|
||||
var screenSizes = $.AdminLTE.options.screenSizes;
|
||||
|
||||
//Enable sidebar toggle
|
||||
$(document).on('click', toggleBtn, function (e) {
|
||||
e.preventDefault();
|
||||
|
||||
//Enable sidebar push menu
|
||||
if ($(window).width() > (screenSizes.sm - 1)) {
|
||||
if ($("body").hasClass('sidebar-collapse')) {
|
||||
$("body").removeClass('sidebar-collapse').trigger('expanded.pushMenu');
|
||||
} else {
|
||||
$("body").addClass('sidebar-collapse').trigger('collapsed.pushMenu');
|
||||
}
|
||||
}
|
||||
//Handle sidebar push menu for small screens
|
||||
else {
|
||||
if ($("body").hasClass('sidebar-open')) {
|
||||
$("body").removeClass('sidebar-open').removeClass('sidebar-collapse').trigger('collapsed.pushMenu');
|
||||
} else {
|
||||
$("body").addClass('sidebar-open').trigger('expanded.pushMenu');
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
$(".content-wrapper").click(function () {
|
||||
//Enable hide menu when clicking on the content-wrapper on small screens
|
||||
if ($(window).width() <= (screenSizes.sm - 1) && $("body").hasClass("sidebar-open")) {
|
||||
$("body").removeClass('sidebar-open');
|
||||
}
|
||||
});
|
||||
|
||||
//Enable expand on hover for sidebar mini
|
||||
if ($.AdminLTE.options.sidebarExpandOnHover
|
||||
|| ($('body').hasClass('fixed')
|
||||
&& $('body').hasClass('sidebar-mini'))) {
|
||||
this.expandOnHover();
|
||||
}
|
||||
},
|
||||
expandOnHover: function () {
|
||||
var _this = this;
|
||||
var screenWidth = $.AdminLTE.options.screenSizes.sm - 1;
|
||||
//Expand sidebar on hover
|
||||
$('.main-sidebar').hover(function () {
|
||||
if ($('body').hasClass('sidebar-mini')
|
||||
&& $("body").hasClass('sidebar-collapse')
|
||||
&& $(window).width() > screenWidth) {
|
||||
_this.expand();
|
||||
}
|
||||
}, function () {
|
||||
if ($('body').hasClass('sidebar-mini')
|
||||
&& $('body').hasClass('sidebar-expanded-on-hover')
|
||||
&& $(window).width() > screenWidth) {
|
||||
_this.collapse();
|
||||
}
|
||||
});
|
||||
},
|
||||
expand: function () {
|
||||
$("body").removeClass('sidebar-collapse').addClass('sidebar-expanded-on-hover');
|
||||
},
|
||||
collapse: function () {
|
||||
if ($('body').hasClass('sidebar-expanded-on-hover')) {
|
||||
$('body').removeClass('sidebar-expanded-on-hover').addClass('sidebar-collapse');
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
/* Tree()
|
||||
* ======
|
||||
* Converts the sidebar into a multilevel
|
||||
* tree view menu.
|
||||
*
|
||||
* @type Function
|
||||
* @Usage: $.AdminLTE.tree('.sidebar')
|
||||
*/
|
||||
$.AdminLTE.tree = function (menu) {
|
||||
var _this = this;
|
||||
var animationSpeed = $.AdminLTE.options.animationSpeed;
|
||||
$(document).on('click', menu + ' li a', function (e) {
|
||||
//Get the clicked link and the next element
|
||||
var $this = $(this);
|
||||
var checkElement = $this.next();
|
||||
|
||||
//Check if the next element is a menu and is visible
|
||||
if ((checkElement.is('.treeview-menu')) && (checkElement.is(':visible')) && (!$('body').hasClass('sidebar-collapse'))) {
|
||||
//Close the menu
|
||||
checkElement.slideUp(animationSpeed, function () {
|
||||
checkElement.removeClass('menu-open');
|
||||
//Fix the layout in case the sidebar stretches over the height of the window
|
||||
//_this.layout.fix();
|
||||
});
|
||||
checkElement.parent("li").removeClass("active");
|
||||
}
|
||||
//If the menu is not visible
|
||||
else if ((checkElement.is('.treeview-menu')) && (!checkElement.is(':visible'))) {
|
||||
//Get the parent menu
|
||||
var parent = $this.parents('ul').first();
|
||||
//Close all open menus within the parent
|
||||
var ul = parent.find('ul:visible').slideUp(animationSpeed);
|
||||
//Remove the menu-open class from the parent
|
||||
ul.removeClass('menu-open');
|
||||
//Get the parent li
|
||||
var parent_li = $this.parent("li");
|
||||
|
||||
//Open the target menu and add the menu-open class
|
||||
checkElement.slideDown(animationSpeed, function () {
|
||||
//Add the class active to the parent li
|
||||
checkElement.addClass('menu-open');
|
||||
parent.find('li.active').removeClass('active');
|
||||
parent_li.addClass('active');
|
||||
//Fix the layout in case the sidebar stretches over the height of the window
|
||||
_this.layout.fix();
|
||||
});
|
||||
}
|
||||
//if this isn't a link, prevent the page from being redirected
|
||||
if (checkElement.is('.treeview-menu')) {
|
||||
e.preventDefault();
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/* ControlSidebar
|
||||
* ==============
|
||||
* Adds functionality to the right sidebar
|
||||
*
|
||||
* @type Object
|
||||
* @usage $.AdminLTE.controlSidebar.activate(options)
|
||||
*/
|
||||
$.AdminLTE.controlSidebar = {
|
||||
//instantiate the object
|
||||
activate: function () {
|
||||
//Get the object
|
||||
var _this = this;
|
||||
//Update options
|
||||
var o = $.AdminLTE.options.controlSidebarOptions;
|
||||
//Get the sidebar
|
||||
var sidebar = $(o.selector);
|
||||
//The toggle button
|
||||
var btn = $(o.toggleBtnSelector);
|
||||
|
||||
//Listen to the click event
|
||||
btn.on('click', function (e) {
|
||||
e.preventDefault();
|
||||
//If the sidebar is not open
|
||||
if (!sidebar.hasClass('control-sidebar-open')
|
||||
&& !$('body').hasClass('control-sidebar-open')) {
|
||||
//Open the sidebar
|
||||
_this.open(sidebar, o.slide);
|
||||
} else {
|
||||
_this.close(sidebar, o.slide);
|
||||
}
|
||||
});
|
||||
|
||||
//If the body has a boxed layout, fix the sidebar bg position
|
||||
var bg = $(".control-sidebar-bg");
|
||||
_this._fix(bg);
|
||||
|
||||
//If the body has a fixed layout, make the control sidebar fixed
|
||||
if ($('body').hasClass('fixed')) {
|
||||
_this._fixForFixed(sidebar);
|
||||
} else {
|
||||
//If the content height is less than the sidebar's height, force max height
|
||||
if ($('.content-wrapper, .right-side').height() < sidebar.height()) {
|
||||
_this._fixForContent(sidebar);
|
||||
}
|
||||
}
|
||||
},
|
||||
//Open the control sidebar
|
||||
open: function (sidebar, slide) {
|
||||
//Slide over content
|
||||
if (slide) {
|
||||
sidebar.addClass('control-sidebar-open');
|
||||
} else {
|
||||
//Push the content by adding the open class to the body instead
|
||||
//of the sidebar itself
|
||||
$('body').addClass('control-sidebar-open');
|
||||
}
|
||||
},
|
||||
//Close the control sidebar
|
||||
close: function (sidebar, slide) {
|
||||
if (slide) {
|
||||
sidebar.removeClass('control-sidebar-open');
|
||||
} else {
|
||||
$('body').removeClass('control-sidebar-open');
|
||||
}
|
||||
},
|
||||
_fix: function (sidebar) {
|
||||
var _this = this;
|
||||
if ($("body").hasClass('layout-boxed')) {
|
||||
sidebar.css('position', 'absolute');
|
||||
sidebar.height($(".wrapper").height());
|
||||
$(window).resize(function () {
|
||||
_this._fix(sidebar);
|
||||
});
|
||||
} else {
|
||||
sidebar.css({
|
||||
'position': 'fixed',
|
||||
'height': 'auto'
|
||||
});
|
||||
}
|
||||
},
|
||||
_fixForFixed: function (sidebar) {
|
||||
sidebar.css({
|
||||
'position': 'fixed',
|
||||
'max-height': '100%',
|
||||
'overflow': 'auto',
|
||||
'padding-bottom': '50px'
|
||||
});
|
||||
},
|
||||
_fixForContent: function (sidebar) {
|
||||
$(".content-wrapper, .right-side").css('min-height', sidebar.height());
|
||||
}
|
||||
};
|
||||
|
||||
/* BoxWidget
|
||||
* =========
|
||||
* BoxWidget is a plugin to handle collapsing and
|
||||
* removing boxes from the screen.
|
||||
*
|
||||
* @type Object
|
||||
* @usage $.AdminLTE.boxWidget.activate()
|
||||
* Set all your options in the main $.AdminLTE.options object
|
||||
*/
|
||||
$.AdminLTE.boxWidget = {
|
||||
selectors: $.AdminLTE.options.boxWidgetOptions.boxWidgetSelectors,
|
||||
icons: $.AdminLTE.options.boxWidgetOptions.boxWidgetIcons,
|
||||
animationSpeed: $.AdminLTE.options.animationSpeed,
|
||||
activate: function (_box) {
|
||||
var _this = this;
|
||||
if (!_box) {
|
||||
_box = document; // activate all boxes per default
|
||||
}
|
||||
//Listen for collapse event triggers
|
||||
$(_box).on('click', _this.selectors.collapse, function (e) {
|
||||
e.preventDefault();
|
||||
_this.collapse($(this));
|
||||
});
|
||||
|
||||
//Listen for remove event triggers
|
||||
$(_box).on('click', _this.selectors.remove, function (e) {
|
||||
e.preventDefault();
|
||||
_this.remove($(this));
|
||||
});
|
||||
},
|
||||
collapse: function (element) {
|
||||
var _this = this;
|
||||
//Find the box parent
|
||||
var box = element.parents(".box").first();
|
||||
//Find the body and the footer
|
||||
var box_content = box.find("> .box-body, > .box-footer, > form >.box-body, > form > .box-footer");
|
||||
if (!box.hasClass("collapsed-box")) {
|
||||
//Convert minus into plus
|
||||
element.children(":first")
|
||||
.removeClass(_this.icons.collapse)
|
||||
.addClass(_this.icons.open);
|
||||
//Hide the content
|
||||
box_content.slideUp(_this.animationSpeed, function () {
|
||||
box.addClass("collapsed-box");
|
||||
});
|
||||
} else {
|
||||
//Convert plus into minus
|
||||
element.children(":first")
|
||||
.removeClass(_this.icons.open)
|
||||
.addClass(_this.icons.collapse);
|
||||
//Show the content
|
||||
box_content.slideDown(_this.animationSpeed, function () {
|
||||
box.removeClass("collapsed-box");
|
||||
});
|
||||
}
|
||||
},
|
||||
remove: function (element) {
|
||||
//Find the box parent
|
||||
var box = element.parents(".box").first();
|
||||
box.slideUp(this.animationSpeed);
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
/* ------------------
|
||||
* - Custom Plugins -
|
||||
* ------------------
|
||||
* All custom plugins are defined below.
|
||||
*/
|
||||
|
||||
/*
|
||||
* BOX REFRESH BUTTON
|
||||
* ------------------
|
||||
* This is a custom plugin to use with the component BOX. It allows you to add
|
||||
* a refresh button to the box. It converts the box's state to a loading state.
|
||||
*
|
||||
* @type plugin
|
||||
* @usage $("#box-widget").boxRefresh( options );
|
||||
*/
|
||||
(function ($) {
|
||||
|
||||
"use strict";
|
||||
|
||||
$.fn.boxRefresh = function (options) {
|
||||
|
||||
// Render options
|
||||
var settings = $.extend({
|
||||
//Refresh button selector
|
||||
trigger: ".refresh-btn",
|
||||
//File source to be loaded (e.g: ajax/src.php)
|
||||
source: "",
|
||||
//Callbacks
|
||||
onLoadStart: function (box) {
|
||||
return box;
|
||||
}, //Right after the button has been clicked
|
||||
onLoadDone: function (box) {
|
||||
return box;
|
||||
} //When the source has been loaded
|
||||
|
||||
}, options);
|
||||
|
||||
//The overlay
|
||||
var overlay = $('<div class="overlay"><div class="fa fa-refresh fa-spin"></div></div>');
|
||||
|
||||
return this.each(function () {
|
||||
//if a source is specified
|
||||
if (settings.source === "") {
|
||||
if (window.console) {
|
||||
window.console.log("Please specify a source first - boxRefresh()");
|
||||
}
|
||||
return;
|
||||
}
|
||||
//the box
|
||||
var box = $(this);
|
||||
//the button
|
||||
var rBtn = box.find(settings.trigger).first();
|
||||
|
||||
//On trigger click
|
||||
rBtn.on('click', function (e) {
|
||||
e.preventDefault();
|
||||
//Add loading overlay
|
||||
start(box);
|
||||
|
||||
//Perform ajax call
|
||||
box.find(".box-body").load(settings.source, function () {
|
||||
done(box);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
function start(box) {
|
||||
//Add overlay and loading img
|
||||
box.append(overlay);
|
||||
|
||||
settings.onLoadStart.call(box);
|
||||
}
|
||||
|
||||
function done(box) {
|
||||
//Remove overlay and loading img
|
||||
box.find(overlay).remove();
|
||||
|
||||
settings.onLoadDone.call(box);
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
|
||||
/*
|
||||
* EXPLICIT BOX CONTROLS
|
||||
* -----------------------
|
||||
* This is a custom plugin to use with the component BOX. It allows you to activate
|
||||
* a box inserted in the DOM after the app.js was loaded, toggle and remove box.
|
||||
*
|
||||
* @type plugin
|
||||
* @usage $("#box-widget").activateBox();
|
||||
* @usage $("#box-widget").toggleBox();
|
||||
* @usage $("#box-widget").removeBox();
|
||||
*/
|
||||
(function ($) {
|
||||
|
||||
'use strict';
|
||||
|
||||
$.fn.activateBox = function () {
|
||||
$.AdminLTE.boxWidget.activate(this);
|
||||
};
|
||||
|
||||
$.fn.toggleBox = function(){
|
||||
var button = $($.AdminLTE.boxWidget.selectors.collapse, this);
|
||||
$.AdminLTE.boxWidget.collapse(button);
|
||||
};
|
||||
|
||||
$.fn.removeBox = function(){
|
||||
var button = $($.AdminLTE.boxWidget.selectors.remove, this);
|
||||
$.AdminLTE.boxWidget.remove(button);
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
|
||||
/*
|
||||
* TODO LIST CUSTOM PLUGIN
|
||||
* -----------------------
|
||||
* This plugin depends on iCheck plugin for checkbox and radio inputs
|
||||
*
|
||||
* @type plugin
|
||||
* @usage $("#todo-widget").todolist( options );
|
||||
*/
|
||||
(function ($) {
|
||||
|
||||
'use strict';
|
||||
|
||||
$.fn.todolist = function (options) {
|
||||
// Render options
|
||||
var settings = $.extend({
|
||||
//When the user checks the input
|
||||
onCheck: function (ele) {
|
||||
return ele;
|
||||
},
|
||||
//When the user unchecks the input
|
||||
onUncheck: function (ele) {
|
||||
return ele;
|
||||
}
|
||||
}, options);
|
||||
|
||||
return this.each(function () {
|
||||
|
||||
if (typeof $.fn.iCheck != 'undefined') {
|
||||
$('input', this).on('ifChecked', function () {
|
||||
var ele = $(this).parents("li").first();
|
||||
ele.toggleClass("done");
|
||||
settings.onCheck.call(ele);
|
||||
});
|
||||
|
||||
$('input', this).on('ifUnchecked', function () {
|
||||
var ele = $(this).parents("li").first();
|
||||
ele.toggleClass("done");
|
||||
settings.onUncheck.call(ele);
|
||||
});
|
||||
} else {
|
||||
$('input', this).on('change', function () {
|
||||
var ele = $(this).parents("li").first();
|
||||
ele.toggleClass("done");
|
||||
if ($('input', ele).is(":checked")) {
|
||||
settings.onCheck.call(ele);
|
||||
} else {
|
||||
settings.onUncheck.call(ele);
|
||||
}
|
||||
});
|
||||
}
|
||||
});
|
||||
};
|
||||
}(jQuery));
|
||||
13
src/main/webapp/assets/vendors/AdminLTE-2.2.3/js/app.min.js
vendored
Executable file
338
src/main/webapp/assets/vendors/AdminLTE-2.2.3/js/demo.js
vendored
Executable file
@@ -0,0 +1,338 @@
|
||||
/**
|
||||
* AdminLTE Demo Menu
|
||||
* ------------------
|
||||
* You should not use this file in production.
|
||||
* This file is for demo purposes only.
|
||||
*/
|
||||
(function ($, AdminLTE) {
|
||||
|
||||
"use strict";
|
||||
|
||||
/**
|
||||
* List of all the available skins
|
||||
*
|
||||
* @type Array
|
||||
*/
|
||||
var my_skins = [
|
||||
"skin-blue",
|
||||
"skin-black",
|
||||
"skin-red",
|
||||
"skin-yellow",
|
||||
"skin-purple",
|
||||
"skin-green",
|
||||
"skin-blue-light",
|
||||
"skin-black-light",
|
||||
"skin-red-light",
|
||||
"skin-yellow-light",
|
||||
"skin-purple-light",
|
||||
"skin-green-light"
|
||||
];
|
||||
|
||||
//Create the new tab
|
||||
var tab_pane = $("<div />", {
|
||||
"id": "control-sidebar-theme-demo-options-tab",
|
||||
"class": "tab-pane active"
|
||||
});
|
||||
|
||||
//Create the tab button
|
||||
var tab_button = $("<li />", {"class": "active"})
|
||||
.html("<a href='#control-sidebar-theme-demo-options-tab' data-toggle='tab'>"
|
||||
+ "<i class='fa fa-wrench'></i>"
|
||||
+ "</a>");
|
||||
|
||||
//Add the tab button to the right sidebar tabs
|
||||
$("[href='#control-sidebar-home-tab']")
|
||||
.parent()
|
||||
.before(tab_button);
|
||||
|
||||
//Create the menu
|
||||
var demo_settings = $("<div />");
|
||||
|
||||
//Layout options
|
||||
demo_settings.append(
|
||||
"<h4 class='control-sidebar-heading'>"
|
||||
+ "Layout Options"
|
||||
+ "</h4>"
|
||||
//Fixed layout
|
||||
+ "<div class='form-group'>"
|
||||
+ "<label class='control-sidebar-subheading'>"
|
||||
+ "<input type='checkbox' data-layout='fixed' class='pull-right'/> "
|
||||
+ "Fixed layout"
|
||||
+ "</label>"
|
||||
+ "<p>Activate the fixed layout. You can't use fixed and boxed layouts together</p>"
|
||||
+ "</div>"
|
||||
//Boxed layout
|
||||
+ "<div class='form-group'>"
|
||||
+ "<label class='control-sidebar-subheading'>"
|
||||
+ "<input type='checkbox' data-layout='layout-boxed'class='pull-right'/> "
|
||||
+ "Boxed Layout"
|
||||
+ "</label>"
|
||||
+ "<p>Activate the boxed layout</p>"
|
||||
+ "</div>"
|
||||
//Sidebar Toggle
|
||||
+ "<div class='form-group'>"
|
||||
+ "<label class='control-sidebar-subheading'>"
|
||||
+ "<input type='checkbox' data-layout='sidebar-collapse' class='pull-right'/> "
|
||||
+ "Toggle Sidebar"
|
||||
+ "</label>"
|
||||
+ "<p>Toggle the left sidebar's state (open or collapse)</p>"
|
||||
+ "</div>"
|
||||
//Sidebar mini expand on hover toggle
|
||||
+ "<div class='form-group'>"
|
||||
+ "<label class='control-sidebar-subheading'>"
|
||||
+ "<input type='checkbox' data-enable='expandOnHover' class='pull-right'/> "
|
||||
+ "Sidebar Expand on Hover"
|
||||
+ "</label>"
|
||||
+ "<p>Let the sidebar mini expand on hover</p>"
|
||||
+ "</div>"
|
||||
//Control Sidebar Toggle
|
||||
+ "<div class='form-group'>"
|
||||
+ "<label class='control-sidebar-subheading'>"
|
||||
+ "<input type='checkbox' data-controlsidebar='control-sidebar-open' class='pull-right'/> "
|
||||
+ "Toggle Right Sidebar Slide"
|
||||
+ "</label>"
|
||||
+ "<p>Toggle between slide over content and push content effects</p>"
|
||||
+ "</div>"
|
||||
//Control Sidebar Skin Toggle
|
||||
+ "<div class='form-group'>"
|
||||
+ "<label class='control-sidebar-subheading'>"
|
||||
+ "<input type='checkbox' data-sidebarskin='toggle' class='pull-right'/> "
|
||||
+ "Toggle Right Sidebar Skin"
|
||||
+ "</label>"
|
||||
+ "<p>Toggle between dark and light skins for the right sidebar</p>"
|
||||
+ "</div>"
|
||||
);
|
||||
var skins_list = $("<ul />", {"class": 'list-unstyled clearfix'});
|
||||
|
||||
//Dark sidebar skins
|
||||
var skin_blue =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-blue' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px; background: #367fa9;'></span><span class='bg-light-blue' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin'>Blue</p>");
|
||||
skins_list.append(skin_blue);
|
||||
var skin_black =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-black' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div style='box-shadow: 0 0 2px rgba(0,0,0,0.1)' class='clearfix'><span style='display:block; width: 20%; float: left; height: 7px; background: #fefefe;'></span><span style='display:block; width: 80%; float: left; height: 7px; background: #fefefe;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin'>Black</p>");
|
||||
skins_list.append(skin_black);
|
||||
var skin_purple =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-purple' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-purple-active'></span><span class='bg-purple' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin'>Purple</p>");
|
||||
skins_list.append(skin_purple);
|
||||
var skin_green =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-green' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-green-active'></span><span class='bg-green' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin'>Green</p>");
|
||||
skins_list.append(skin_green);
|
||||
var skin_red =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-red' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-red-active'></span><span class='bg-red' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin'>Red</p>");
|
||||
skins_list.append(skin_red);
|
||||
var skin_yellow =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-yellow' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-yellow-active'></span><span class='bg-yellow' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #222d32;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin'>Yellow</p>");
|
||||
skins_list.append(skin_yellow);
|
||||
|
||||
//Light sidebar skins
|
||||
var skin_blue_light =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-blue-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px; background: #367fa9;'></span><span class='bg-light-blue' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin' style='font-size: 12px'>Blue Light</p>");
|
||||
skins_list.append(skin_blue_light);
|
||||
var skin_black_light =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-black-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div style='box-shadow: 0 0 2px rgba(0,0,0,0.1)' class='clearfix'><span style='display:block; width: 20%; float: left; height: 7px; background: #fefefe;'></span><span style='display:block; width: 80%; float: left; height: 7px; background: #fefefe;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin' style='font-size: 12px'>Black Light</p>");
|
||||
skins_list.append(skin_black_light);
|
||||
var skin_purple_light =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-purple-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-purple-active'></span><span class='bg-purple' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin' style='font-size: 12px'>Purple Light</p>");
|
||||
skins_list.append(skin_purple_light);
|
||||
var skin_green_light =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-green-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-green-active'></span><span class='bg-green' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin' style='font-size: 12px'>Green Light</p>");
|
||||
skins_list.append(skin_green_light);
|
||||
var skin_red_light =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-red-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-red-active'></span><span class='bg-red' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin' style='font-size: 12px'>Red Light</p>");
|
||||
skins_list.append(skin_red_light);
|
||||
var skin_yellow_light =
|
||||
$("<li />", {style: "float:left; width: 33.33333%; padding: 5px;"})
|
||||
.append("<a href='javascript:void(0);' data-skin='skin-yellow-light' style='display: block; box-shadow: 0 0 3px rgba(0,0,0,0.4)' class='clearfix full-opacity-hover'>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 7px;' class='bg-yellow-active'></span><span class='bg-yellow' style='display:block; width: 80%; float: left; height: 7px;'></span></div>"
|
||||
+ "<div><span style='display:block; width: 20%; float: left; height: 20px; background: #f9fafc;'></span><span style='display:block; width: 80%; float: left; height: 20px; background: #f4f5f7;'></span></div>"
|
||||
+ "</a>"
|
||||
+ "<p class='text-center no-margin' style='font-size: 12px;'>Yellow Light</p>");
|
||||
skins_list.append(skin_yellow_light);
|
||||
|
||||
demo_settings.append("<h4 class='control-sidebar-heading'>Skins</h4>");
|
||||
demo_settings.append(skins_list);
|
||||
|
||||
tab_pane.append(demo_settings);
|
||||
$("#control-sidebar-home-tab").after(tab_pane);
|
||||
|
||||
setup();
|
||||
|
||||
/**
|
||||
* Toggles layout classes
|
||||
*
|
||||
* @param String cls the layout class to toggle
|
||||
* @returns void
|
||||
*/
|
||||
function change_layout(cls) {
|
||||
$("body").toggleClass(cls);
|
||||
AdminLTE.layout.fixSidebar();
|
||||
//Fix the problem with right sidebar and layout boxed
|
||||
if (cls == "layout-boxed")
|
||||
AdminLTE.controlSidebar._fix($(".control-sidebar-bg"));
|
||||
if ($('body').hasClass('fixed') && cls == 'fixed') {
|
||||
AdminLTE.pushMenu.expandOnHover();
|
||||
AdminLTE.layout.activate();
|
||||
}
|
||||
AdminLTE.controlSidebar._fix($(".control-sidebar-bg"));
|
||||
AdminLTE.controlSidebar._fix($(".control-sidebar"));
|
||||
}
|
||||
|
||||
/**
|
||||
* Replaces the old skin with the new skin
|
||||
* @param String cls the new skin class
|
||||
* @returns Boolean false to prevent link's default action
|
||||
*/
|
||||
function change_skin(cls) {
|
||||
$.each(my_skins, function (i) {
|
||||
$("body").removeClass(my_skins[i]);
|
||||
});
|
||||
|
||||
$("body").addClass(cls);
|
||||
store('skin', cls);
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Store a new settings in the browser
|
||||
*
|
||||
* @param String name Name of the setting
|
||||
* @param String val Value of the setting
|
||||
* @returns void
|
||||
*/
|
||||
function store(name, val) {
|
||||
if (typeof (Storage) !== "undefined") {
|
||||
localStorage.setItem(name, val);
|
||||
} else {
|
||||
window.alert('Please use a modern browser to properly view this template!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get a prestored setting
|
||||
*
|
||||
* @param String name Name of of the setting
|
||||
* @returns String The value of the setting | null
|
||||
*/
|
||||
function get(name) {
|
||||
if (typeof (Storage) !== "undefined") {
|
||||
return localStorage.getItem(name);
|
||||
} else {
|
||||
window.alert('Please use a modern browser to properly view this template!');
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve default settings and apply them to the template
|
||||
*
|
||||
* @returns void
|
||||
*/
|
||||
function setup() {
|
||||
var tmp = get('skin');
|
||||
if (tmp && $.inArray(tmp, my_skins))
|
||||
change_skin(tmp);
|
||||
|
||||
//Add the change skin listener
|
||||
$("[data-skin]").on('click', function (e) {
|
||||
e.preventDefault();
|
||||
change_skin($(this).data('skin'));
|
||||
});
|
||||
|
||||
//Add the layout manager
|
||||
$("[data-layout]").on('click', function () {
|
||||
change_layout($(this).data('layout'));
|
||||
});
|
||||
|
||||
$("[data-controlsidebar]").on('click', function () {
|
||||
change_layout($(this).data('controlsidebar'));
|
||||
var slide = !AdminLTE.options.controlSidebarOptions.slide;
|
||||
AdminLTE.options.controlSidebarOptions.slide = slide;
|
||||
if (!slide)
|
||||
$('.control-sidebar').removeClass('control-sidebar-open');
|
||||
});
|
||||
|
||||
$("[data-sidebarskin='toggle']").on('click', function () {
|
||||
var sidebar = $(".control-sidebar");
|
||||
if (sidebar.hasClass("control-sidebar-dark")) {
|
||||
sidebar.removeClass("control-sidebar-dark")
|
||||
sidebar.addClass("control-sidebar-light")
|
||||
} else {
|
||||
sidebar.removeClass("control-sidebar-light")
|
||||
sidebar.addClass("control-sidebar-dark")
|
||||
}
|
||||
});
|
||||
|
||||
$("[data-enable='expandOnHover']").on('click', function () {
|
||||
$(this).attr('disabled', true);
|
||||
AdminLTE.pushMenu.expandOnHover();
|
||||
if (!$('body').hasClass('sidebar-collapse'))
|
||||
$("[data-layout='sidebar-collapse']").click();
|
||||
});
|
||||
|
||||
// Reset options
|
||||
if ($('body').hasClass('fixed')) {
|
||||
$("[data-layout='fixed']").attr('checked', 'checked');
|
||||
}
|
||||
if ($('body').hasClass('layout-boxed')) {
|
||||
$("[data-layout='layout-boxed']").attr('checked', 'checked');
|
||||
}
|
||||
if ($('body').hasClass('sidebar-collapse')) {
|
||||
$("[data-layout='sidebar-collapse']").attr('checked', 'checked');
|
||||
}
|
||||
|
||||
}
|
||||
})(jQuery, $.AdminLTE);
|
||||
210
src/main/webapp/assets/vendors/AdminLTE-2.2.3/js/pages/dashboard.js
vendored
Executable file
@@ -0,0 +1,210 @@
|
||||
/*
|
||||
* Author: Abdullah A Almsaeed
|
||||
* Date: 4 Jan 2014
|
||||
* Description:
|
||||
* This is a demo file used only for the main dashboard (index.html)
|
||||
**/
|
||||
|
||||
$(function () {
|
||||
|
||||
"use strict";
|
||||
|
||||
//Make the dashboard widgets sortable Using jquery UI
|
||||
$(".connectedSortable").sortable({
|
||||
placeholder: "sort-highlight",
|
||||
connectWith: ".connectedSortable",
|
||||
handle: ".box-header, .nav-tabs",
|
||||
forcePlaceholderSize: true,
|
||||
zIndex: 999999
|
||||
});
|
||||
$(".connectedSortable .box-header, .connectedSortable .nav-tabs-custom").css("cursor", "move");
|
||||
|
||||
//jQuery UI sortable for the todo list
|
||||
$(".todo-list").sortable({
|
||||
placeholder: "sort-highlight",
|
||||
handle: ".handle",
|
||||
forcePlaceholderSize: true,
|
||||
zIndex: 999999
|
||||
});
|
||||
|
||||
//bootstrap WYSIHTML5 - text editor
|
||||
$(".textarea").wysihtml5();
|
||||
|
||||
$('.daterange').daterangepicker({
|
||||
ranges: {
|
||||
'Today': [moment(), moment()],
|
||||
'Yesterday': [moment().subtract(1, 'days'), moment().subtract(1, 'days')],
|
||||
'Last 7 Days': [moment().subtract(6, 'days'), moment()],
|
||||
'Last 30 Days': [moment().subtract(29, 'days'), moment()],
|
||||
'This Month': [moment().startOf('month'), moment().endOf('month')],
|
||||
'Last Month': [moment().subtract(1, 'month').startOf('month'), moment().subtract(1, 'month').endOf('month')]
|
||||
},
|
||||
startDate: moment().subtract(29, 'days'),
|
||||
endDate: moment()
|
||||
}, function (start, end) {
|
||||
window.alert("You chose: " + start.format('MMMM D, YYYY') + ' - ' + end.format('MMMM D, YYYY'));
|
||||
});
|
||||
|
||||
/* jQueryKnob */
|
||||
$(".knob").knob();
|
||||
|
||||
//jvectormap data
|
||||
var visitorsData = {
|
||||
"US": 398, //USA
|
||||
"SA": 400, //Saudi Arabia
|
||||
"CA": 1000, //Canada
|
||||
"DE": 500, //Germany
|
||||
"FR": 760, //France
|
||||
"CN": 300, //China
|
||||
"AU": 700, //Australia
|
||||
"BR": 600, //Brazil
|
||||
"IN": 800, //India
|
||||
"GB": 320, //Great Britain
|
||||
"RU": 3000 //Russia
|
||||
};
|
||||
//World map by jvectormap
|
||||
$('#world-map').vectorMap({
|
||||
map: 'world_mill_en',
|
||||
backgroundColor: "transparent",
|
||||
regionStyle: {
|
||||
initial: {
|
||||
fill: '#e4e4e4',
|
||||
"fill-opacity": 1,
|
||||
stroke: 'none',
|
||||
"stroke-width": 0,
|
||||
"stroke-opacity": 1
|
||||
}
|
||||
},
|
||||
series: {
|
||||
regions: [{
|
||||
values: visitorsData,
|
||||
scale: ["#92c1dc", "#ebf4f9"],
|
||||
normalizeFunction: 'polynomial'
|
||||
}]
|
||||
},
|
||||
onRegionLabelShow: function (e, el, code) {
|
||||
if (typeof visitorsData[code] != "undefined")
|
||||
el.html(el.html() + ': ' + visitorsData[code] + ' new visitors');
|
||||
}
|
||||
});
|
||||
|
||||
//Sparkline charts
|
||||
var myvalues = [1000, 1200, 920, 927, 931, 1027, 819, 930, 1021];
|
||||
$('#sparkline-1').sparkline(myvalues, {
|
||||
type: 'line',
|
||||
lineColor: '#92c1dc',
|
||||
fillColor: "#ebf4f9",
|
||||
height: '50',
|
||||
width: '80'
|
||||
});
|
||||
myvalues = [515, 519, 520, 522, 652, 810, 370, 627, 319, 630, 921];
|
||||
$('#sparkline-2').sparkline(myvalues, {
|
||||
type: 'line',
|
||||
lineColor: '#92c1dc',
|
||||
fillColor: "#ebf4f9",
|
||||
height: '50',
|
||||
width: '80'
|
||||
});
|
||||
myvalues = [15, 19, 20, 22, 33, 27, 31, 27, 19, 30, 21];
|
||||
$('#sparkline-3').sparkline(myvalues, {
|
||||
type: 'line',
|
||||
lineColor: '#92c1dc',
|
||||
fillColor: "#ebf4f9",
|
||||
height: '50',
|
||||
width: '80'
|
||||
});
|
||||
|
||||
//The Calender
|
||||
$("#calendar").datepicker();
|
||||
|
||||
//SLIMSCROLL FOR CHAT WIDGET
|
||||
$('#chat-box').slimScroll({
|
||||
height: '250px'
|
||||
});
|
||||
|
||||
/* Morris.js Charts */
|
||||
// Sales chart
|
||||
var area = new Morris.Area({
|
||||
element: 'revenue-chart',
|
||||
resize: true,
|
||||
data: [
|
||||
{y: '2011 Q1', item1: 2666, item2: 2666},
|
||||
{y: '2011 Q2', item1: 2778, item2: 2294},
|
||||
{y: '2011 Q3', item1: 4912, item2: 1969},
|
||||
{y: '2011 Q4', item1: 3767, item2: 3597},
|
||||
{y: '2012 Q1', item1: 6810, item2: 1914},
|
||||
{y: '2012 Q2', item1: 5670, item2: 4293},
|
||||
{y: '2012 Q3', item1: 4820, item2: 3795},
|
||||
{y: '2012 Q4', item1: 15073, item2: 5967},
|
||||
{y: '2013 Q1', item1: 10687, item2: 4460},
|
||||
{y: '2013 Q2', item1: 8432, item2: 5713}
|
||||
],
|
||||
xkey: 'y',
|
||||
ykeys: ['item1', 'item2'],
|
||||
labels: ['Item 1', 'Item 2'],
|
||||
lineColors: ['#a0d0e0', '#3c8dbc'],
|
||||
hideHover: 'auto'
|
||||
});
|
||||
var line = new Morris.Line({
|
||||
element: 'line-chart',
|
||||
resize: true,
|
||||
data: [
|
||||
{y: '2011 Q1', item1: 2666},
|
||||
{y: '2011 Q2', item1: 2778},
|
||||
{y: '2011 Q3', item1: 4912},
|
||||
{y: '2011 Q4', item1: 3767},
|
||||
{y: '2012 Q1', item1: 6810},
|
||||
{y: '2012 Q2', item1: 5670},
|
||||
{y: '2012 Q3', item1: 4820},
|
||||
{y: '2012 Q4', item1: 15073},
|
||||
{y: '2013 Q1', item1: 10687},
|
||||
{y: '2013 Q2', item1: 8432}
|
||||
],
|
||||
xkey: 'y',
|
||||
ykeys: ['item1'],
|
||||
labels: ['Item 1'],
|
||||
lineColors: ['#efefef'],
|
||||
lineWidth: 2,
|
||||
hideHover: 'auto',
|
||||
gridTextColor: "#fff",
|
||||
gridStrokeWidth: 0.4,
|
||||
pointSize: 4,
|
||||
pointStrokeColors: ["#efefef"],
|
||||
gridLineColor: "#efefef",
|
||||
gridTextFamily: "Open Sans",
|
||||
gridTextSize: 10
|
||||
});
|
||||
|
||||
//Donut Chart
|
||||
var donut = new Morris.Donut({
|
||||
element: 'sales-chart',
|
||||
resize: true,
|
||||
colors: ["#3c8dbc", "#f56954", "#00a65a"],
|
||||
data: [
|
||||
{label: "Download Sales", value: 12},
|
||||
{label: "In-Store Sales", value: 30},
|
||||
{label: "Mail-Order Sales", value: 20}
|
||||
],
|
||||
hideHover: 'auto'
|
||||
});
|
||||
|
||||
//Fix for charts under tabs
|
||||
$('.box ul.nav a').on('shown.bs.tab', function () {
|
||||
area.redraw();
|
||||
donut.redraw();
|
||||
line.redraw();
|
||||
});
|
||||
|
||||
/* The todo list plugin */
|
||||
$(".todo-list").todolist({
|
||||
onCheck: function (ele) {
|
||||
window.console.log("The element has been checked");
|
||||
return ele;
|
||||
},
|
||||
onUncheck: function (ele) {
|
||||
window.console.log("The element has been unchecked");
|
||||
return ele;
|
||||
}
|
||||
});
|
||||
|
||||
});
|
||||
274
src/main/webapp/assets/vendors/AdminLTE-2.2.3/js/pages/dashboard2.js
vendored
Executable file
@@ -0,0 +1,274 @@
|
||||
$(function () {
|
||||
|
||||
'use strict';
|
||||
|
||||
/* ChartJS
|
||||
* -------
|
||||
* Here we will create a few charts using ChartJS
|
||||
*/
|
||||
|
||||
//-----------------------
|
||||
//- MONTHLY SALES CHART -
|
||||
//-----------------------
|
||||
|
||||
// Get context with jQuery - using jQuery's .get() method.
|
||||
var salesChartCanvas = $("#salesChart").get(0).getContext("2d");
|
||||
// This will get the first returned node in the jQuery collection.
|
||||
var salesChart = new Chart(salesChartCanvas);
|
||||
|
||||
var salesChartData = {
|
||||
labels: ["January", "February", "March", "April", "May", "June", "July"],
|
||||
datasets: [
|
||||
{
|
||||
label: "Electronics",
|
||||
fillColor: "rgb(210, 214, 222)",
|
||||
strokeColor: "rgb(210, 214, 222)",
|
||||
pointColor: "rgb(210, 214, 222)",
|
||||
pointStrokeColor: "#c1c7d1",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgb(220,220,220)",
|
||||
data: [65, 59, 80, 81, 56, 55, 40]
|
||||
},
|
||||
{
|
||||
label: "Digital Goods",
|
||||
fillColor: "rgba(60,141,188,0.9)",
|
||||
strokeColor: "rgba(60,141,188,0.8)",
|
||||
pointColor: "#3b8bba",
|
||||
pointStrokeColor: "rgba(60,141,188,1)",
|
||||
pointHighlightFill: "#fff",
|
||||
pointHighlightStroke: "rgba(60,141,188,1)",
|
||||
data: [28, 48, 40, 19, 86, 27, 90]
|
||||
}
|
||||
]
|
||||
};
|
||||
|
||||
var salesChartOptions = {
|
||||
//Boolean - If we should show the scale at all
|
||||
showScale: true,
|
||||
//Boolean - Whether grid lines are shown across the chart
|
||||
scaleShowGridLines: false,
|
||||
//String - Colour of the grid lines
|
||||
scaleGridLineColor: "rgba(0,0,0,.05)",
|
||||
//Number - Width of the grid lines
|
||||
scaleGridLineWidth: 1,
|
||||
//Boolean - Whether to show horizontal lines (except X axis)
|
||||
scaleShowHorizontalLines: true,
|
||||
//Boolean - Whether to show vertical lines (except Y axis)
|
||||
scaleShowVerticalLines: true,
|
||||
//Boolean - Whether the line is curved between points
|
||||
bezierCurve: true,
|
||||
//Number - Tension of the bezier curve between points
|
||||
bezierCurveTension: 0.3,
|
||||
//Boolean - Whether to show a dot for each point
|
||||
pointDot: false,
|
||||
//Number - Radius of each point dot in pixels
|
||||
pointDotRadius: 4,
|
||||
//Number - Pixel width of point dot stroke
|
||||
pointDotStrokeWidth: 1,
|
||||
//Number - amount extra to add to the radius to cater for hit detection outside the drawn point
|
||||
pointHitDetectionRadius: 20,
|
||||
//Boolean - Whether to show a stroke for datasets
|
||||
datasetStroke: true,
|
||||
//Number - Pixel width of dataset stroke
|
||||
datasetStrokeWidth: 2,
|
||||
//Boolean - Whether to fill the dataset with a color
|
||||
datasetFill: true,
|
||||
//String - A legend template
|
||||
legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<datasets.length; i++){%><li><span style=\"background-color:<%=datasets[i].lineColor%>\"></span><%=datasets[i].label%></li><%}%></ul>",
|
||||
//Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
|
||||
maintainAspectRatio: true,
|
||||
//Boolean - whether to make the chart responsive to window resizing
|
||||
responsive: true
|
||||
};
|
||||
|
||||
//Create the line chart
|
||||
salesChart.Line(salesChartData, salesChartOptions);
|
||||
|
||||
//---------------------------
|
||||
//- END MONTHLY SALES CHART -
|
||||
//---------------------------
|
||||
|
||||
//-------------
|
||||
//- PIE CHART -
|
||||
//-------------
|
||||
// Get context with jQuery - using jQuery's .get() method.
|
||||
var pieChartCanvas = $("#pieChart").get(0).getContext("2d");
|
||||
var pieChart = new Chart(pieChartCanvas);
|
||||
var PieData = [
|
||||
{
|
||||
value: 700,
|
||||
color: "#f56954",
|
||||
highlight: "#f56954",
|
||||
label: "Chrome"
|
||||
},
|
||||
{
|
||||
value: 500,
|
||||
color: "#00a65a",
|
||||
highlight: "#00a65a",
|
||||
label: "IE"
|
||||
},
|
||||
{
|
||||
value: 400,
|
||||
color: "#f39c12",
|
||||
highlight: "#f39c12",
|
||||
label: "FireFox"
|
||||
},
|
||||
{
|
||||
value: 600,
|
||||
color: "#00c0ef",
|
||||
highlight: "#00c0ef",
|
||||
label: "Safari"
|
||||
},
|
||||
{
|
||||
value: 300,
|
||||
color: "#3c8dbc",
|
||||
highlight: "#3c8dbc",
|
||||
label: "Opera"
|
||||
},
|
||||
{
|
||||
value: 100,
|
||||
color: "#d2d6de",
|
||||
highlight: "#d2d6de",
|
||||
label: "Navigator"
|
||||
}
|
||||
];
|
||||
var pieOptions = {
|
||||
//Boolean - Whether we should show a stroke on each segment
|
||||
segmentShowStroke: true,
|
||||
//String - The colour of each segment stroke
|
||||
segmentStrokeColor: "#fff",
|
||||
//Number - The width of each segment stroke
|
||||
segmentStrokeWidth: 1,
|
||||
//Number - The percentage of the chart that we cut out of the middle
|
||||
percentageInnerCutout: 50, // This is 0 for Pie charts
|
||||
//Number - Amount of animation steps
|
||||
animationSteps: 100,
|
||||
//String - Animation easing effect
|
||||
animationEasing: "easeOutBounce",
|
||||
//Boolean - Whether we animate the rotation of the Doughnut
|
||||
animateRotate: true,
|
||||
//Boolean - Whether we animate scaling the Doughnut from the centre
|
||||
animateScale: false,
|
||||
//Boolean - whether to make the chart responsive to window resizing
|
||||
responsive: true,
|
||||
// Boolean - whether to maintain the starting aspect ratio or not when responsive, if set to false, will take up entire container
|
||||
maintainAspectRatio: false,
|
||||
//String - A legend template
|
||||
legendTemplate: "<ul class=\"<%=name.toLowerCase()%>-legend\"><% for (var i=0; i<segments.length; i++){%><li><span style=\"background-color:<%=segments[i].fillColor%>\"></span><%if(segments[i].label){%><%=segments[i].label%><%}%></li><%}%></ul>",
|
||||
//String - A tooltip template
|
||||
tooltipTemplate: "<%=value %> <%=label%> users"
|
||||
};
|
||||
//Create pie or douhnut chart
|
||||
// You can switch between pie and douhnut using the method below.
|
||||
pieChart.Doughnut(PieData, pieOptions);
|
||||
//-----------------
|
||||
//- END PIE CHART -
|
||||
//-----------------
|
||||
|
||||
/* jVector Maps
|
||||
* ------------
|
||||
* Create a world map with markers
|
||||
*/
|
||||
$('#world-map-markers').vectorMap({
|
||||
map: 'world_mill_en',
|
||||
normalizeFunction: 'polynomial',
|
||||
hoverOpacity: 0.7,
|
||||
hoverColor: false,
|
||||
backgroundColor: 'transparent',
|
||||
regionStyle: {
|
||||
initial: {
|
||||
fill: 'rgba(210, 214, 222, 1)',
|
||||
"fill-opacity": 1,
|
||||
stroke: 'none',
|
||||
"stroke-width": 0,
|
||||
"stroke-opacity": 1
|
||||
},
|
||||
hover: {
|
||||
"fill-opacity": 0.7,
|
||||
cursor: 'pointer'
|
||||
},
|
||||
selected: {
|
||||
fill: 'yellow'
|
||||
},
|
||||
selectedHover: {}
|
||||
},
|
||||
markerStyle: {
|
||||
initial: {
|
||||
fill: '#00a65a',
|
||||
stroke: '#111'
|
||||
}
|
||||
},
|
||||
markers: [
|
||||
{latLng: [41.90, 12.45], name: 'Vatican City'},
|
||||
{latLng: [43.73, 7.41], name: 'Monaco'},
|
||||
{latLng: [-0.52, 166.93], name: 'Nauru'},
|
||||
{latLng: [-8.51, 179.21], name: 'Tuvalu'},
|
||||
{latLng: [43.93, 12.46], name: 'San Marino'},
|
||||
{latLng: [47.14, 9.52], name: 'Liechtenstein'},
|
||||
{latLng: [7.11, 171.06], name: 'Marshall Islands'},
|
||||
{latLng: [17.3, -62.73], name: 'Saint Kitts and Nevis'},
|
||||
{latLng: [3.2, 73.22], name: 'Maldives'},
|
||||
{latLng: [35.88, 14.5], name: 'Malta'},
|
||||
{latLng: [12.05, -61.75], name: 'Grenada'},
|
||||
{latLng: [13.16, -61.23], name: 'Saint Vincent and the Grenadines'},
|
||||
{latLng: [13.16, -59.55], name: 'Barbados'},
|
||||
{latLng: [17.11, -61.85], name: 'Antigua and Barbuda'},
|
||||
{latLng: [-4.61, 55.45], name: 'Seychelles'},
|
||||
{latLng: [7.35, 134.46], name: 'Palau'},
|
||||
{latLng: [42.5, 1.51], name: 'Andorra'},
|
||||
{latLng: [14.01, -60.98], name: 'Saint Lucia'},
|
||||
{latLng: [6.91, 158.18], name: 'Federated States of Micronesia'},
|
||||
{latLng: [1.3, 103.8], name: 'Singapore'},
|
||||
{latLng: [1.46, 173.03], name: 'Kiribati'},
|
||||
{latLng: [-21.13, -175.2], name: 'Tonga'},
|
||||
{latLng: [15.3, -61.38], name: 'Dominica'},
|
||||
{latLng: [-20.2, 57.5], name: 'Mauritius'},
|
||||
{latLng: [26.02, 50.55], name: 'Bahrain'},
|
||||
{latLng: [0.33, 6.73], name: 'São Tomé and Príncipe'}
|
||||
]
|
||||
});
|
||||
|
||||
/* SPARKLINE CHARTS
|
||||
* ----------------
|
||||
* Create a inline charts with spark line
|
||||
*/
|
||||
|
||||
//-----------------
|
||||
//- SPARKLINE BAR -
|
||||
//-----------------
|
||||
$('.sparkbar').each(function () {
|
||||
var $this = $(this);
|
||||
$this.sparkline('html', {
|
||||
type: 'bar',
|
||||
height: $this.data('height') ? $this.data('height') : '30',
|
||||
barColor: $this.data('color')
|
||||
});
|
||||
});
|
||||
|
||||
//-----------------
|
||||
//- SPARKLINE PIE -
|
||||
//-----------------
|
||||
$('.sparkpie').each(function () {
|
||||
var $this = $(this);
|
||||
$this.sparkline('html', {
|
||||
type: 'pie',
|
||||
height: $this.data('height') ? $this.data('height') : '90',
|
||||
sliceColors: $this.data('color')
|
||||
});
|
||||
});
|
||||
|
||||
//------------------
|
||||
//- SPARKLINE LINE -
|
||||
//------------------
|
||||
$('.sparkline').each(function () {
|
||||
var $this = $(this);
|
||||
$this.sparkline('html', {
|
||||
type: 'line',
|
||||
height: $this.data('height') ? $this.data('height') : '90',
|
||||
width: '100%',
|
||||
lineColor: $this.data('linecolor'),
|
||||
fillColor: $this.data('fillcolor'),
|
||||
spotColor: $this.data('spotcolor')
|
||||
});
|
||||
});
|
||||
});
|
||||