billy_cms 0.0.15 → 0.0.17
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/app/assets/javascripts/billy_cms/backend/controllers/attributes.controller.js +4 -4
- data/app/assets/javascripts/billy_cms/backend/controllers/page_types.controller.js +23 -1
- data/app/assets/javascripts/billy_cms/backend/factories/page_type.js +1 -0
- data/app/assets/javascripts/billy_cms/backend/jstree.js +735 -207
- data/app/assets/javascripts/billy_cms/frontend/editing.es6 +8 -3
- data/app/assets/stylesheets/billy_cms/backend/index.scss +4 -0
- data/app/assets/stylesheets/billy_cms/editmode.scss +6 -7
- data/app/controllers/api/page_types_controller.rb +21 -0
- data/app/controllers/api/pages_controller.rb +5 -4
- data/app/models/billy_cms/page.rb +1 -1
- data/app/views/billy_cms/backend/_page_types.html.erb +72 -48
- data/lib/billy_cms/version.rb +1 -1
- metadata +2 -2
@@ -7,9 +7,14 @@ BillyCms.API_BASE_URL = '/billy_cms/api/pages';
|
|
7
7
|
BillyCms.Editing = {
|
8
8
|
isEditModeOn: false,
|
9
9
|
|
10
|
-
setEditMode(state) {
|
10
|
+
setEditMode(state, element) {
|
11
11
|
this.isEditModeOn = state;
|
12
|
-
var editableFields
|
12
|
+
var editableFields;
|
13
|
+
if (element) {
|
14
|
+
editableFields = $(element).parents('.page-wrapper').first().find('[contenteditable]');
|
15
|
+
} else {
|
16
|
+
editableFields = $('[contenteditable]');
|
17
|
+
}
|
13
18
|
var container = $('.container');
|
14
19
|
if (state === true) {
|
15
20
|
container.addClass('edit-mode-enabled');
|
@@ -44,7 +49,7 @@ BillyCms.Editing = {
|
|
44
49
|
|
45
50
|
$(function() {
|
46
51
|
$('.billycms_edit_button').on('click', function() {
|
47
|
-
BillyCms.Editing.setEditMode(!BillyCms.Editing.isEditModeOn);
|
52
|
+
BillyCms.Editing.setEditMode(!BillyCms.Editing.isEditModeOn, this);
|
48
53
|
});
|
49
54
|
|
50
55
|
$('.page-content-binary input[type=file]').on('change', function(evt) {
|
@@ -5,10 +5,6 @@
|
|
5
5
|
font-size: 13px;
|
6
6
|
background-color: #C1C1C1;
|
7
7
|
color: #fff;
|
8
|
-
position: absolute;
|
9
|
-
font-weight: 100px;
|
10
|
-
left: 1em;
|
11
|
-
min-width: 85px;
|
12
8
|
outline: none;
|
13
9
|
&:hover {
|
14
10
|
background-color: #E6B0B0;
|
@@ -24,8 +20,13 @@
|
|
24
20
|
}
|
25
21
|
}
|
26
22
|
|
23
|
+
.billycms-edit-page-buttons {
|
24
|
+
border-top: 1px solid #000;
|
25
|
+
padding-top: .5em;
|
26
|
+
}
|
27
|
+
|
27
28
|
.edit-mode-enabled {
|
28
|
-
[contenteditable], .page-content-binary {
|
29
|
+
[contenteditable=true], .page-content-binary {
|
29
30
|
border: 1px solid #F3B9B9;
|
30
31
|
background-color: #FFF0F0;
|
31
32
|
min-height: 1em;
|
@@ -70,8 +71,6 @@
|
|
70
71
|
|
71
72
|
.billycms_settings_button {
|
72
73
|
@include editbutton;
|
73
|
-
top: 12em;
|
74
|
-
z-index: 100;
|
75
74
|
&::before {
|
76
75
|
content: 'Seiteneinstellungen';
|
77
76
|
}
|
@@ -7,5 +7,26 @@ module Api
|
|
7
7
|
def show
|
8
8
|
render json: BillyCms::PageType.find(params[:id])
|
9
9
|
end
|
10
|
+
|
11
|
+
def create
|
12
|
+
render nothing: true, status: 400 unless params[:page_type]
|
13
|
+
page_type = BillyCms::PageType.new page_type_params
|
14
|
+
if page_type.save
|
15
|
+
render json: {
|
16
|
+
success: true,
|
17
|
+
page_type: page_type
|
18
|
+
}
|
19
|
+
else
|
20
|
+
render json: {
|
21
|
+
success: false,
|
22
|
+
error: page_type.error_messages,
|
23
|
+
}, status: 500
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def page_type_params
|
29
|
+
params.require(:page_type).permit(:title, :name) if current_user.admin?
|
30
|
+
end
|
10
31
|
end
|
11
32
|
end
|
@@ -9,7 +9,7 @@ module Api
|
|
9
9
|
end
|
10
10
|
|
11
11
|
def update
|
12
|
-
render nothing: true, status: 400 unless params[:page]
|
12
|
+
return render nothing: true, status: 400 unless params[:page]
|
13
13
|
page = BillyCms::Page.find params[:id]
|
14
14
|
if page.update_attributes page_params
|
15
15
|
render json: {
|
@@ -25,7 +25,7 @@ module Api
|
|
25
25
|
end
|
26
26
|
|
27
27
|
def create
|
28
|
-
render nothing: true, status: 400 unless params[:page]
|
28
|
+
return render nothing: true, status: 400 unless params[:page]
|
29
29
|
page = BillyCms::Page.new page_params
|
30
30
|
if page.save
|
31
31
|
render json: {
|
@@ -41,8 +41,9 @@ module Api
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def destroy
|
44
|
-
render :nothing, status: 400 unless params[:id]
|
45
|
-
|
44
|
+
return render :nothing, status: 400 unless params[:id]
|
45
|
+
return render :nothing, status: 404 unless page = BillyCms::Page.where(id: params[:id]).first
|
46
|
+
if page.destroy
|
46
47
|
render json: {
|
47
48
|
success: true
|
48
49
|
}
|
@@ -7,7 +7,7 @@ module BillyCms
|
|
7
7
|
extend FriendlyId
|
8
8
|
friendly_id :title, use: :slugged
|
9
9
|
|
10
|
-
has_many :pages, class_name: 'Page', foreign_key: :parent_page_id
|
10
|
+
has_many :pages, class_name: 'Page', foreign_key: :parent_page_id, :dependent => :destroy
|
11
11
|
belongs_to :parent_page, class_name: 'Page', foreign_key: :parent_page_id, optional: true
|
12
12
|
|
13
13
|
def cms_path
|
@@ -1,50 +1,74 @@
|
|
1
1
|
<div layout="row" layout-wrap>
|
2
|
-
<
|
3
|
-
<md-
|
4
|
-
<
|
5
|
-
<
|
6
|
-
<
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
<
|
15
|
-
<
|
16
|
-
<
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
<
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
2
|
+
<md-tabs md-dynamic-height md-border-bottom md-selected="ptctrl.selectedTabIndex" layout="column" flex="100" style="display: flex">
|
3
|
+
<md-tab label="Alle Seitentypen">
|
4
|
+
<aside flex="30">
|
5
|
+
<md-list>
|
6
|
+
<md-list-item class="md-2-line" ng-repeat="pageType in app.allPageTypes" ng-click="ptctrl.selectPageType(pageType)" ng-class="{selected: pageType.id == ptctrl.selectedPageType.id}">
|
7
|
+
<div class="md-list-item-text" layout="column">
|
8
|
+
<h3>{{ pageType.title }}</h3>
|
9
|
+
<h4>{{ pageType.name }}</h4>
|
10
|
+
</div>
|
11
|
+
</md-list-item>
|
12
|
+
</md-list>
|
13
|
+
</aside>
|
14
|
+
<form flex="70" ng-show="ptctrl.selectedPageType" ng-submit="ptctrl.savePageType(ptctrl.selectedPageType)">
|
15
|
+
<md-toolbar>
|
16
|
+
<div class="md-toolbar-tools">
|
17
|
+
<h3>
|
18
|
+
<span>{{ptctrl.selectedPageType.title}}</span>
|
19
|
+
</h3>
|
20
|
+
</div>
|
21
|
+
</md-toolbar>
|
22
|
+
<md-content>
|
23
|
+
<md-input-container class="md-block">
|
24
|
+
<label>ID: {{ptctrl.selectedPageType.id}}</label>
|
25
|
+
</md-input-container>
|
26
|
+
<md-input-container class="md-block">
|
27
|
+
<label>Titel</label>
|
28
|
+
<input type="text" ng-model="ptctrl.selectedPageType.title" />
|
29
|
+
</md-input-container>
|
30
|
+
<md-input-container class="md-block">
|
31
|
+
<label>Name</label>
|
32
|
+
<input type="text" ng-model="ptctrl.selectedPageType.name" />
|
33
|
+
</md-input-container>
|
34
|
+
</md-content>
|
35
|
+
<h2>
|
36
|
+
Zusätzliche Eigenschaften
|
37
|
+
</h2>
|
38
|
+
<md-input-container>
|
39
|
+
<label>Mögliche zusätzliche Eigenschaft hinzufügen:</label>
|
40
|
+
<md-select ng-model="ptctrl.attributeIdToAdd" ng-change="ptctrl.addAtributeToSelectedPageType()">
|
41
|
+
<md-option ng-repeat="attribute in ptctrl.attributesAddableToSelectedPageType() track by $index" value="{{attribute.id}}">
|
42
|
+
{{attribute.title}} ({{attribute.name}})
|
43
|
+
</md-option>
|
44
|
+
</md-select>
|
45
|
+
</md-input-container>
|
46
|
+
<ul>
|
47
|
+
<li ng-repeat="attribute in ptctrl.selectedPageType.additional_attributes">
|
48
|
+
{{attribute.title}} <span class="delete-link" ng-click="ptctrl.removeAttribute(attribute)">entfernen</span>
|
49
|
+
</li>
|
50
|
+
</ul>
|
51
|
+
</form>
|
52
|
+
</md-tab>
|
53
|
+
|
54
|
+
<md-tab label="Seitentyp erstellen">
|
55
|
+
<aside flex="30"></aside>
|
56
|
+
<form flex="70" ng-submit="ptctrl.createPageType(ptctrl.newPageType)">
|
57
|
+
<div class="md-toolbar-tools"><h3>Neuer Seitentyp</h3></div>
|
58
|
+
<md-content>
|
59
|
+
<md-input-container class="md-block">
|
60
|
+
<label>Titel</label>
|
61
|
+
<input type="text" ng-model="ptctrl.newPageType.title" />
|
62
|
+
</md-input-container>
|
63
|
+
<md-input-container class="md-block">
|
64
|
+
<label>Name</label>
|
65
|
+
<input type="text" ng-model="ptctrl.newPageType.name" />
|
66
|
+
</md-input-container>
|
67
|
+
<md-input-container>
|
68
|
+
<input type="submit" value="speichern" aria-label="neuen Seitentypen speichern" />
|
69
|
+
</md-input-container>
|
70
|
+
</md-content>
|
71
|
+
</form>
|
72
|
+
</md-tab>
|
73
|
+
</md-tabs>
|
50
74
|
</div>
|
data/lib/billy_cms/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: billy_cms
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- unsdrei GbR
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-12-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|