pave 0.12.0.rc3 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a787e2be397da57ae99291fa5b3daaaff04fedc2
4
- data.tar.gz: 40926a59b9fe330275321d5f0a0ec3338b6ead46
3
+ metadata.gz: d2d5fe7f671471fe1459f0e2c0f6271b049cd05f
4
+ data.tar.gz: a4fc1c031ed597d9a0bffbdfedf87e58926f7103
5
5
  SHA512:
6
- metadata.gz: 4e60d994a5d206ab0c5b35b78768e4319c60b5d8f002c885ab57dbbaea558d0a088b01cd1a9537053b0293835da04d410d2bfda219433c3d3ed26e7201ce3370
7
- data.tar.gz: 4a308a668ca4097a47edb3a36a845e0a876c3e07382f174040d6af7d89592c880940109e6a19898f524c4e9780fa845125585395e270693b36604bed0e284a44
6
+ metadata.gz: 67b610b8f2502646e66d0fc9d771fd234590121e5b6c2499e2c27a5d9f443d879bd5e39c056b58c01dc27d101fecd5f3a61b130de146f20642fdeb6a50d7f297
7
+ data.tar.gz: 530dac82d7450405d707204e574387dba9b6a468b9aeb4a98a7655258c41a7d3f1cc54be82ff355bad9fcb92905cb742ba7f63de53a6adf892dbaf069fa3d507
data/Gemfile.lock CHANGED
@@ -1,16 +1,16 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- pave (0.9.0)
4
+ pave (0.11.24)
5
5
  commander (~> 4.1)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- commander (4.1.5)
10
+ commander (4.2.0)
11
11
  highline (~> 1.6.11)
12
12
  diff-lcs (1.2.5)
13
- highline (1.6.20)
13
+ highline (1.6.21)
14
14
  rake (10.1.1)
15
15
  rdoc (4.1.0)
16
16
  rspec (2.14.1)
data/README.md CHANGED
@@ -28,12 +28,16 @@ This:
28
28
 
29
29
  $ pave deploy:setup
30
30
 
31
- This sets up a Git-based deployment script to the remote server and deploys an initial version. SSH access is required.
31
+ This sets up a Git-based deployment script to the remote server and deploys an initial version. SSH access is required. You may run it multiple times and setup as many deployment endpoints as you want.
32
32
 
33
33
  $ pave deploy
34
34
 
35
35
  Deploys the site using git. Files and databases are not deployed (see below for how to do that).
36
36
 
37
+ $ pave deploy staging feature-branch
38
+
39
+ Deploys feature-branch to staging remote.
40
+
37
41
  ## Database
38
42
 
39
43
  $ pave db:create mydatabase
data/bin/pave CHANGED
@@ -240,15 +240,6 @@ command :"files:push" do |c|
240
240
  end
241
241
  end
242
242
 
243
- command :"files:sync" do |c|
244
- c.syntax = "pave files:sync"
245
- c.description = "Syncronize local and remote files directories."
246
- c.action do |args|
247
- remote = args.first || "live"
248
- Pave::Files.sync(remote)
249
- end
250
- end
251
-
252
243
  command :"generate:theme" do |c|
253
244
  c.syntax = "pave generate:theme THEME_NAME"
254
245
  c.description = "Set up a blank theme with sass."
data/lib/pave/concrete.rb CHANGED
@@ -19,6 +19,7 @@ module Pave
19
19
  set_up_pave
20
20
  clone_concrete5
21
21
  set_up_folders
22
+ add_config_customizations
22
23
  set_up_git
23
24
  create_virtual_host
24
25
  self
@@ -54,6 +55,25 @@ module Pave
54
55
  sh "touch #{name}/updates/.keep"
55
56
  end
56
57
 
58
+ def add_config_customizations
59
+ config_file = "#{name}/concrete/core/controllers/single_pages/install.php"
60
+ insert_pattern = "'{$salt}');\\n\";"
61
+ file_insert config_file, insert_pattern, config_customizations
62
+ end
63
+
64
+ def config_customizations
65
+ command =<<HD
66
+ $configuration .= '
67
+ define(\"ENABLE_NEWSFLOW_OVERLAY\", false);
68
+ define(\"PERMISSIONS_MODEL\", \"advanced\");
69
+ define(\"STATISTICS_TRACK_PAGE_VIEWS\", false);
70
+ define(\"WHITE_LABEL_DASHBOARD_BACKGROUND_SRC\", \"/concrete/images/spacer.gif\");
71
+ define(\"ENABLE_INTELLIGENT_SEARCH_HELP\", false);
72
+ ';
73
+ HD
74
+ command
75
+ end
76
+
57
77
  def gitignored
58
78
  [
59
79
  "files/*",
data/lib/pave/files.rb CHANGED
@@ -2,34 +2,27 @@ module Pave
2
2
  class Files
3
3
  include Pave::Shell
4
4
 
5
- def self.exclusions
6
- " --exclude 'files/tmp' --exclude 'files/cache' "
7
- end
8
-
9
- def self.flags
10
- " -uazh -e ssh --progress "
11
- end
12
-
13
5
  def self.clear_cache
14
6
  sh "rm -rf ./files/tmp/*; rm -rf ./files/cache/*;"
15
7
  end
16
8
 
17
9
  def self.push(remote="live")
10
+ clear_cache
18
11
  server = Pave::Remote.server(remote)
19
12
  directory = Pave::Remote.directory(remote)
20
- sh "rsync #{flags} #{exclusions} ./files/* #{server}:#{directory}/files/*"
13
+ sh "scp -r ./files #{server}:#{directory}/local_files;"
14
+ sh "ssh #{server} 'cd #{directory};
15
+ mv ./files ./old_files;
16
+ mv ./local_files ./files && rm -rf ./old_files;'"
21
17
  end
22
18
 
23
19
  def self.pull(remote="live")
24
20
  server = Pave::Remote.server(remote)
25
21
  directory = Pave::Remote.directory(remote)
26
- sh "rsync #{flags} #{exclusions} #{server}:#{directory}/files/* ./files/*"
22
+ sh "scp -r #{server}:#{directory}/files ./remote_files;
23
+ mv ./files ./old_files;
24
+ mv ./remote_files ./files && rm -rf ./old_files;"
27
25
  clear_cache
28
26
  end
29
-
30
- def self.sync(remote="live")
31
- pull(remote)
32
- push(remote)
33
- end
34
27
  end
35
28
  end
data/lib/pave/remote.rb CHANGED
@@ -4,7 +4,7 @@ module Pave
4
4
 
5
5
  def self.setup
6
6
  server = ask "Username and hostname of the remote server (e.g. user@server.com): "
7
- folder = ask "Name of the remote directory (e.g. ~/webapps/appname/): "
7
+ folder = ask "Name of the remote directory (e.g. ~/webapps/appname): "
8
8
  remote = ask "Desired git remote name (e.g. live): "
9
9
  script = File.join(File.expand_path("../..", File.dirname(__FILE__)), "resources/deploy.sh")
10
10
 
@@ -23,7 +23,12 @@ module Pave
23
23
 
24
24
  def self.url(remote="live")
25
25
  remotes = shell("git remote -v").output
26
- remotes.match(/#{remote}\s+(.*)\s+\(push\)/)[1]
26
+ begin
27
+ remotes.match(/#{remote}\s+(.*)\s+\(push\)/)[1]
28
+ rescue NoMethodError
29
+ puts "Could not find remote named #{remote}. Please run `pave deploy:setup` to create it."
30
+ exit
31
+ end
27
32
  end
28
33
 
29
34
  def self.server(remote="live")
data/lib/pave/shell.rb CHANGED
@@ -9,10 +9,15 @@ module Pave
9
9
  Struct.new(:status, :output).new($?, output)
10
10
  end
11
11
 
12
- def sh(command)
13
- result = shell(command)
12
+ def sh(cmd)
13
+ result = shell(cmd)
14
14
  puts result.output
15
15
  result.status
16
16
  end
17
+
18
+ def file_insert(insert_file, insert_pattern, insert_lines)
19
+ file_string = File.read(insert_file).sub(insert_pattern, "#{insert_pattern}\n#{insert_lines}")
20
+ File.write(insert_file, file_string)
21
+ end
17
22
  end
18
23
  end
data/lib/pave/theme.rb CHANGED
@@ -44,6 +44,12 @@ module Pave
44
44
  sh "cp -a #{Pave.template_folder}/themes/blank #{Dir.pwd}/themes/#{self.name}"
45
45
  end
46
46
 
47
+ def create_project_css_folders
48
+ sh "cd themes/#{self.name}/css/ && mkdir -p #{self.name}/{components,layouts}"
49
+ sh "cd themes/#{self.name}/css/#{self.name} && touch ./components/_components.scss && touch ./layouts/_layouts.scss"
50
+ sh "cd themes/#{self.name}/css/ && echo \"@import 'components/components';\" >> ./styles.scss && echo \"@import 'layouts/layouts';\" >> ./styles.scss"
51
+ end
52
+
47
53
  def setup
48
54
  say "Creating theme..."
49
55
  copy_theme
@@ -51,6 +57,7 @@ module Pave
51
57
  install_bourbon
52
58
  install_neat
53
59
  install_bitters
60
+ create_project_css_folders
54
61
  say "Docs for Neat: http://neat.bourbon.io/"
55
62
  say "Docs for Bitters: https://github.com/thoughtbot/bitters"
56
63
  say ""
data/lib/pave/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pave
2
- VERSION = "0.12.0.rc3"
2
+ VERSION = "0.12.0"
3
3
  end
data/resources/deploy.sh CHANGED
@@ -3,6 +3,9 @@ if [ ! -d 'deploy.git' ]; then
3
3
  mkdir deploy.git && cd deploy.git
4
4
  git init --bare
5
5
  echo '#!/bin/sh' > hooks/post-receive
6
- echo 'GIT_WORK_TREE=.. git checkout -f' >> hooks/post-receive
6
+ echo 'while read oldrev newrev ref' >> hooks/post-receive
7
+ echo 'do' >> hooks/post-receive
8
+ echo 'GIT_WORK_TREE=.. git checkout -f -B `basename "$ref"` "$newrev"' >> hooks/post-receive
9
+ echo 'done' >> hooks/post-receive
7
10
  chmod +x hooks/post-receive
8
11
  fi
@@ -1,2 +1,3 @@
1
- @import 'bourbon/_bourbon';
2
- @import 'neat/_neat';
1
+ @import 'bourbon/bourbon';
2
+ @import 'neat/neat';
3
+ @import 'bitters/bitters';
@@ -3,10 +3,10 @@
3
3
  $this->inc("elements/header.php");
4
4
  ?>
5
5
 
6
- <?php
7
- $a = new Area("Main");
8
- $a->display($c);
9
- ?>
10
-
6
+ <!-- block example -->
7
+ <?php
8
+ $a = new Area("Main");
9
+ $a->display($c);
10
+ ?>
11
11
 
12
- <?php $this->inc("elements/footer.php"); ?>
12
+ <?php $this->inc("elements/footer.php"); ?>
@@ -1,13 +1,13 @@
1
1
  <?php defined("C5_EXECUTE") or die("Access Denied."); ?>
2
2
 
3
-
3
+ <!-- block example -->
4
4
  <?php
5
5
  $a = new GlobalArea("Footer - Meta");
6
6
  $a->display($c);
7
7
  ?>
8
8
 
9
-
10
9
  <?php Loader::element("footer_required"); ?>
11
- <script src="<?= $this->getThemePath(); ?>/js/scripts.js"></script>
10
+ <script src="<?= $this->getThemePath(); ?>/js/shared.js"></script>
11
+ <?= page_specific_scripts($c, $this) ?>
12
12
  </body>
13
13
  </html>
@@ -3,9 +3,10 @@
3
3
  $this->inc("includes/view_helpers.php");
4
4
  ?>
5
5
  <!DOCTYPE html>
6
- <html lang="<?php echo LANGUAGE?>">
6
+ <html lang="<?= LANGUAGE?>">
7
7
  <head>
8
8
  <?php Loader::element("header_required"); ?>
9
+ <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">
9
10
 
10
11
  <link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/normalize/2.1.3/normalize.min.css" />
11
12
  <link rel="stylesheet" href="<?= $this->getThemePath(); ?>/css/styles.css" />
@@ -14,15 +15,19 @@
14
15
  <script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.6.2/html5shiv.js"></script>
15
16
  <![endif]-->
16
17
  </head>
17
- <body class="<?= $c->getCollectionTypeHandle(); ?>">
18
+ <body class="<?= page_classes($c) ?>">
18
19
 
19
- <!-- BLOCK EXAMPLE -->
20
+
21
+ <!-- image_tag helper example -->
22
+ <?= image_tag($this, "logo.png", ["class" => "main-logo"]); ?>
23
+
24
+ <!-- block example -->
20
25
  <?php
21
26
  $a = new Area("Header");
22
27
  $a->display($c);
23
28
  ?>
24
29
 
25
- <!-- NAV EXAMPLE -->
30
+ <!-- nav example -->
26
31
  <?php
27
32
  $nav = BlockType::getByHandle("autonav");
28
33
  $nav->controller->orderBy = "display_asc";
@@ -31,4 +36,4 @@
31
36
  $nav->controller->displaySubPageLevels = "custom";
32
37
  $nav->controller->displaySubPageLevelsNum = 1;
33
38
  $nav->render("templates/header_menu");
34
- ?>
39
+ ?>
@@ -1,17 +1,21 @@
1
1
  <?
2
+ function pretty_r($var, $die=true) {
3
+ echo "<pre>";
4
+ var_dump($var);
5
+ echo "<pre>";
6
+ if($die) {
7
+ die();
8
+ };
9
+ }
2
10
 
3
11
  function is_edit_mode() {
4
12
  global $c;
5
- if ($c->isEditMode()) {
6
- echo "edit-mode";
7
- }
13
+ return $c->isEditMode();
8
14
  }
9
15
 
10
16
  function is_logged_in() {
11
17
  global $u;
12
- if ($u -> isLoggedIn ()) {
13
- echo "logged-in";
14
- }
18
+ return $u->isLoggedIn();
15
19
  }
16
20
 
17
21
  function has_blocks($area) {
@@ -19,6 +23,21 @@
19
23
  return $area->getTotalBlocksInArea($c) > 0;
20
24
  }
21
25
 
26
+ function is_admin() {
27
+ $u = new User();
28
+ $g = Group::getByName('Administrators');
29
+ return $u->isSuperUser()||$u->inGroup($g);
30
+ }
31
+
32
+ function current_url() {
33
+ Loader::helper('navigation');
34
+ return NavigationHelper::getLinkToCollection(Page::getCurrentPage(), true);
35
+ }
36
+
37
+ function page_classes($c) {
38
+ return $c->getCollectionTypeHandle() . " " . $c->getCollectionHandle() . " " . (is_admin() ? 'admin' : '');
39
+ }
40
+
22
41
  function image_tag($t, $img, $html_options = false) {
23
42
  $imgPath = ($t->getThemePath()) . "/images/";
24
43
  if ($html_options) {
@@ -32,4 +51,26 @@
32
51
  echo "<img src='" . $imgPath . $img . "'" . $options . " />";
33
52
  }
34
53
 
54
+ function page_specific_scripts($page, $t) {
55
+ $script_html = "";
56
+
57
+ $handle = $page->getCollectionTypeHandle();
58
+ if (isset($handle) === true) {
59
+ $script_path = __DIR__ . "/../js/template_" . $handle . ".js";
60
+ if (file_exists($script_path) === true) {
61
+ $script_html .= "<script src='" . $t->getThemePath() . "/js/template_" . $handle . ".js'></script>";
62
+ }
63
+ }
64
+
65
+ $page_name = $page->getCollectionHandle();
66
+ if (isset($page_name) === true) {
67
+ $script_path = __DIR__ . "/../js/page_" . $page_name . ".js";
68
+ if (file_exists($script_path) === true) {
69
+ $script_html .= "<script src='" . $t->getThemePath() . "/js/page_" . $page_name . ".js'></script>";
70
+ }
71
+ }
72
+
73
+ return $script_html;
74
+ }
75
+
35
76
  ?>
@@ -0,0 +1 @@
1
+ // loaded if page handle is 'default'
File without changes
@@ -0,0 +1 @@
1
+ // loaded if page template handle is 'default'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pave
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0.rc3
4
+ version: 0.12.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamon Holmgren
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-02-13 00:00:00.000000000 Z
12
+ date: 2014-05-21 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -126,7 +126,9 @@ files:
126
126
  - templates/themes/blank/elements/footer.php
127
127
  - templates/themes/blank/elements/header.php
128
128
  - templates/themes/blank/includes/view_helpers.php
129
- - templates/themes/blank/js/scripts.js
129
+ - templates/themes/blank/js/page_default.js
130
+ - templates/themes/blank/js/shared.js
131
+ - templates/themes/blank/js/template_default.js
130
132
  - templates/themes/blank/thumbnail.png
131
133
  - templates/themes/blank/view.php
132
134
  homepage: https://github.com/jamonholmgren/pave
@@ -144,12 +146,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
144
146
  version: 1.9.3
145
147
  required_rubygems_version: !ruby/object:Gem::Requirement
146
148
  requirements:
147
- - - ">"
149
+ - - ">="
148
150
  - !ruby/object:Gem::Version
149
- version: 1.3.1
151
+ version: '0'
150
152
  requirements: []
151
153
  rubyforge_project:
152
- rubygems_version: 2.2.0
154
+ rubygems_version: 2.2.2
153
155
  signing_key:
154
156
  specification_version: 4
155
157
  summary: Provides a set of command line tools for Concrete5.