Skip to content

Commit

Permalink
Merge branch 'develop'
Browse files Browse the repository at this point in the history
  • Loading branch information
akabekobeko committed Sep 6, 2015
2 parents f09a206 + 8026b98 commit fdc03fb
Show file tree
Hide file tree
Showing 45 changed files with 9,836 additions and 5 deletions.
11 changes: 11 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
node_modules/
dist/
src/stylesheets
samples/

.*
*.map
*.zip
*.js
!theme.js
!.gitignore
File renamed without changes.
22 changes: 17 additions & 5 deletions README.md
100644 → 100755
Original file line number Diff line number Diff line change
Expand Up @@ -2,23 +2,35 @@

Minimal and flat design theme for Redmine.

![Projects](ss.png)

# Feature

* Minimal and flat design
* Modern color scheme by [Flat UI](http://designmodo.github.io/Flat-UI/)
* Modern color scheme by [Flat UI](http://designmodo.github.io/Flat-UI/) & [Espresso](https://github.com/mbadolato/iTerm2-Color-Schemes)
* Flexible ( resolution-independent ) icon by [IcoMoon](https://icomoon.io/)
* Expandable tree view of the project list
* Favicon ( Redmine 2.5 or later )

# Installation

1. Download archive ( minimalflat2-vX.X.X.zip ) from [release page](https://github.com/akabekobeko/redmine-theme-minimalflat2/releases)
1. Download archive ( minimalflat2.zip ) from [release page](https://github.com/akabekobeko/redmine-theme-minimalflat2/releases)
2. Extract archive, and move to `public/themes/minimalflat` at Redmine directory
3. Open Redmine page, and go to **Administration > Settings > Display**
4. Enable the **minimakflat2** from **Theme**
4. Enable the **minimalflat2** from **Theme**

# Libraries

|Library|Author|License|
|:--|:--|:--|
|[IcoMoon - Free](https://icomoon.io/#icons)|[Keyamoon](http://keyamoon.com/)|GPL/CC BY 4.0|
|[Entypo](http://www.entypo.com/)|[Daniel Bruce](http://danielbruce.se/)|CC BY-SA 4.0|
|[bymathias/normalize.styl](https://github.com/bymathias/normalize.styl)|[Mathias Brouilly](http://mathias.brouilly.fr/)|MIT|

# License

* [GNU GENERAL PUBLIC LICENSE Version 2](LICENSE)
* [GNU GENERAL PUBLIC LICENSE Version 2](LICENSE.txt)

# Change log

* Initial commit
* 2015/09/06 : v1.0.0 release
122 changes: 122 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"

Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# All Vagrant configuration is done here. The most common configuration
# options are documented and commented below. For a complete reference,
# please see the online documentation at vagrantup.com.

# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "onozaty/redmine-3.0"

# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
# config.vm.network "forwarded_port", guest: 80, host: 8080

# Create a private network, which allows host-only access to the machine
# using a specific IP.
config.vm.network "private_network", ip: "192.168.33.10"

# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"

# If true, then any SSH connections made will enable agent forwarding.
# Default value: false
# config.ssh.forward_agent = true

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
config.vm.synced_folder "./src", "/var/lib/redmine/public/themes/minimalflat2"

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Don't boot with headless mode
# vb.gui = true
#
# # Use VBoxManage to customize the VM. For example to change memory:
# vb.customize ["modifyvm", :id, "--memory", "1024"]
# end
#
# View the documentation for the provider you're using for more
# information on available options.

# Enable provisioning with CFEngine. CFEngine Community packages are
# automatically installed. For example, configure the host as a
# policy server and optionally a policy file to run:
#
# config.vm.provision "cfengine" do |cf|
# cf.am_policy_hub = true
# # cf.run_file = "motd.cf"
# end
#
# You can also configure and bootstrap a client to an existing
# policy server:
#
# config.vm.provision "cfengine" do |cf|
# cf.policy_server_address = "10.0.2.15"
# end

# Enable provisioning with Puppet stand alone. Puppet manifests
# are contained in a directory path relative to this Vagrantfile.
# You will need to create the manifests directory and a manifest in
# the file default.pp in the manifests_path directory.
#
# config.vm.provision "puppet" do |puppet|
# puppet.manifests_path = "manifests"
# puppet.manifest_file = "site.pp"
# end

# Enable provisioning with chef solo, specifying a cookbooks path, roles
# path, and data_bags path (all relative to this Vagrantfile), and adding
# some recipes and/or roles.
#
# config.vm.provision "chef_solo" do |chef|
# chef.cookbooks_path = "../my-recipes/cookbooks"
# chef.roles_path = "../my-recipes/roles"
# chef.data_bags_path = "../my-recipes/data_bags"
# chef.add_recipe "mysql"
# chef.add_role "web"
#
# # You may also specify custom JSON attributes:
# chef.json = { mysql_password: "foo" }
# end

# Enable provisioning with chef server, specifying the chef server URL,
# and the path to the validation key (relative to this Vagrantfile).
#
# The Opscode Platform uses HTTPS. Substitute your organization for
# ORGNAME in the URL and validation key.
#
# If you have your own Chef Server, use the appropriate URL, which may be
# HTTP instead of HTTPS depending on your configuration. Also change the
# validation key to validation.pem.
#
# config.vm.provision "chef_client" do |chef|
# chef.chef_server_url = "https://api.opscode.com/organizations/ORGNAME"
# chef.validation_key_path = "ORGNAME-validator.pem"
# end
#
# If you're using the Opscode platform, your validator client is
# ORGNAME-validator, replacing ORGNAME with your organization name.
#
# If you have your own Chef Server, the default validation client name is
# chef-validator, unless you changed the configuration.
#
# chef.validation_client_name = "ORGNAME-validator"
end
74 changes: 74 additions & 0 deletions gulpfile.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
var gulp = require( 'gulp' );
var $ = require( 'gulp-load-plugins' )();

// 共通タスク設定
var common = {
src: './src',
dest: './dist',
isRelease: false
};

// Stylus コンパイルと結合
gulp.task( 'build:css', function() {
var isSourceMaps = !( common.isRelease );
var dest = ( common.isRelease ? common.dest : common.src );

return gulp.src( [ common.src + '/stylus/App.styl' ] )
.pipe( $.plumber() )
.pipe( $.if( isSourceMaps, $.sourcemaps.init() ) )
.pipe( $.stylus() )
.pipe( $.rename( 'application.css' ) )
.pipe( $.if( isSourceMaps, $.sourcemaps.write( '.' ) ) )
.pipe( gulp.dest( dest + '/stylesheets' ) );
} );

// リリース用イメージ削除
gulp.task( 'release:clean', function( done ) {
var del = require( 'del' );
del( [ common.dest, './minimalflat2.zip' ], done );
} );

gulp.task( 'release:css', [ 'release:clean' ], function( done ) {
var runSequence = require( 'run-sequence' );
common.isRelease = true;
runSequence( 'build:css', done );
} );

// リリース用ドキュメントのコピー
gulp.task( 'release:copy-doc', [ 'release:css' ], function() {
var src = [
'./README.md',
'./ss.png',
'./LICENSE.txt'
];

return gulp.src( src )
.pipe( gulp.dest( common.dest ) );
} );

// リリース用ファイルのコピー
gulp.task( 'release:copy', [ 'release:copy-doc' ], function() {
var src = [
common.src + '/javascripts/theme.js',
common.src + '/favicon/favicon.ico',
common.src + '/fonts/**'
];

return gulp.src( src, { base: common.src } )
.pipe( gulp.dest( common.dest ) );
} );

// リリース用イメージのビルドと ZIP イメージ生成
gulp.task( 'release', [ 'release:copy', 'release:css' ], function() {
return gulp.src( common.dest + '/**/*.*' )
.pipe( $.zip( 'minimalflat2.zip' ) )
.pipe( gulp.dest( './' ) );
} );

// ファイル監視
gulp.task( 'watch', [ 'build:css' ], function() {
gulp.watch( [ common.src + '/stylus/*.styl' ], [ 'build:css' ] );
} );

// 既定タスク
gulp.task( 'default', [ 'watch' ] );
36 changes: 36 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
{
"name": "redmine-theme-minimalflat2",
"version": "1.0.0",
"description": "Minimal and flat design theme for Redmine.",
"main": "index.js",
"scripts": {
"start": "gulp watch",
"test": "echo \"Error: no test specified\" && exit 1",
"release": "gulp release"
},
"repository": {
"type": "git",
"url": "git+https://github.com/akabekobeko/redmine-theme-minimalflat2.git"
},
"keywords": [
"Redmine"
],
"author": "akabeko",
"license": "GPL-2.0",
"bugs": {
"url": "https://github.com/akabekobeko/redmine-theme-minimalflat2/issues"
},
"homepage": "https://github.com/akabekobeko/redmine-theme-minimalflat2#readme",
"devDependencies": {
"del": "^1.2.0",
"gulp": "^3.9.0",
"gulp-if": "^1.2.5",
"gulp-load-plugins": "^0.10.0",
"gulp-plumber": "^1.0.1",
"gulp-rename": "^1.2.2",
"gulp-sourcemaps": "^1.5.2",
"gulp-stylus": "^2.0.5",
"gulp-zip": "^3.0.2",
"run-sequence": "^1.1.2"
}
}
Loading

0 comments on commit fdc03fb

Please sign in to comment.