billy_cms 0.0.15 → 0.0.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|