edge_framework 0.10.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/README.md +79 -9
- data/assets/sass/edge/_base.scss +1 -2
- data/assets/sass/edge/components/_button.scss +2 -6
- data/assets/sass/edge/components/_typography.scss +14 -27
- data/assets/sass/edge.scss +1 -1
- data/lib/edge/version.rb +1 -1
- data/template/base/assets/sass/_setting.scss +0 -1
- data/template/wordpress/404.php +1 -7
- data/template/wordpress/category.php +2 -28
- data/template/wordpress/code/inflector.php +140 -0
- data/template/wordpress/code/main.php +173 -0
- data/template/wordpress/comments.php +24 -0
- data/template/wordpress/content-post.php +15 -0
- data/template/wordpress/content-posts.php +15 -0
- data/template/wordpress/footer.php +4 -1
- data/template/wordpress/functions.php +18 -56
- data/template/wordpress/header.php +6 -3
- data/template/wordpress/index.php +9 -52
- data/template/wordpress/page.php +1 -18
- data/template/wordpress/screenshot.png +0 -0
- data/template/wordpress/search.php +3 -0
- data/template/wordpress/searchform.php +4 -0
- data/template/wordpress/single.php +1 -23
- data/template/wordpress/style.css +3 -1
- metadata +10 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
YWUzNjU2ZjMwOWNhYTg2MjkwMGM1ZWIyM2FmNjdhMTIwM2RhZWY4Yw==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTYzOTM1YzdkODkxYmVjMWNiNzQ4MTkxMTRlNGRiZTM2ZGZhMGI1OQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YmExYTg2YTI4MjI4Zjg3OTZmOWEwMjQ1ZDRiZmVkNDE5ZWQxNzA5YzA5M2Ni
|
10
|
+
ODFjYjk2MTg0ODUyMGI0NWZlNDRmM2IwYmE2NzE1YmYwMjQ2MzE2YmZiODdk
|
11
|
+
OGY1ZjY1ZGZiNzUxYmNjY2UxZGRiMWY3YWMyYzAyNmU1NGRiM2M=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
YWNjMDg4YjRjMzQyMzEyOWUwYTY4MjNjYjQyOTFhYjkyNmY3MTNkM2Y3NTQ4
|
14
|
+
NjdhMTRmZmQ5MDA3MzNiNTM1MzE5MWEwODY4ZjM5OGZhNjU2OGU3ZjM4NTRj
|
15
|
+
YjdjMWVhYjAxZWI4NWE2YWI0MjNmYzUyZGJlOWMwZmUwMDIzYzE=
|
data/README.md
CHANGED
@@ -258,8 +258,8 @@ Slider visible only on large screen
|
|
258
258
|
// or
|
259
259
|
<div role="banner" class="hide-for-small"></div>
|
260
260
|
|
261
|
-
|
262
|
-
|
261
|
+
BOILERPLATE GENERATOR
|
262
|
+
========================
|
263
263
|
|
264
264
|
Generate basic template for your project. Run this command inside your project directory:
|
265
265
|
|
@@ -271,11 +271,82 @@ Generate basic template for your project. Run this command inside your project d
|
|
271
271
|
|
272
272
|
`edge create php`
|
273
273
|
|
274
|
-
3.
|
274
|
+
3. Wordpress 3.8+ (Min PHP 5.3)
|
275
|
+
|
276
|
+
`edge create wordpress`
|
277
|
+
|
278
|
+
4. Rails (run inside Rails project)
|
275
279
|
|
276
280
|
`rails g edge:install`
|
277
281
|
|
278
|
-
|
282
|
+
5. Coming soon: Sinatra and Flask
|
283
|
+
|
284
|
+
|
285
|
+
WORDPRESS
|
286
|
+
====================
|
287
|
+
|
288
|
+
![Edge Wordpress](http://cdn.setyono.net/edge/wp-edge.jpg)
|
289
|
+
|
290
|
+
Features:
|
291
|
+
|
292
|
+
- Auto add header and footer.
|
293
|
+
- Independent from any plugin.
|
294
|
+
- Cleaner WP Query call.
|
295
|
+
- Easily create custom post type and taxonomy.
|
296
|
+
|
297
|
+
Custom WP Query
|
298
|
+
---------------------
|
299
|
+
|
300
|
+
Post::find()
|
301
|
+
get all posts.
|
302
|
+
|
303
|
+
Post::find($args_array)
|
304
|
+
get post(s) based on the arguments array.
|
305
|
+
|
306
|
+
Post::find_by($key, $value)
|
307
|
+
faster way of writing Post::find(array( $key => $value ))
|
308
|
+
|
309
|
+
All of the functions above returns `WP_Query()` object. [Refer here](https://gist.github.com/luetkemj/2023628) for available argument.
|
310
|
+
|
311
|
+
Example:
|
312
|
+
|
313
|
+
$posts = Post::find_by("category_name", "featured");
|
314
|
+
|
315
|
+
if( $posts->have_posts() ):
|
316
|
+
while( $posts->have_posts() ): $posts->the_post();
|
317
|
+
...
|
318
|
+
endwhile;
|
319
|
+
endif;
|
320
|
+
|
321
|
+
|
322
|
+
Custom Post Type
|
323
|
+
--------------------
|
324
|
+
|
325
|
+
add_post_type( $name, <$icon>, <$taxonomy> )
|
326
|
+
|
327
|
+
![Wordpress Custom Type](http://cdn.setyono.net/edge/wp-post-type.jpg)
|
328
|
+
|
329
|
+
Inside `functions.php`, add these codes:
|
330
|
+
|
331
|
+
add_post_type("Product", "cart", "Brand");
|
332
|
+
add_post_type("Event", "calendar");
|
333
|
+
|
334
|
+
All names must be **singular**. The icon name is taken from [melchoyce.github.io/dashicons/](http://melchoyce.github.io/dashicons/).
|
335
|
+
|
336
|
+
To enable custom WP Query, create a class with the Post Type's name that extends `Post`.
|
337
|
+
|
338
|
+
// still inside functions.php
|
339
|
+
class Product extends Post {}
|
340
|
+
class Event extends Post {}
|
341
|
+
|
342
|
+
Now, you can call the functions:
|
343
|
+
|
344
|
+
$products = Product::find_by("brand", "Microsoft")
|
345
|
+
$events = Event::find()
|
346
|
+
|
347
|
+
The template file for custom post is `single-{slug}.php` while custom taxonomy is `taxonomy-{slug}.php`.
|
348
|
+
|
349
|
+
Based on the example above, create `single-product.php` for single **Product** template. If we need to list all products within a brand, create `taxonomy-brand.php` which works the same way as `category.php`.
|
279
350
|
|
280
351
|
COMPASS
|
281
352
|
=================
|
@@ -320,9 +391,9 @@ GRID - mixin
|
|
320
391
|
|
321
392
|
Custom grid makes the markup cleaner and less duplication.
|
322
393
|
|
323
|
-
It allows one additional sizing: **mini** which is below 480px
|
394
|
+
It allows one additional sizing: **mini** which is below 480px by default. You can only set mini size when small size is specified.
|
324
395
|
|
325
|
-
|
396
|
+
We still need to write the base class (`.row` and `.column`).
|
326
397
|
|
327
398
|
// HTML
|
328
399
|
<div class="row">
|
@@ -345,9 +416,7 @@ Base class ("row" and "column") must be explicitly written.
|
|
345
416
|
|
346
417
|
**GUTTER**
|
347
418
|
|
348
|
-
If you want to modify the
|
349
|
-
|
350
|
-
But if you want it only on specific set of columns, apply it in both row and column.
|
419
|
+
If you want to modify all the gutters, change it in Setting file. Otherwise, you must customize both row and column.
|
351
420
|
|
352
421
|
// HTML
|
353
422
|
<div class="my-row row">
|
@@ -478,3 +547,4 @@ Template generator:
|
|
478
547
|
rails g edge:install
|
479
548
|
|
480
549
|
The command will give you Edge's SCSS files and append the pipeline.
|
550
|
+
|
data/assets/sass/edge/_base.scss
CHANGED
@@ -18,13 +18,12 @@ $experimental-support-for-khtml : false;
|
|
18
18
|
// OUTPUT CONFIG
|
19
19
|
// Debug : if true - add useful functionality for development
|
20
20
|
// Responsive : add responsiveness to the output
|
21
|
-
//
|
21
|
+
//
|
22
22
|
// External call : Add extra feature if calling Component's mixin externally
|
23
23
|
// Include : if false - no CSS output
|
24
24
|
// -------------------------------------------------------
|
25
25
|
$debug : false !default;
|
26
26
|
$responsive : true !default;
|
27
|
-
$vertical-rhythm : false !default;
|
28
27
|
|
29
28
|
$external-call : false !default; // user shouldn't modify this
|
30
29
|
|
@@ -57,12 +57,11 @@ $button-color: $main-color !default;
|
|
57
57
|
display: inline-block;
|
58
58
|
cursor: pointer;
|
59
59
|
position: relative;
|
60
|
+
|
60
61
|
border: 1px solid transparent;
|
61
|
-
|
62
62
|
padding: 10px 20px;
|
63
|
-
|
63
|
+
|
64
64
|
font-weight: 700;
|
65
|
-
letter-spacing: 1px;
|
66
65
|
}
|
67
66
|
|
68
67
|
background-color: $color;
|
@@ -70,10 +69,7 @@ $button-color: $main-color !default;
|
|
70
69
|
|
71
70
|
@if $for-base {
|
72
71
|
@include border-radius($g-radius);
|
73
|
-
@include background-image(linear-gradient(top, rgba(white, .1), transparent ) );
|
74
72
|
@include transition($g-transition);
|
75
|
-
@include box-shadow(inset 1px 1px rgba(white, .1) );
|
76
|
-
|
77
73
|
@include button-focus();
|
78
74
|
}
|
79
75
|
|
@@ -64,15 +64,14 @@ $ol-child-style : lower-alpha !default;
|
|
64
64
|
p {
|
65
65
|
@include trailer(1);
|
66
66
|
|
67
|
-
&:last-child
|
68
|
-
&:last-of-type {
|
67
|
+
&:last-child {
|
69
68
|
@include trailer(0);
|
70
69
|
}
|
70
|
+
}
|
71
71
|
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
}
|
72
|
+
ul,
|
73
|
+
ol {
|
74
|
+
@include trailer(1);
|
76
75
|
}
|
77
76
|
}
|
78
77
|
|
@@ -106,10 +105,6 @@ body {
|
|
106
105
|
color: $body-font-color;
|
107
106
|
}
|
108
107
|
|
109
|
-
.baseline {
|
110
|
-
@include baseline();
|
111
|
-
}
|
112
|
-
|
113
108
|
h1, h2, h3, h4, h5, h6 {
|
114
109
|
color: $header-font-color;
|
115
110
|
font-family: $header-font-family;
|
@@ -120,25 +115,17 @@ a {
|
|
120
115
|
color: $main-color;
|
121
116
|
}
|
122
117
|
|
123
|
-
@if $vertical-rhythm {
|
124
|
-
@include vertical-rhythm($for-base: true);
|
125
|
-
}
|
126
|
-
@else {
|
127
|
-
h1 { font-size: em($h1-font-size); }
|
128
|
-
h2 { font-size: em($h2-font-size); }
|
129
|
-
h3 { font-size: em($h3-font-size); }
|
130
|
-
h4 { font-size: em($h4-font-size); }
|
131
|
-
h5 { font-size: em($h5-font-size); }
|
132
|
-
h6 { font-size: em($h6-font-size); }
|
133
118
|
|
134
|
-
|
135
|
-
|
136
|
-
|
119
|
+
h1 { font-size: em($h1-font-size); }
|
120
|
+
h2 { font-size: em($h2-font-size); }
|
121
|
+
h3 { font-size: em($h3-font-size); }
|
122
|
+
h4 { font-size: em($h4-font-size); }
|
123
|
+
h5 { font-size: em($h5-font-size); }
|
124
|
+
h6 { font-size: em($h6-font-size); }
|
137
125
|
|
138
|
-
|
139
|
-
|
140
|
-
|
141
|
-
}
|
126
|
+
p {
|
127
|
+
margin-top: 0;
|
128
|
+
margin-bottom: $p-margin-bottom;
|
142
129
|
}
|
143
130
|
|
144
131
|
// -----------
|
data/assets/sass/edge.scss
CHANGED
data/lib/edge/version.rb
CHANGED
data/template/wordpress/404.php
CHANGED
@@ -1,29 +1,3 @@
|
|
1
|
-
<?php
|
2
|
-
/* -------------------------
|
3
|
-
View Category Template
|
4
|
-
------------------------- */
|
5
|
-
get_header(); ?>
|
1
|
+
<h1>Category: <?php single_cat_title(); ?></h1>
|
6
2
|
|
7
|
-
|
8
|
-
|
9
|
-
<p><a href="<?php home(); ?>">← Home</a></p>
|
10
|
-
|
11
|
-
<h1><?php echo ucfirst(single_cat_title('', false) ); ?></h1>
|
12
|
-
|
13
|
-
<?php // If the category has description
|
14
|
-
if(category_description() ): ?>
|
15
|
-
<p><?php echo category_description(); ?></p>
|
16
|
-
<?php endif; ?>
|
17
|
-
|
18
|
-
<?php if (have_posts() ): ?>
|
19
|
-
<h3>Posts</h3>
|
20
|
-
<ul>
|
21
|
-
<?php while (have_posts() ): the_post(); ?>
|
22
|
-
<a href="<?php echo get_permalink(); ?>">
|
23
|
-
<li><?php echo get_the_title(); ?></li>
|
24
|
-
</a>
|
25
|
-
<?php endwhile; ?>
|
26
|
-
</ul>
|
27
|
-
<?php endif; ?>
|
28
|
-
|
29
|
-
<?php get_footer(); ?>
|
3
|
+
<?php get_template_part("content", "posts"); ?>
|
@@ -0,0 +1,140 @@
|
|
1
|
+
<?php
|
2
|
+
// Thanks to http://www.eval.ca/articles/php-pluralize (MIT license)
|
3
|
+
// http://dev.rubyonrails.org/browser/trunk/activesupport/lib/active_support/inflections.rb (MIT license)
|
4
|
+
// http://www.fortunecity.com/bally/durrus/153/gramch13.html
|
5
|
+
// http://www2.gsu.edu/~wwwesl/egw/crump.htm
|
6
|
+
|
7
|
+
class Inflector {
|
8
|
+
static $plural = array(
|
9
|
+
'/(quiz)$/i' => "$1zes",
|
10
|
+
'/^(ox)$/i' => "$1en",
|
11
|
+
'/([m|l])ouse$/i' => "$1ice",
|
12
|
+
'/(matr|vert|ind)ix|ex$/i' => "$1ices",
|
13
|
+
'/(x|ch|ss|sh)$/i' => "$1es",
|
14
|
+
'/([^aeiouy]|qu)y$/i' => "$1ies",
|
15
|
+
'/(hive)$/i' => "$1s",
|
16
|
+
'/(?:([^f])fe|([lr])f)$/i' => "$1$2ves",
|
17
|
+
'/(shea|lea|loa|thie)f$/i' => "$1ves",
|
18
|
+
'/sis$/i' => "ses",
|
19
|
+
'/([ti])um$/i' => "$1a",
|
20
|
+
'/(tomat|potat|ech|her|vet)o$/i'=> "$1oes",
|
21
|
+
'/(bu)s$/i' => "$1ses",
|
22
|
+
'/(alias)$/i' => "$1es",
|
23
|
+
'/(octop)us$/i' => "$1i",
|
24
|
+
'/(ax|test)is$/i' => "$1es",
|
25
|
+
'/(us)$/i' => "$1es",
|
26
|
+
'/s$/i' => "s",
|
27
|
+
'/$/' => "s"
|
28
|
+
);
|
29
|
+
|
30
|
+
static $singular = array(
|
31
|
+
'/(quiz)zes$/i' => "$1",
|
32
|
+
'/(matr)ices$/i' => "$1ix",
|
33
|
+
'/(vert|ind)ices$/i' => "$1ex",
|
34
|
+
'/^(ox)en$/i' => "$1",
|
35
|
+
'/(alias)es$/i' => "$1",
|
36
|
+
'/(octop|vir)i$/i' => "$1us",
|
37
|
+
'/(cris|ax|test)es$/i' => "$1is",
|
38
|
+
'/(shoe)s$/i' => "$1",
|
39
|
+
'/(o)es$/i' => "$1",
|
40
|
+
'/(bus)es$/i' => "$1",
|
41
|
+
'/([m|l])ice$/i' => "$1ouse",
|
42
|
+
'/(x|ch|ss|sh)es$/i' => "$1",
|
43
|
+
'/(m)ovies$/i' => "$1ovie",
|
44
|
+
'/(s)eries$/i' => "$1eries",
|
45
|
+
'/([^aeiouy]|qu)ies$/i' => "$1y",
|
46
|
+
'/([lr])ves$/i' => "$1f",
|
47
|
+
'/(tive)s$/i' => "$1",
|
48
|
+
'/(hive)s$/i' => "$1",
|
49
|
+
'/(li|wi|kni)ves$/i' => "$1fe",
|
50
|
+
'/(shea|loa|lea|thie)ves$/i'=> "$1f",
|
51
|
+
'/(^analy)ses$/i' => "$1sis",
|
52
|
+
'/((a)naly|(b)a|(d)iagno|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' => "$1$2sis",
|
53
|
+
'/([ti])a$/i' => "$1um",
|
54
|
+
'/(n)ews$/i' => "$1ews",
|
55
|
+
'/(h|bl)ouses$/i' => "$1ouse",
|
56
|
+
'/(corpse)s$/i' => "$1",
|
57
|
+
'/(us)es$/i' => "$1",
|
58
|
+
'/s$/i' => ""
|
59
|
+
);
|
60
|
+
|
61
|
+
static $irregular = array(
|
62
|
+
'move' => 'moves',
|
63
|
+
'foot' => 'feet',
|
64
|
+
'goose' => 'geese',
|
65
|
+
'sex' => 'sexes',
|
66
|
+
'child' => 'children',
|
67
|
+
'man' => 'men',
|
68
|
+
'tooth' => 'teeth',
|
69
|
+
'person' => 'people'
|
70
|
+
);
|
71
|
+
|
72
|
+
static $uncountable = array(
|
73
|
+
'sheep',
|
74
|
+
'fish',
|
75
|
+
'deer',
|
76
|
+
'series',
|
77
|
+
'species',
|
78
|
+
'money',
|
79
|
+
'rice',
|
80
|
+
'information',
|
81
|
+
'equipment'
|
82
|
+
);
|
83
|
+
|
84
|
+
public static function pluralize( $string ) {
|
85
|
+
// save some time in the case that singular and plural are the same
|
86
|
+
if ( in_array( strtolower( $string ), self::$uncountable ) ) {
|
87
|
+
return $string;
|
88
|
+
}
|
89
|
+
|
90
|
+
// check for irregular singular forms
|
91
|
+
foreach ( self::$irregular as $pattern => $result ) {
|
92
|
+
$pattern = '/' . $pattern . '$/i';
|
93
|
+
|
94
|
+
if ( preg_match( $pattern, $string ) ) {
|
95
|
+
return preg_replace( $pattern, $result, $string);
|
96
|
+
}
|
97
|
+
}
|
98
|
+
|
99
|
+
// check for matches using regular expressions
|
100
|
+
foreach ( self::$plural as $pattern => $result ) {
|
101
|
+
if ( preg_match( $pattern, $string ) ) {
|
102
|
+
return preg_replace( $pattern, $result, $string );
|
103
|
+
}
|
104
|
+
}
|
105
|
+
|
106
|
+
return $string;
|
107
|
+
}
|
108
|
+
|
109
|
+
public static function singularize( $string ) {
|
110
|
+
// save some time in the case that singular and plural are the same
|
111
|
+
if ( in_array( strtolower( $string ), self::$uncountable ) ) {
|
112
|
+
return $string;
|
113
|
+
}
|
114
|
+
|
115
|
+
// check for irregular plural forms
|
116
|
+
foreach ( self::$irregular as $result => $pattern ) {
|
117
|
+
$pattern = '/' . $pattern . '$/i';
|
118
|
+
|
119
|
+
if ( preg_match( $pattern, $string ) ) {
|
120
|
+
return preg_replace( $pattern, $result, $string);
|
121
|
+
}
|
122
|
+
}
|
123
|
+
|
124
|
+
// check for matches using regular expressions
|
125
|
+
foreach ( self::$singular as $pattern => $result ) {
|
126
|
+
if ( preg_match( $pattern, $string ) ) {
|
127
|
+
return preg_replace( $pattern, $result, $string );
|
128
|
+
}
|
129
|
+
}
|
130
|
+
return $string;
|
131
|
+
}
|
132
|
+
|
133
|
+
public static function pluralize_if($count, $string) {
|
134
|
+
if ($count == 1) {
|
135
|
+
return "1 $string";
|
136
|
+
} else {
|
137
|
+
return $count . " " . self::pluralize($string);
|
138
|
+
}
|
139
|
+
}
|
140
|
+
}
|
@@ -0,0 +1,173 @@
|
|
1
|
+
<?php
|
2
|
+
/* -------------------------------------------
|
3
|
+
EDGE Press v1.0
|
4
|
+
- Cleaner code for Wordpress Theme
|
5
|
+
- Requirement: Wordpress 3.8 and PHP 5.3
|
6
|
+
------------------------------------------- */
|
7
|
+
include "inflector.php";
|
8
|
+
|
9
|
+
function home() { echo home_url()."/"; }
|
10
|
+
function root() { return get_template_directory_uri()."/"; }
|
11
|
+
function img() { echo root()."assets/img/"; }
|
12
|
+
function css() { echo root()."assets/css/"; }
|
13
|
+
function js() { echo root()."assets/js/"; }
|
14
|
+
function files() { echo root()."assets/files/"; }
|
15
|
+
|
16
|
+
/*
|
17
|
+
ELLIPSIZE
|
18
|
+
- Adding "..." at the end of the string.
|
19
|
+
- Default is 160 characters
|
20
|
+
*/
|
21
|
+
|
22
|
+
function ellipsize($text, $char_number = "160", $etc = "...") {
|
23
|
+
$text = html_entity_decode($text, ENT_QUOTES);
|
24
|
+
if (strlen($text) > $char_number) {
|
25
|
+
$text = substr($text, 0, $char_number);
|
26
|
+
$text = substr($text,0,strrpos($text," "));
|
27
|
+
|
28
|
+
$punctuation = ".!?:;,-"; // punctuation you want removed
|
29
|
+
|
30
|
+
$text = (strspn(strrev($text), $punctuation) != 0)
|
31
|
+
?
|
32
|
+
substr($text, 0, -strspn(strrev($text), $punctuation))
|
33
|
+
:
|
34
|
+
$text;
|
35
|
+
|
36
|
+
$text = $text.$etc;
|
37
|
+
}
|
38
|
+
$text = htmlentities($text, ENT_QUOTES);
|
39
|
+
return $text;
|
40
|
+
}
|
41
|
+
|
42
|
+
/*
|
43
|
+
CUSTOM NAV MENU
|
44
|
+
*/
|
45
|
+
|
46
|
+
function edge_nav_menu() {
|
47
|
+
wp_nav_menu(array(
|
48
|
+
"container" => "nav",
|
49
|
+
"container_class" => " ",
|
50
|
+
"container_id" => "",
|
51
|
+
"menu_class" => " ",
|
52
|
+
"menu_id" => " ",
|
53
|
+
));
|
54
|
+
}
|
55
|
+
|
56
|
+
/*
|
57
|
+
DATABASE CALL
|
58
|
+
*/
|
59
|
+
|
60
|
+
class Post {
|
61
|
+
public static function find($args = null) {
|
62
|
+
wp_reset_postdata();
|
63
|
+
|
64
|
+
if(empty($args) ) {
|
65
|
+
$args = array(
|
66
|
+
"post_type" => get_called_class()
|
67
|
+
);
|
68
|
+
}
|
69
|
+
|
70
|
+
return new WP_Query($args);
|
71
|
+
}
|
72
|
+
|
73
|
+
public static function find_by($key, $value) {
|
74
|
+
wp_reset_postdata();
|
75
|
+
|
76
|
+
$args = array(
|
77
|
+
$key => $value,
|
78
|
+
"post_type" => get_called_class()
|
79
|
+
);
|
80
|
+
return new WP_Query($args);
|
81
|
+
}
|
82
|
+
}
|
83
|
+
|
84
|
+
class Page extends Post {}
|
85
|
+
|
86
|
+
/*
|
87
|
+
CUSTOM POST TYPE
|
88
|
+
*/
|
89
|
+
|
90
|
+
function add_post_type($name, $icon = "admin-post", $tax_name = null) {
|
91
|
+
$plural = Inflector::pluralize($name);
|
92
|
+
$singular = $name;
|
93
|
+
|
94
|
+
$labels = array(
|
95
|
+
"name" => $plural,
|
96
|
+
"singular_name" => $singular,
|
97
|
+
"add_new_item" => "Add New " . $singular,
|
98
|
+
"edit_item" => "Edit " . $singular,
|
99
|
+
"new_item" => "New " . $singular,
|
100
|
+
"view_item" => "View " . $singular,
|
101
|
+
"search_items" => "Search " . $plural,
|
102
|
+
"not_found" => "No " . strtolower($plural) . " found",
|
103
|
+
"not_found_in_trash" => "No " . strtolower($plural) . " found in Trash",
|
104
|
+
"parent_item_colon" => "Parent " . $singular . ":",
|
105
|
+
);
|
106
|
+
|
107
|
+
$post_args = array(
|
108
|
+
"public" => true,
|
109
|
+
"menu_icon" => "dashicons-".$icon,
|
110
|
+
"labels" => $labels,
|
111
|
+
"capability_type" => "post",
|
112
|
+
"supports" => array(
|
113
|
+
"title",
|
114
|
+
"editor",
|
115
|
+
"custom-fields",
|
116
|
+
"revisions",
|
117
|
+
"thumbnail",
|
118
|
+
),
|
119
|
+
);
|
120
|
+
|
121
|
+
// If taxonomy is given
|
122
|
+
if($tax_name) {
|
123
|
+
add_taxonomy($tax_name, $name);
|
124
|
+
}
|
125
|
+
|
126
|
+
register_post_type(strtolower($name), $post_args);
|
127
|
+
}
|
128
|
+
|
129
|
+
/*
|
130
|
+
CUSTOM TAXONOMY
|
131
|
+
*/
|
132
|
+
|
133
|
+
function add_taxonomy($name, $post_type) {
|
134
|
+
$plural = Inflector::pluralize($name);
|
135
|
+
$singular = $name;
|
136
|
+
|
137
|
+
$labels = array(
|
138
|
+
"name" => $plural,
|
139
|
+
"singular_name" => $singular,
|
140
|
+
"all_items" => "All " . $plural,
|
141
|
+
"edit_item" => "Edit " . $singular,
|
142
|
+
"view_item" => "View " . $singular,
|
143
|
+
"update_item" => "Update " . $singular,
|
144
|
+
"add_new_item" => "Add New " . $singular,
|
145
|
+
"parent_item" => "Parent " . $singular,
|
146
|
+
"search_items" => "Search " . $plural,
|
147
|
+
"popular_items" => "Popular " . $plural,
|
148
|
+
"add_or_remove_items" => "Add or remove " . strtolower($plural),
|
149
|
+
"choose_from_most_used" => "Choose from the most used " . strtolower($plural),
|
150
|
+
"not_found" => "No " . strtolower($plural) . " found"
|
151
|
+
);
|
152
|
+
|
153
|
+
$tax_args = array(
|
154
|
+
"labels" => $labels,
|
155
|
+
"show_ui" => true,
|
156
|
+
"query_var" => true,
|
157
|
+
"show_admin_column" => false,
|
158
|
+
"hierarchical" => true,
|
159
|
+
);
|
160
|
+
register_taxonomy(strtolower($name), strtolower($post_type), $tax_args);
|
161
|
+
}
|
162
|
+
|
163
|
+
/* REMOVE MENU ITEMS */
|
164
|
+
add_action("admin_menu", "remove_menu_items");
|
165
|
+
|
166
|
+
|
167
|
+
/* AUTO ADD HEADER and FOOTER */
|
168
|
+
add_filter("template_include", function($template) {
|
169
|
+
get_header();
|
170
|
+
include $template;
|
171
|
+
get_footer();
|
172
|
+
return FALSE;
|
173
|
+
});
|
@@ -0,0 +1,24 @@
|
|
1
|
+
<?php // If not page, comment allowed, and comment supported
|
2
|
+
if(!is_page() && comments_open() && post_type_supports(get_post_type(), "comments") ): ?>
|
3
|
+
|
4
|
+
<?php if(have_comments() ): ?>
|
5
|
+
<h2><?php comments_number(); ?></h2>
|
6
|
+
|
7
|
+
<ul>
|
8
|
+
<?php foreach($comments as $comment): ?>
|
9
|
+
<li>
|
10
|
+
<?php comment_text(); ?>
|
11
|
+
|
12
|
+
<cite><?php comment_type(); ?> by <?php comment_author_link(); ?> on <?php comment_date(); ?> at <?php comment_time(); ?></cite>
|
13
|
+
|
14
|
+
<?php if ($comment->comment_approved == "0") : ?>
|
15
|
+
<p>Your comment is awaiting approval</p>
|
16
|
+
<?php endif; ?>
|
17
|
+
</li>
|
18
|
+
<?php endforeach; ?>
|
19
|
+
</ul>
|
20
|
+
<?php endif; ?>
|
21
|
+
|
22
|
+
<?php comment_form(); ?>
|
23
|
+
|
24
|
+
<?php endif; ?>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<?php if(have_posts() ): while (have_posts() ) : the_post(); ?>
|
2
|
+
|
3
|
+
<h1><?php the_title(); ?></h1>
|
4
|
+
|
5
|
+
<?php if(has_post_thumbnail() ): ?>
|
6
|
+
<figure>
|
7
|
+
<?php the_post_thumbnail(); ?>
|
8
|
+
</figure>
|
9
|
+
<?php endif; ?>
|
10
|
+
|
11
|
+
<?php the_content(); ?>
|
12
|
+
|
13
|
+
<?php comments_template(); ?>
|
14
|
+
|
15
|
+
<?php endwhile; endif; ?>
|
@@ -0,0 +1,15 @@
|
|
1
|
+
<ul>
|
2
|
+
<?php if (have_posts() ): ?>
|
3
|
+
<?php while (have_posts() ): the_post(); ?>
|
4
|
+
<li>
|
5
|
+
<a href="<?php the_permalink(); ?>">
|
6
|
+
<?php the_title(); ?>
|
7
|
+
</a>
|
8
|
+
</li>
|
9
|
+
<?php endwhile; ?>
|
10
|
+
<?php else: ?>
|
11
|
+
<li>
|
12
|
+
<a>Not found</a>
|
13
|
+
</li>
|
14
|
+
<?php endif; ?>
|
15
|
+
</ul>
|
@@ -1,6 +1,8 @@
|
|
1
1
|
<div id="footer-push"></div>
|
2
2
|
</div>
|
3
|
-
<footer class="main-footer"
|
3
|
+
<footer class="main-footer">
|
4
|
+
<!-- Write footer here -->
|
5
|
+
</footer>
|
4
6
|
|
5
7
|
<!-- JAVASCRIPT LIBRARY -->
|
6
8
|
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
|
@@ -13,5 +15,6 @@
|
|
13
15
|
<script src="<?php js(); ?>/vendor/fastclick.min.js"></script>
|
14
16
|
<script src="<?php js(); ?>/app.js"></script>
|
15
17
|
|
18
|
+
<?php wp_footer(); ?>
|
16
19
|
</body>
|
17
20
|
</html>
|
@@ -1,62 +1,24 @@
|
|
1
|
-
<?php
|
2
|
-
/* ------------------------------------
|
3
|
-
EDGE Press v0.1
|
4
|
-
- Extend functionality to Word Press
|
5
|
-
--------------------------------------- */
|
1
|
+
<?php include "code/main.php";
|
6
2
|
|
3
|
+
// THEME SUPPORT
|
7
4
|
add_theme_support("post-thumbnails");
|
5
|
+
add_theme_support("menus");
|
8
6
|
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
/*
|
14
|
-
Echo path to assets directory
|
15
|
-
@return = relative path to specified assets directory
|
16
|
-
*/
|
17
|
-
function home() { echo home_url()."/"; }
|
18
|
-
function img() { echo root()."assets/img/"; }
|
19
|
-
function css() { echo root()."assets/css/"; }
|
20
|
-
function js() { echo root()."assets/js/"; }
|
21
|
-
function files() { echo root()."assets/files/"; }
|
22
|
-
|
23
|
-
/*
|
24
|
-
Ellipsize the text (Adding "..." at the end of the word)
|
25
|
-
Always stop at the end of a word.
|
26
|
-
@param text = The statement to be ellipsized
|
27
|
-
char_number = Number of characters before adding the ellipse
|
28
|
-
etc = The ellipse text to be added, default to "..."
|
29
|
-
@return = the ellipsed text
|
7
|
+
/* CUSTOM POST TYPE
|
8
|
+
1: Type name, MUST be singular
|
9
|
+
2: (opt) Icon name, check http://melchoyce.github.io/dashicons/
|
10
|
+
3: (opt) Taxonomy name, MUST be singular
|
30
11
|
*/
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
$text = substr($text, 0, $char_number);
|
35
|
-
$text = substr($text,0,strrpos($text," "));
|
36
|
-
|
37
|
-
$punctuation = ".!?:;,-"; // punctuation you want removed
|
38
|
-
|
39
|
-
$text = (strspn(strrev($text), $punctuation) != 0)
|
40
|
-
?
|
41
|
-
substr($text, 0, -strspn(strrev($text), $punctuation))
|
42
|
-
:
|
43
|
-
$text;
|
44
|
-
|
45
|
-
$text = $text.$etc;
|
46
|
-
}
|
47
|
-
$text = htmlentities($text, ENT_QUOTES);
|
48
|
-
return $text;
|
49
|
-
}
|
12
|
+
add_post_type("Product", "cart", "Brand"); // Sample
|
13
|
+
// Allow the use of Product::find()
|
14
|
+
class Product extends Post {};
|
50
15
|
|
51
|
-
/*
|
52
|
-
|
53
|
-
Example:
|
54
|
-
"single-product.php" is used as template for post with category "product"
|
16
|
+
/* Remove Unnecessary ADMIN SIDEBAR
|
17
|
+
- Use the slug
|
55
18
|
*/
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
);
|
19
|
+
function remove_menu_items() {
|
20
|
+
$items = array(
|
21
|
+
"upload.php",
|
22
|
+
);
|
23
|
+
foreach($items as $item) { remove_menu_page($item); }
|
24
|
+
}
|
@@ -18,11 +18,14 @@
|
|
18
18
|
<!-- STYLESHEET -->
|
19
19
|
<link rel="stylesheet" href="<?php css(); ?>/framework.css">
|
20
20
|
<link rel="stylesheet" href="<?php css(); ?>/app.css">
|
21
|
-
|
22
|
-
<!-- PLUGIN HOOKS -->
|
21
|
+
|
23
22
|
<?php wp_head(); ?>
|
24
23
|
</head>
|
25
24
|
<body>
|
26
25
|
<div id="main-wrapper">
|
27
26
|
|
28
|
-
<header class="main-header"
|
27
|
+
<header class="main-header">
|
28
|
+
<?php edge_nav_menu(); ?>
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<?php get_template_part("searchform"); ?>
|
@@ -1,57 +1,14 @@
|
|
1
1
|
<?php
|
2
|
-
|
3
|
-
Home / Landing page
|
4
|
-
---------------------- */
|
5
|
-
get_header();
|
6
|
-
|
7
|
-
// Get list of all categories
|
8
|
-
$args = array(
|
9
|
-
"child_of" => 0,
|
10
|
-
"hide_empty" => false,
|
11
|
-
);
|
12
|
-
$categories = get_categories($args);
|
13
|
-
|
14
|
-
// Get list of all pages
|
15
|
-
$page_args = array(
|
16
|
-
"child_of" => 0,
|
17
|
-
"sort_order" => "ASC",
|
18
|
-
"sort_column" => "post_title",
|
19
|
-
);
|
20
|
-
$pages = get_pages($args);
|
2
|
+
$posts = Post::find();
|
21
3
|
?>
|
22
4
|
|
23
|
-
<
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
<h3>Category</h3>
|
28
|
-
<ul>
|
29
|
-
<?php foreach ($categories as $category): ?>
|
30
|
-
<li>
|
31
|
-
<a href="<?php echo get_category_link( $category->ID ); ?> ">
|
32
|
-
<?php echo $category->name; ?>
|
33
|
-
</a>
|
34
|
-
</li>
|
35
|
-
<?php endforeach; ?>
|
36
|
-
</ul>
|
5
|
+
<div class="row">
|
6
|
+
<div class="large-6 column large-centered">
|
7
|
+
<?php if($posts->have_posts() ): while($posts->have_posts() ): $posts->the_post(); ?>
|
37
8
|
|
38
|
-
<
|
39
|
-
|
40
|
-
<?php foreach ($pages as $page): ?>
|
41
|
-
<li>
|
42
|
-
<a href="<?php echo get_page_link( $page->ID ); ?>">
|
43
|
-
<?php echo $page->post_title; ?>
|
44
|
-
</a>
|
45
|
-
</li>
|
46
|
-
<?php endforeach; ?>
|
47
|
-
</ul>
|
48
|
-
|
49
|
-
<!-- How to get Page content outside "page" template -->
|
50
|
-
<h3>About Us</h3>
|
51
|
-
<?php
|
52
|
-
$page = get_page_by_title("About Us");
|
53
|
-
$content = apply_filters("the_content", $page->post_content);
|
54
|
-
echo $content;
|
55
|
-
?>
|
9
|
+
<h1><?php the_title(); ?></h1>
|
10
|
+
<?php the_content(); ?>
|
56
11
|
|
57
|
-
<?php
|
12
|
+
<?php endwhile; endif; ?>
|
13
|
+
</div>
|
14
|
+
</div>
|
data/template/wordpress/page.php
CHANGED
@@ -1,18 +1 @@
|
|
1
|
-
<?php
|
2
|
-
/* ----------------------
|
3
|
-
Pages Template
|
4
|
-
---------------------- */
|
5
|
-
get_header(); ?>
|
6
|
-
|
7
|
-
<p><small>page.php</small></p>
|
8
|
-
|
9
|
-
<?php while (have_posts() ) : the_post(); ?>
|
10
|
-
<h1><?php echo get_the_title(); ?></h1>
|
11
|
-
<?php echo get_the_content(); ?>
|
12
|
-
|
13
|
-
<a href="<?php home(); ?> ">
|
14
|
-
← Home
|
15
|
-
</a>
|
16
|
-
<?php endwhile; ?>
|
17
|
-
|
18
|
-
<?php get_footer(); ?>
|
1
|
+
<?php get_template_part("content", "post"); ?>
|
Binary file
|
@@ -1,23 +1 @@
|
|
1
|
-
<?php
|
2
|
-
/* ----------------------
|
3
|
-
Single Post Template
|
4
|
-
---------------------- */
|
5
|
-
get_header(); ?>
|
6
|
-
|
7
|
-
<p><small>single.php</small></p>
|
8
|
-
|
9
|
-
<?php while (have_posts() ) : the_post(); ?>
|
10
|
-
<h1><?php echo get_the_title(); ?></h1>
|
11
|
-
<h4><?php echo date("D, d M Y" , strtotime(get_the_date() ) ); ?></h4>
|
12
|
-
<?php echo get_the_content(); ?>
|
13
|
-
|
14
|
-
<?php
|
15
|
-
$categories = get_the_category();
|
16
|
-
$category = $categories[0];
|
17
|
-
?>
|
18
|
-
<a href="<?php echo get_category_link($category->cat_ID); ?> ">
|
19
|
-
← Back
|
20
|
-
</a>
|
21
|
-
<?php endwhile; ?>
|
22
|
-
|
23
|
-
<?php get_footer(); ?>
|
1
|
+
<?php get_template_part("content", "post"); ?>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: edge_framework
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Henner Setyono
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-04-
|
11
|
+
date: 2014-04-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: sass
|
@@ -147,11 +147,19 @@ files:
|
|
147
147
|
- template/rails/application.html.erb
|
148
148
|
- template/wordpress/404.php
|
149
149
|
- template/wordpress/category.php
|
150
|
+
- template/wordpress/code/inflector.php
|
151
|
+
- template/wordpress/code/main.php
|
152
|
+
- template/wordpress/comments.php
|
153
|
+
- template/wordpress/content-post.php
|
154
|
+
- template/wordpress/content-posts.php
|
150
155
|
- template/wordpress/footer.php
|
151
156
|
- template/wordpress/functions.php
|
152
157
|
- template/wordpress/header.php
|
153
158
|
- template/wordpress/index.php
|
154
159
|
- template/wordpress/page.php
|
160
|
+
- template/wordpress/screenshot.png
|
161
|
+
- template/wordpress/search.php
|
162
|
+
- template/wordpress/searchform.php
|
155
163
|
- template/wordpress/single.php
|
156
164
|
- template/wordpress/style.css
|
157
165
|
homepage: http://edge.setyono.net
|