diff --git a/cache/lastCache.txt b/cache/lastCache.txt index edb630e..14c6c84 100644 --- a/cache/lastCache.txt +++ b/cache/lastCache.txt @@ -1 +1 @@ -1548495240 \ No newline at end of file +1550398193 \ No newline at end of file diff --git a/content/00-Welcome/02-Write-Content.md b/content/00-Welcome/01-Write-Content.md similarity index 100% rename from content/00-Welcome/02-Write-Content.md rename to content/00-Welcome/01-Write-Content.md diff --git a/content/00-Welcome/03-Get-Help.md b/content/00-Welcome/02-Get-Help.md similarity index 100% rename from content/00-Welcome/03-Get-Help.md rename to content/00-Welcome/02-Get-Help.md diff --git a/content/00-Welcome/04-markdown-test.md b/content/00-Welcome/03-Markdown-Test.md similarity index 100% rename from content/00-Welcome/04-markdown-test.md rename to content/00-Welcome/03-Markdown-Test.md diff --git a/media/live/5c4ccd43e5ac8-live.png b/media/live/5c4ccd43e5ac8-live.png new file mode 100644 index 0000000..2fc9519 Binary files /dev/null and b/media/live/5c4ccd43e5ac8-live.png differ diff --git a/media/live/5c4ccd43e5ac8-mlibrary.png b/media/live/5c4ccd43e5ac8-mlibrary.png new file mode 100644 index 0000000..44d48c1 Binary files /dev/null and b/media/live/5c4ccd43e5ac8-mlibrary.png differ diff --git a/media/original/5c4ccd43e5ac8-original.png b/media/original/5c4ccd43e5ac8-original.png new file mode 100644 index 0000000..e57df89 Binary files /dev/null and b/media/original/5c4ccd43e5ac8-original.png differ diff --git a/system/Controllers/ContentController.php b/system/Controllers/ContentController.php index 670df05..0a06495 100644 --- a/system/Controllers/ContentController.php +++ b/system/Controllers/ContentController.php @@ -92,8 +92,10 @@ abstract class ContentController $vResult = $validate->editorInput($this->params); if(is_array($vResult)) - { + { + $message = reset($vResult); $this->errors = ['errors' => $vResult]; + if(isset($message[0])){ $this->errors['errors']['message'] = $message[0]; } return false; } return true; @@ -106,7 +108,9 @@ abstract class ContentController if(is_array($vResult)) { + $message = reset($vResult); $this->errors = ['errors' => $vResult]; + if(isset($message[0])){ $this->errors['errors']['message'] = $message[0]; } return false; } return true; @@ -119,7 +123,9 @@ abstract class ContentController if(is_array($vResult)) { + $message = reset($vResult); $this->errors = ['errors' => $vResult]; + if(isset($message[0])){ $this->errors['errors']['message'] = $message[0]; } return false; } return true; @@ -132,7 +138,9 @@ abstract class ContentController if(is_array($vResult)) { + $message = reset($vResult); $this->errors = ['errors' => $vResult]; + if(isset($message[0])){ $this->errors['errors']['message'] = $message[0]; } return false; } return true; diff --git a/system/Controllers/SettingsController.php b/system/Controllers/SettingsController.php index 4401a97..2f86e07 100644 --- a/system/Controllers/SettingsController.php +++ b/system/Controllers/SettingsController.php @@ -114,7 +114,7 @@ class SettingsController extends Controller if(isset($themeSettings['forms']['fields'])) { - $fields = $fieldsModel->getFields($userSettings, 'themes', $themeName, $themeSettings); + $fields = $fieldsModel->getFields($userSettings, 'themes', $themeName, $themeSettings); /* overwrite original theme form definitions with enhanced form objects */ $themedata[$themeName]['forms']['fields'] = $fields; @@ -193,7 +193,7 @@ class SettingsController extends Controller $fields = $fieldsModel->getFields($userSettings, 'plugins', $pluginName, $pluginOriginalSettings); /* overwrite original plugin form definitions with enhanced form objects */ - $plugins[$pluginName]['forms']['fields'] = $fields; + $plugins[$pluginName]['forms']['fields'] = $fields; } } diff --git a/system/Models/Fields.php b/system/Models/Fields.php index d5bf8c9..d144ca3 100644 --- a/system/Models/Fields.php +++ b/system/Models/Fields.php @@ -13,7 +13,7 @@ class Fields # formtype are backend forms or public forms, only relevant for plugins for now $formType = $formType ? $formType : 'forms'; - + # iterate through all fields of the objectSetting (theme or plugin) foreach($objectSettings[$formType]['fields'] as $fieldName => $fieldConfigurations) { diff --git a/system/Models/Validation.php b/system/Models/Validation.php index 70d7aaa..4a1f4d8 100644 --- a/system/Models/Validation.php +++ b/system/Models/Validation.php @@ -285,7 +285,7 @@ class Validation $v->rule('required', ['folder_id', 'item_name', 'type', 'url']); $v->rule('regex', 'folder_id', '/^[0-9.]+$/i'); $v->rule('noSpecialChars', 'item_name'); - $v->rule('lengthBetween', 'item_name', 1, 20); + $v->rule('lengthBetween', 'item_name', 1, 40); $v->rule('in', 'type', ['file', 'folder']); if($v->validate()) diff --git a/system/Models/Write.php b/system/Models/Write.php index 62079af..d76abf8 100644 --- a/system/Models/Write.php +++ b/system/Models/Write.php @@ -24,7 +24,7 @@ class Write } else { - throw new \Exception("The folder '{$folder}' is missing and we could not create it. Please create the folder manually on your server."); +# throw new \Exception("The folder '{$folder}' is missing and we could not create it. Please create the folder manually on your server."); return false; } } @@ -35,7 +35,7 @@ class Write } else { - throw new \Exception("Please make the folder '{$folder}' writable."); +# throw new \Exception("Please make the folder '{$folder}' writable."); return false; } return true; diff --git a/system/author/auth/welcome.twig b/system/author/auth/welcome.twig index 81c40c7..c0b78c7 100644 --- a/system/author/auth/welcome.twig +++ b/system/author/auth/welcome.twig @@ -11,7 +11,7 @@

Hurra!

Your account has been created and you are logged in now.

Next step: Visit the author panel and setup your new website. You can configure the system, choose themes and add plugins.

-

New: We recently added many format options like images, youtube videos, list and codeblocks to the visual content editor.

+

New:Markdown is cool but editing tables is a nightmare. But not with Typemill, because we added a visual table editor recently. Try it!

Get help: If you have any questions, please consult the docs or open a new issue on github.

Configure your website diff --git a/system/author/css/style.css b/system/author/css/style.css index 23c2e5a..7066746 100644 --- a/system/author/css/style.css +++ b/system/author/css/style.css @@ -1567,11 +1567,54 @@ button.format-item:hover{ font-weight: 700; } .blox tbody{} -.blox tr{} -.blox tr:nth-child(odd){ } +.blox th{ padding: 10px 0;} +.blox tr,.blox-editor tr{} +.blox tr:nth-child{ } .blox tr:nth-child(even){ background-color:#f9f8f6; } .blox td{ padding: 5px;} -.blox th{ padding: 10px 0;} + +.blox-editor table{ + display: inline-table; + width: 100%; + border-collapse: collapse; + margin-bottom: 20px; +} +.blox-editor thead{} +.blox-editor tbody{} +.blox-editor tr{} +.blox-editor th{ border: 1px solid #ccc; padding: 5px; } +.blox-editor td{ border: 1px solid #ccc; padding: 5px; } +.blox-editor td.noteditable, .blox-editor th.noteditable{ + border: 1px solid #ccc; + text-align:center; + color: #ccc; + background: #f9f8f6; + font-weight: 300; + padding: 0; +} +.blox-editor .columnaction, .blox-editor .rowaction{ + position: absolute; + background: #fff; + width: 150px; + font-size: 0.9em; + color: #000; + text-align: left; + box-shadow: 0 0 2px #000; + margin: 5px; + z-index:999999; +} +.blox-editor .rowaction{ + margin-left: 53px; + margin-top: -3px; +} +.blox-editor .actionline{ + padding: 5px 10px; + cursor: pointer; +} +.blox-editor .actionline:hover{ + background: #70c1b3; + color: #fff; +} .blox dl{ border-top: 1px solid #e0474c; border-bottom: 1px solid #e0474c; diff --git a/system/author/editor/editor-blox.twig b/system/author/editor/editor-blox.twig index e1f6559..69f0738 100644 --- a/system/author/editor/editor-blox.twig +++ b/system/author/editor/editor-blox.twig @@ -33,10 +33,10 @@ + - + diff --git a/system/author/js/vue-blox.js b/system/author/js/vue-blox.js index 579eeba..8dcbd9f 100644 --- a/system/author/js/vue-blox.js +++ b/system/author/js/vue-blox.js @@ -162,7 +162,7 @@ const contentComponent = Vue.component('content-block', { } }, saveBlock: function() - { + { if(this.compmarkdown == undefined || this.compmarkdown.replace(/(\r\n|\n|\r|\s)/gm,"") == '') { this.switchToPreviewMode(); @@ -203,17 +203,17 @@ const contentComponent = Vue.component('content-block', { if(httpStatus == 400) { self.activatePage(); - publishController.errors.message = "Sorry, something went wrong. Maybe you are logged out? Please login and try again."; + publishController.errors.message = "Looks like you are logged out. Please login and try again."; } - if(response) + else if(response) { self.activatePage(); - + var result = JSON.parse(response); - + if(result.errors) { - publishController.errors.message = result.errors.markdown[0]; + publishController.errors.message = result.errors.message; } else { @@ -227,7 +227,8 @@ const contentComponent = Vue.component('content-block', { self.$root.$data.blockMarkdown = ''; self.$root.$data.blockType = 'markdown-component'; self.getData(); - document.querySelectorAll('textarea')[0].style.height = "70px"; + var textbox = document.querySelectorAll('textarea')[0]; + if(textbox){ textbox.style.height = "70px"; } } else { @@ -241,6 +242,11 @@ const contentComponent = Vue.component('content-block', { } } } + else if(httpStatus != 200) + { + self.activatePage(); + publishController.errors.message = "Sorry, something went wrong. Please refresh the page and try again."; + } }, method, url, params); } }, @@ -430,6 +436,28 @@ const ulistComponent = Vue.component('ulist-component', { { this.compmarkdown = '* '; } + else + { + var lines = this.compmarkdown.split("\n"); + var length = lines.length + var md = ''; + + for(i = 0; i < length; i++) + { + var clean = lines[i]; + clean = clean.replace(/^- /, '* '); + clean = clean.replace(/^\+ /, '* '); + if(i == length-1) + { + md += clean; + } + else + { + md += clean + '\n'; + } + } + this.compmarkdown = md; + } this.$nextTick(function () { autosize(document.querySelectorAll('textarea')); }); @@ -487,6 +515,219 @@ const headlineComponent = Vue.component('headline-component', { }, }) +const tableComponent = Vue.component('table-component', { + props: ['compmarkdown', 'disabled'], + data: function(){ + return { + table: [ + ['0', '1', '2'], + ['1', 'Head', 'Head'], + ['2', 'cell', 'cell'], + ['3', 'cell', 'cell'], + ], + editable: 'editable', + noteditable: 'noteditable', + cellcontent: '', + columnbar: false, + rowbar: false, + tablekey: 1, + } + }, + template: '
' + + '
' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '
{{value}} ' + + '
' + + '
add right column
' + + '
add left column
' + + '
delete column
' + + '
' + + '
' + + '
' + + '
add row above
' + + '
add row below
' + + '
delete row
' + + '
' + + '{{value}}
' + + '
' + + '
add row above
' + + '
add row below
' + + '
delete row
' + + '
' + + '{{ value }}
' + + '
', + mounted: function(){ + this.$refs.markdown.focus(); + if(this.compmarkdown) + { + var table = []; + var lines = this.compmarkdown.split("\n"); + var length = lines.length + var c = 1; + + for(i = 0; i < length; i++) + { + if(i == 1){ continue } + + var line = lines[i].trim(); + var row = line.split("|").map(function(cell){ + return cell.trim(); + }); + if(row[0] == ''){ row.shift() } + if(row[row.length-1] == ''){ row.pop() } + if(i == 0) + { + var rlength = row.length; + var row0 = []; + for(y = 0; y <= rlength; y++) { row0.push(y) } + table.push(row0); + } + row.splice(0,0,c); + c++; + table.push(row); + } + this.table = table; + } + }, + methods: { + updatedata: function(event,col,row) + { + this.table[row][col] = event.target.innerText; + this.markdowntable(); + }, + switchcolumnbar(value) + { + this.rowbar = false; + (this.columnbar == value || value == 0) ? this.columnbar = false : this.columnbar = value; + }, + switchrowbar(value) + { + this.columnbar = false; + (this.rowbar == value || value == 0 || value == 1 )? this.rowbar = false : this.rowbar = value; + }, + addaboverow: function(index) + { + var row = []; + var cols = this.table[0].length; + for(var i = 0; i < cols; i++){ row.push("new"); } + this.table.splice(index,0,row); + this.reindexrows(); + }, + addbelowrow: function(index) + { + var row = []; + var cols = this.table[0].length; + for(var i = 0; i < cols; i++){ row.push("new"); } + this.table.splice(index+1,0,row); + this.reindexrows(); + }, + deleterow: function(index) + { + this.table.splice(index,1); + this.reindexrows(); + }, + addrightcolumn: function(index) + { + var tableLength = this.table.length; + for (var i = 0; i < tableLength; i++) + { + this.table[i].splice(index+1,0,"new"); + } + this.reindexcolumns(); + }, + addleftcolumn: function(index) + { + var tableLength = this.table.length; + for (var i = 0; i < tableLength; i++) + { + this.table[i].splice(index,0,"new"); + } + this.reindexcolumns(); + }, + deletecolumn: function(index) + { + var tableLength = this.table.length; + for (var i = 0; i < tableLength; i++) + { + this.table[i].splice(index,1); + } + this.reindexcolumns(); + }, + reindexrows: function() + { + var tableRows = this.table.length; + for (var i = 0; i < tableRows; i++) + { + Vue.set(this.table[i], 0, i); + } + this.tablekey +=1; + this.markdowntable(); + }, + reindexcolumns: function() + { + var tableColumns = this.table[0].length; + for (var i = 0; i < tableColumns; i++) + { + Vue.set(this.table[0], i, i); + } + this.tablekey +=1; + this.markdowntable(); + }, + markdowntable: function() + { + var markdown = ''; + var separator = '\n|'; + var rows = this.table.length; + var cols = this.table[0].length; + + for(var i = 0; i < cols; i++) + { + if(i == 0){ continue; } + separator += '---|'; + } + + for(var i = 0; i < rows; i++) + { + var row = this.table[i]; + + if(i == 0){ continue; } + + for(var y = 0; y < cols; y++) + { + if(y == 0){ continue; } + + var value = row[y].trim(); + + if(y == 1) + { + markdown += '\n| ' + value + ' | '; + } + else + { + markdown += value + ' | '; + } + } + if(i == 1) { markdown = markdown + separator; } + } + this.$emit('updatedMarkdown', markdown); + }, + updatemarkdown: function(event) + { + /* generate markdown here ??? */ + this.$emit('updatedMarkdown', event.target.value); + }, + }, +}) const videoComponent = Vue.component('video-component', { props: ['compmarkdown', 'disabled', 'load'], @@ -792,6 +1033,7 @@ let editor = new Vue({ 'quote-component': quoteComponent, 'ulist-component': ulistComponent, 'olist-component': olistComponent, + 'table-component': tableComponent, }, data: { root: document.getElementById("main").dataset.url, @@ -877,6 +1119,12 @@ let editor = new Vue({ { if(block.match(/^\d+\./)){ return "olist-component" } + var lines = block.split("\n"); + if(lines.length > 2 && lines[0].indexOf('|') != -1 && /[\-\|: ]{3,}$/.test(lines[1])) + { + return "table-component"; + } + var firstChar = block[0]; var secondChar = block[1]; var thirdChar = block[2]; @@ -898,10 +1146,10 @@ let editor = new Vue({ if(secondChar == "`" && thirdChar == "`") { return "code-component" } else { return "markdown-component" } break; case "*": + case "-": + case "+": if(secondChar == " "){ return "ulist-component" } else { return "markdown-component" } break; - case Number.isInteger(firstChar): - if(secondChar == "." ){ return "olist-component" } else { return "markdown-component" } default: return 'markdown-component'; } diff --git a/system/author/js/vue-editor.js b/system/author/js/vue-editor.js index d897951..13ef10b 100644 --- a/system/author/js/vue-editor.js +++ b/system/author/js/vue-editor.js @@ -2,7 +2,10 @@ let editor = new Vue({ delimiters: ['${', '}'], el: '#editor', data: { - errors: false, + errors: { + title: false, + content: false, + }, form: { title: document.getElementById("title").value, content: document.getElementById("content").value, diff --git a/system/author/js/vue-navi.js b/system/author/js/vue-navi.js index 21e4e72..aeac981 100644 --- a/system/author/js/vue-navi.js +++ b/system/author/js/vue-navi.js @@ -114,9 +114,9 @@ const navcomponent = Vue.component('navigation', { { publishController.errors.message = false; - if(this.$root.$data.format.test(this.newItem) || !this.newItem || this.newItem.length > 20) - { - publishController.errors.message = 'Special Characters are not allowed. Length between 1 and 20.'; + if(this.$root.$data.format.test(this.newItem) || !this.newItem || this.newItem.length > 40) + { + publishController.errors.message = 'Special Characters are not allowed. Length between 1 and 40.'; return; } diff --git a/system/author/js/vue-publishcontroller.js b/system/author/js/vue-publishcontroller.js index c9609c0..3af66b8 100644 --- a/system/author/js/vue-publishcontroller.js +++ b/system/author/js/vue-publishcontroller.js @@ -11,8 +11,6 @@ let publishController = new Vue({ csrf_value: document.getElementById("csrf_value").value, }, errors:{ - title: false, - content: false, message: false, }, modalWindow: false, @@ -30,7 +28,8 @@ let publishController = new Vue({ methods: { publishDraft: function(e){ var self = this; - self.errors = {title: false, content: false, message: false}; + self.errors.message = false; + editor.errors = {title: false, content: false}; self.publishResult = "load"; self.publishDisabled = "disabled"; @@ -52,7 +51,7 @@ let publishController = new Vue({ self.publishResult = "fail"; self.errors.message = "You are probably logged out. Please backup your changes, login and then try again." } - if(response) + else if(response) { var result = JSON.parse(response); @@ -60,13 +59,10 @@ let publishController = new Vue({ { self.publishDisabled = false; self.publishResult = "fail"; - self.errors.message = result.errors.content[0]; - /* - if(result.errors.title){ self.errors.title = result.errors.title[0] }; - if(result.errors.content){ self.errors.content = result.errors.content[0] }; + if(result.errors.title){ editor.errors.title = result.errors.title[0] }; + if(result.errors.content){ editor.errors.content = result.errors.content[0] }; if(result.errors.message){ self.errors.message = result.errors.message }; - */ } else { @@ -76,12 +72,19 @@ let publishController = new Vue({ self.publishLabel = "online"; } } - }, method, url, this.form ); + else if(httpStatus != 200) + { + self.publishDisabled = false; + self.publishResult = "fail"; + self.errors.message = "Something went wrong, please refresh the page and try again." + } + }, method, url, this.form ); }, saveDraft: function(e){ var self = this; - self.errors = {title: false, content: false, message: false}; + self.errors.message = false; + editor.errors = {title: false, content: false}; self.draftDisabled = "disabled"; self.draftResult = "load"; @@ -100,7 +103,7 @@ let publishController = new Vue({ self.publishResult = "fail"; self.errors.message = "You are probably logged out. Please backup your changes, login and then try again." } - if(response) + else if(response) { var result = JSON.parse(response); @@ -108,18 +111,22 @@ let publishController = new Vue({ { self.draftDisabled = false; self.draftResult = 'fail'; - self.errors.message = result.errors.content[0]; - /* - if(result.errors.title){ self.errors.title = result.errors.title[0] }; - if(result.errors.content){ self.errors.message = result.errors.content[0] }; - if(result.errors.message){ self.errors.message = result.errors.message }; - */ + + if(result.errors.title){ editor.errors.title = result.errors.title[0]; }; + if(result.errors.content){ editor.errors.content = result.errors.content[0] }; + if(result.errors.message){ self.errors.message = result.errors.message; }; } else { self.draftResult = 'success'; } } + else if(httpStatus != 200) + { + self.publishDisabled = false; + self.publishResult = "fail"; + self.errors.message = "Something went wrong, please refresh the page and try again." + } }, method, url, this.form ); }, depublishArticle: function(e){ @@ -131,7 +138,8 @@ let publishController = new Vue({ } var self = this; - self.errors = {title: false, content: false, message: false}; + self.errors.message = false; + editor.errors = {title: false, content: false}; self.publishStatus = "disabled"; @@ -140,7 +148,19 @@ let publishController = new Vue({ sendJson(function(response, httpStatus) { - if(response) + if(httpStatus == 400) + { + self.publishDisabled = false; + self.publishResult = "fail"; + self.errors.message = "You are probably logged out. Please backup your changes, login and then try again." + } + else if(httpStatus != 200) + { + self.publishDisabled = false; + self.publishResult = "fail"; + self.errors.message = "Something went wrong, please refresh the page and try again." + } + else if(response) { var result = JSON.parse(response); @@ -160,7 +180,8 @@ let publishController = new Vue({ }, deleteArticle: function(e){ var self = this; - self.errors = {title: false, content: false, message: false}; + self.errors.message = false; + editor.errors = {title: false, content: false}; self.deleteDisabled = "disabled"; self.deleteResult = "load"; @@ -170,7 +191,19 @@ let publishController = new Vue({ sendJson(function(response, httpStatus) { - if(response) + if(httpStatus == 400) + { + self.publishDisabled = false; + self.publishResult = "fail"; + self.errors.message = "You are probably logged out. Please backup your changes, login and then try again." + } + else if(httpStatus != 200) + { + self.publishDisabled = false; + self.publishResult = "fail"; + self.errors.message = "Something went wrong, please refresh the page and try again." + } + else if(response) { var result = JSON.parse(response); diff --git a/system/author/settings/plugins.twig b/system/author/settings/plugins.twig index 1593edf..14b32a5 100644 --- a/system/author/settings/plugins.twig +++ b/system/author/settings/plugins.twig @@ -43,7 +43,20 @@ {% for field in plugin.forms.fields %} - {% include '/partials/fields.twig' with {'itemName' : pluginName, 'object' : 'plugins' } %} + {% if field.type == 'fieldset' %} + +
+ {{ field.legend }} + {% for field in field.fields %} + {% include '/partials/fields.twig' with {'itemName' : pluginName, 'object' : 'plugins' } %} + {% endfor %} +
+ + {% else %} + + {% include '/partials/fields.twig' with {'itemName' : pluginName, 'object' : 'plugins' } %} + + {% endif %} {% endfor %} diff --git a/themes/typemill/css/fontello/config.json b/themes/typemill/css/fontello/config.json index 2a997c2..76466b7 100644 --- a/themes/typemill/css/fontello/config.json +++ b/themes/typemill/css/fontello/config.json @@ -13,16 +13,22 @@ "src": "fontawesome" }, { - "uid": "e9107949dd6c9e8ab2b29ae07156e38c", - "css": "linkedin", - "code": 61665, - "src": "fontawesome" + "uid": "91426c82d94428a33353e495418435e3", + "css": "share", + "code": 59393, + "src": "entypo" }, { - "uid": "11ebb30e17efcd988a228ade5d3e8c74", - "css": "xing", - "code": 61800, - "src": "fontawesome" + "uid": "884cfc3e6e2d456dd2a2ca0dbb9e6337", + "css": "left-open-big", + "code": 59394, + "src": "entypo" + }, + { + "uid": "004882ab2d5c418c5b2060e80596279b", + "css": "right-open-big", + "code": 59395, + "src": "entypo" }, { "uid": "627abcdb627cb1789e009c08e2678ef9", @@ -30,12 +36,6 @@ "code": 61593, "src": "fontawesome" }, - { - "uid": "9d3e9faf68fd4e12def853f0d4e1173b", - "css": "whatsapp", - "code": 62002, - "src": "fontawesome" - }, { "uid": "8e04c98c8f5ca0a035776e3001ad2638", "css": "facebook", @@ -43,22 +43,34 @@ "src": "fontawesome" }, { - "uid": "884cfc3e6e2d456dd2a2ca0dbb9e6337", - "css": "left-open-big", - "code": 59393, - "src": "entypo" + "uid": "11ebb30e17efcd988a228ade5d3e8c74", + "css": "xing", + "code": 61800, + "src": "fontawesome" }, { - "uid": "004882ab2d5c418c5b2060e80596279b", - "css": "right-open-big", - "code": 59394, - "src": "entypo" + "uid": "e9107949dd6c9e8ab2b29ae07156e38c", + "css": "linkedin", + "code": 61665, + "src": "fontawesome" }, { - "uid": "91426c82d94428a33353e495418435e3", - "css": "share-1", - "code": 59395, - "src": "entypo" + "uid": "9d3e9faf68fd4e12def853f0d4e1173b", + "css": "whatsapp", + "code": 62002, + "src": "fontawesome" + }, + { + "uid": "9a76bc135eac17d2c8b8ad4a5774fc87", + "css": "download", + "code": 59396, + "src": "fontawesome" + }, + { + "uid": "0f6a2573a7b6df911ed199bb63717e27", + "css": "github-circled", + "code": 61595, + "src": "fontawesome" } ] } \ No newline at end of file diff --git a/themes/typemill/css/fontello/css/fontello-codes.css b/themes/typemill/css/fontello/css/fontello-codes.css index 072add3..fe90412 100644 --- a/themes/typemill/css/fontello/css/fontello-codes.css +++ b/themes/typemill/css/fontello/css/fontello-codes.css @@ -1,10 +1,12 @@ .icon-mail:before { content: '\e800'; } /* '' */ -.icon-left-open-big:before { content: '\e801'; } /* '' */ -.icon-right-open-big:before { content: '\e802'; } /* '' */ -.icon-share-1:before { content: '\e803'; } /* '' */ +.icon-share:before { content: '\e801'; } /* '' */ +.icon-left-open-big:before { content: '\e802'; } /* '' */ +.icon-right-open-big:before { content: '\e803'; } /* '' */ +.icon-download:before { content: '\e804'; } /* '' */ .icon-twitter:before { content: '\f099'; } /* '' */ .icon-facebook:before { content: '\f09a'; } /* '' */ +.icon-github-circled:before { content: '\f09b'; } /* '' */ .icon-linkedin:before { content: '\f0e1'; } /* '' */ .icon-xing:before { content: '\f168'; } /* '' */ .icon-whatsapp:before { content: '\f232'; } /* '' */ \ No newline at end of file diff --git a/themes/typemill/css/fontello/css/fontello-embedded.css b/themes/typemill/css/fontello/css/fontello-embedded.css index 7517e9e..07ff687 100644 --- a/themes/typemill/css/fontello/css/fontello-embedded.css +++ b/themes/typemill/css/fontello/css/fontello-embedded.css @@ -1,15 +1,15 @@ @font-face { font-family: 'fontello'; - src: url('../font/fontello.eot?39099312'); - src: url('../font/fontello.eot?39099312#iefix') format('embedded-opentype'), - url('../font/fontello.svg?39099312#fontello') format('svg'); + src: url('../font/fontello.eot?14513121'); + src: url('../font/fontello.eot?14513121#iefix') format('embedded-opentype'), + url('../font/fontello.svg?14513121#fontello') format('svg'); font-weight: normal; font-style: normal; } @font-face { font-family: 'fontello'; - src: url('data:application/octet-stream;base64,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') format('woff'), - url('data:application/octet-stream;base64,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PistsFYssgAAQCstsFcssgABQCstsFgssgEAQCstsFkssgEBQCstsFossgAAQystsFsssgABQystsFwssgEAQystsF0ssgEBQystsF4ssgAAPystsF8ssgABPystsGAssgEAPystsGEssgEBPystsGIssDcrLrErARQrLbBjLLA3K7A7Ky2wZCywNyuwPCstsGUssAAWsDcrsD0rLbBmLLA4Ky6xKwEUKy2wZyywOCuwOystsGgssDgrsDwrLbBpLLA4K7A9Ky2waiywOSsusSsBFCstsGsssDkrsDsrLbBsLLA5K7A8Ky2wbSywOSuwPSstsG4ssDorLrErARQrLbBvLLA6K7A7Ky2wcCywOiuwPCstsHEssDorsD0rLbByLLMJBAIDRVghGyMhWUIrsAhlsAMkUHiwARUwLQBLuADIUlixAQGOWbABuQgACABjcLEABUKyAAEAKrEABUKzCgIBCCqxAAVCsw4AAQgqsQAGQroCwAABAAkqsQAHQroAQAABAAkqsQMARLEkAYhRWLBAiFixA2REsSYBiFFYugiAAAEEQIhjVFixAwBEWVlZWbMMAgEMKrgB/4WwBI2xAgBEAAA=') format('truetype'); + src: url('data:application/octet-stream;base64,d09GRgABAAAAABLsAA8AAAAAHYgAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABHU1VCAAABWAAAADsAAABUIIslek9TLzIAAAGUAAAAQwAAAFY+IFLaY21hcAAAAdgAAACeAAACHK64D05jdnQgAAACeAAAABMAAAAgBtX/BGZwZ20AAAKMAAAFkAAAC3CKkZBZZ2FzcAAACBwAAAAIAAAACAAAABBnbHlmAAAIJAAAB5kAAAlkSPsjf2hlYWQAAA/AAAAAMwAAADYT4L1ZaGhlYQAAD/QAAAAfAAAAJAcwA1JobXR4AAAQFAAAACwAAAAwJSz/5GxvY2EAABBAAAAAGgAAABoOJguobWF4cAAAEFwAAAAgAAAAIAEXDA9uYW1lAAAQfAAAAXcAAALNzJ0fIXBvc3QAABH0AAAAeQAAAKV8Vvm+cHJlcAAAEnAAAAB6AAAAhuVBK7x4nGNgZGBg4GIwYLBjYHJx8wlh4MtJLMljkGJgYYAAkDwymzEnMz2RgQPGA8qxgGkOIGaDiAIAJjsFSAB4nGNgZJZknMDAysDAVMW0h4GBoQdCMz5gMGRkAooysDIzYAUBaa4pDA4vGD4ZMQf9z2KIYg5imAYUZgTJAQDLvwuCAHic7ZG9DYMwFIQ/g0N+oEyRIVIxTGZgjlQZIA1hOjqXhgXgnm0lS+RZn6U7Wc/SHXAAanEXHtwLh81Trkt+zSX5nod0x4kKH3yc4rwMa79tEIjjT33H6fWVWzqmKu3y+rHhqC1n7W1lN/ynS/e7qNYSzVgHoaD8CAXrLBSst1CwPuOYUc7ET0aJE6eMsifOGbXAMmSs57XP0O4OSzCaAAB4nGNgQAMSEMgc9D8LhAESbAPdAHicrVZpd9NGFB15SZyELCULLWphxMRpsEYmbMGACUGyYyBdnK2VoIsUO+m+8Ynf4F/zZNpz6Dd+Wu8bLySQtOdwmpOjd+fN1czbZRJaktgL65GUmy/F1NYmjew8CemGTctRfCg7eyFlisnfBVEQrZbatx2HREQiULWusEQQ+x5ZmmR86FFGy7akV03KLT3pLlvjQb1V334aOsqxO6GkZjN0aD2yJVUYVaJIpj1S0qZlqPorSSu8v8LMV81QwohOImm8GcbQSN4bZ7TKaDW24yiKbLLcKFIkmuFBFHmU1RLn5IoJDMoHzZDyyqcR5cP8iKzYo5xWsEu20/y+L3mndzk/sV9vUbbkQB/Ijuzg7HQlX4RbW2HctJPtKFQRdtd3QmzZ7FT/Zo/ymkYDtysyvdCMYKl8hRArP6HM/iFZLZxP+ZJHo1qykRNB62VO7Es+gdbjiClxzRhZ0N3RCRHU/ZIzDPaYPh788d4plgsTAngcy3pHJZwIEylhczRJ2jByYCVliyqp9a6YOOV1WsRbwn7t2tGXzmjjUHdiPFsPHVs5UcnxaFKnmUyd2knNoykNopR0JnjMrwMoP6JJXm1jNYmVR9M4ZsaERCICLdxLU0EsO7GkKQTNoxm9uRumuXYtWqTJA/Xco/f05la4udNT2g70s0Z/VqdiOtgL0+lp5C/xadrlIkXp+ukZfkziQdYCMpEtNsOUgwdv/Q7Sy9eWHIXXBtju7fMrqH3WRPCkAfsb0B5P1SkJTIWYVYhWQGKta1mWydWsFqnI1HdDmla+rNMEinIcF8e+jHH9XzMzlpgSvt+J07MjLj1z7UsI0xx8m3U9mtepxXIBcWZ5TqdZlu/rNMfyA53mWZ7X6QhLW6ejLD/UaYHlRzodY3lBC5p038GQizDkAg6QMISlA0NYXoIhLBUMYbkIQ1gWYQjLJRjC8mMYwnIZhrC8rGXV1FNJ49qZWAZsQmBijh65zEXlaiq5VEK7aFRqQ54SbpVUFM+qf2WgXjzyhjmwFkiXyJpfMc6Vj0bl+NYVLW8aO1fAsepvH472OfFS1ouFPwX/1dZUJb1izcOTq/Abhp5sJ6o2qXh0TZfPVT26/l9UVFgL9BtIhVgoyrJscGcihI86nYZqoJVDzGzMPLTrdcuan8P9NzFCFlD9+DcUGgvcg05ZSVnt4KzV19uy3DuDcjgTLEkxN/P6VvgiI7PSfpFZyp6PfB5wBYxKZdhqA60VvNknMQ+Z3iTPBHFbUTZI2tjOBIkNHPOAefOdBCZh6qoN5E7hhg34BWFuwXknXKJ6oyyH7kXs8yik/Fun4kT2qGiMwLPZG2Gv70LKb3EMJDT5pX4MVBWhqRg1FdA0Um6oBl/G2bptQsYO9CMqdsOyrOLDxxb3lZJtGYR8pIjVo6Of1l6iTqrcfmYUl++dvgXBIDUxf3vfdHGQyrtayTJHbQNTtxqVU9eaQ+NVh+rmUfW94+wTOWuabronHnpf06rbwcVcLLD2bQ7SUiYX1PVhhQ2iy8WlUOplNEnvuAcYFhjQ71CKjf+r+th8nitVhdFxJN9O1LfR52AM/A/Yf0f1A9D3Y+hyDS7P95oTn2704WyZrqIX66foNzBrrblZugbc0HQD4iFHrY64yg18pwZxeqS5HOkh4GPdFeIBwCaAxeAT3bWM5lMAo/mMOT7A58xh0GQOgy3mMNhmzhrADnMY7DKHwR5zGHzBnHWAL5nDIGQOg4g5DJ4wJwB4yhwGXzGHwdfMYfANc+4DfMscBjFzGCTMYbCv6dYwzC1e0F2gtkFVoANTT1jcw+JQU2XI/o4Xhv29Qcz+wSCm/qjp9pD6Ey8M9WeDmPqLQUz9VdOdIfU3Xhjq7wYx9Q+DmPpMvxjLZQa/jHyXCgeUXWw+5++J9w/bxUC5AAEAAf//AA94nGVWXWwT2RW+5/76ZzyO7fmxnWRw7HicxMGk4/E4QOJ4ISIkhHYJETUoheyWbimBwEIWoapFu6sViygLlfq3QnlYKqiQtq20Qmp5aKWqoLZi+17tQ7erPrXP7WrVCJyeybJ9qcfjOffcucf3fPOd7wxhm5ubH7B/0EckR3aSWdJuT/amgTGaIRQInSGMEsrIWUKAElghAkeCHifAOSwSAN4hHPh8Y3J7bmRYiny1nJJKKp1WSsUaVFw8UobVHPCCTGMHuLIyUJTKsC3b4c2612LNoNmCZsqQaqDoNlN+UB/wLHYnbf7oaN/gRC/Nt4r9nR+baU2yQMWAMsbl0ydoHV5Z44V0IavReN4xHLF2xvFn/PLTJ4MB+GUWlP04/NzouTiXzTs071hzF3uM7qLSIEYXdF0IyjR5/IXFJdanG+i0NIcuLWYXGs/ulH0IBumJsu8TzJqQzXVWYAVSIdPtFwZAcCNOKXMVwsNmCBf8HBFMnEOg2DmCYJ2TgKvOITavACk4vflMStcEJxWoKGFUy55lyKLb8INGWZaKLmbs2WU/dIQzpWJFWIYSAb3e6nS+06HdpyMeWq3ABU7R0Wn5bneDUpCDfzpyBYeyh68XcMJZ5z281UFfYT1SjKw7BDb/vflT+Jj1kQSRD6IMtleFpWQF3CYEtqUAHufzeat7OZuFaxaa3dtGHq9wPYsnzuS7N0iIwea/MM5fn8eJC4xjRzFIYAMGkRU3Aa90b4eh4Fo2272MIQy4AGthrO6lfBbPvIVxOGL5H3aHLZAISSGeUyGiE6AiUUIRuJkomiyi2FkiGWeSnxXAAEL6LeNayukSiUS0yOzU5GDZKqbLO7PpmOivlv0a6GAhjf5nmJ/zqdII+WRb3hSErLKSIIs7wo3vBpxB/lnKrHv0ieEYNJvPvmMU0tTqy+4rWE8/tB0oWMAODBwZmAdmFX4VS2/EnNhGKhqzb1n6Ld2CW9mTya2F1Eh+Ydx4YOFC84FVmC/gF4bsno14fKPHNjeSBlj6xnNOfcauYc3tIAfbc7XRkQIVQuaACytNGY8DUD5DpJBILY7U4ox/wS+g58L1W7VHOmGs+UHLKqWKQ0r0VkEq09BZpVix6l4T6+/zyyRYdg38pgN2yLOmZwdNqQJ2rdwYOXL5/ks/+W4me+Xl3UvpTDKbnVpwR8ujuenfnRen577SmAzM3T5dDSr27PevnmzTQ/Qg7AuYTLy8h5o09+XlkcMnhWkcOAU7tUJ7UD7P7wNq43M2yPb2CI4lhELCzgsUDKxhQAEhRHaIlBqZLaXwkxnY2r9ZKsp+qKtSCo9GPXx+HrW/Ola8a918/+bNtZcW2IEfDA2dvtftwP173z51IeRnBP/vMTvK4uQwOUZOkJPkW2SVXCSXyen2NwedXhO16hsJyuhpUHIGhEJwcRtYT2dJuBm2QpgEJleIRDqrFaIEKIFaJ1YjEOK8GAkh72AiMA/k4oVXz++bHm9+aWy02t9HDsPhKNY1eA6EtJPuJPiVFq/4laDiyiS4RVWjStrSNBxmozQCErMGO6AoHdgGWycN6shZ25A40fBbwHCpkpYduP/30/SlETTRCOAXa3+4cPeNpN5f8MaLeTpq5nomTNNfbUScdjJnjGaL42MDptTyblGPF7S4FqERxrWslKo45GoJ6NHfuLv2+x9SISnEDB5XMUPGYrE+nogmypDiKTeTKUCapll87fFrNz6pMj12Kcgx3RndP7Z3rD4lLD2RTMp0Xk7Vx/bu2F/r66GGK2TWTlsMeEwyJh09YeYjlHl9NKaz6ic3Xnu89uxdjrhzmWRxqZlcV7rBEzEtKoUmuYIExBXTQyoRhs/2z+wo3URLJyNkrj1TBKTRjIpSiIgIiLOSU2xL5/EGTI8uE/RFFlEpRIeIiJgnZLgyUOjrtYxUTwL/Au9jqZgwqxnkWNOQVQhF2LMAh76L/FPSTJWCSajUzRI2KM969PDxrhrUxnctjdPv/bo2Vqol5EOAhxDPuhPFE2vw6bO/0OH3h4NgIQi67e4jGNq9x+1P9XU//Nv1e70vpvOFHrhCCN3sYq812TzJkEFSbQ9ts6MM+TVDAPcEYZNFraMrqIarhDGNzfrjO+tcZMO63trnFHjP9Qt7BmpvxgrdFQahBw6K60nzqhYT7wAcU0poV60k7Zey+9FvZFy7auu/hSHdeluDj2Of5tLxDVjXItH8H6Pas8+69+PpHCzRRO455r9kx1iI9yQ5RJbbX9uFze7AxG7GySwozmbmQE1TAGx8gHLNsAOSFRR4QfhKFCQRIMVyBLhSHGuHc9Uhiqv5qdZodf++1qGpQ369Ojk6ua2YH4qF6XmWbaFwAXa/8KWh2QiaWPgoXviesFVV4RsDHl7AvBb1a1Rn6FJNK+M5dEvvVBOVrUWpq44zSLfyhbnmiyPDQCt6kmsiHuGizwWWcbc1lD66MvPm8fHx42/efH05gL2jb3dOHVk/P03ba+92zpz45/zEngu3oe4JKtM1p5RbaE2MCc/VqEzE55k2gkkPl5xeHnQ/Gl9668ZbS7tosPz6/leX3qzuYmx69b2fvXdmP20c+PvXLx25vdYi/wUQ14HOAAAAeJxjYGRgYADij9PvysTz23xl4GZ+ARRhuFFscxhG///8fw7zC+YgIJeDgQkkCgCPQg6EAHicY2BkYGAO+p8FJF/8//z/M/MLBqAICuABALSWB4cAeJxjfsHAwPzi/39mBQYGxov/vwDxZ+YFQDEgZrIG0pFQLPj/H4gGAJYiDikAAAAAAJAA7gESATYBugIqAmIDUAO2BAoEsgAAAAEAAAAMAHkACAAAAAAAAgAUACQAcwAAAHsLcAAAAAB4nHWQy07CQBSG/5GLCokaTdw6KwMxlkviAhISEgxsdEMMW1NKaUtKh0wHEl7Dd/BhfAmfxZ92MAZim+l855szZ04HwDW+IZA/Txw5C5wxyvkEp+hZLtA/Wy6SXyyXUMWb5TL9u+UKHhBYruIGH6wgiueMFvi0LHAlLi2f4ELcWS7QP1ouknuWS7gVr5bL9J7lCiYitVzFvfgaqNVWR0FoZG1Ql+1mqyOnW6moosSNpbs2odKp7Mu5Sowfx8rx1HLPYz9Yx67eh/t54us0UolsOc29GvmJr13jz3bV003QNmYu51ot5dBmyJVWC98zTmjMqtto/D0PAyissIVGxKsKYSBRo61zbqOJFjqkKTMkM/OsCAlcxDQu1twRZisp4z7HnFFC6zMjJjvw+F0e+TEp4P6YVfTR6mE8Ie3OiDIv2ZfD7g6zRqQky3QzO/vtPcWGp7VpDXftutRZVxLDgxqS97FbW9B49E52K4a2iwbff/7vB+x4hFUAeJxtxzsSgyAQAFDWYCRGvQmH4rPCjgQYXIccP0WKNHndE4P4msV/CwxwAwkj3GECBQ+Y4QkLrEK+DKXxjKbhmnBnXSpmbSlsjUL8VfnScyrGT9yJGZvajUNbyrEF4nhZ7ai5hF4lygd6yvJNOageDZ+mViE+J9MmbgAAAHicY/DewXAiKGIjI2Nf5AbGnRwMHAzJBRsZWJ02MTAyaIEYm7mYGDkgLD4GMIvNaRfTAaA0J5DN7rSLwQHCZmZw2ajC2BEYscGhI2Ijc4rLRjUQbxdHAwMji0NHckgESEkkEGzmYWLk0drB+L91A0vvRiYGFwAMdiP0AAA=') format('woff'), + url('data:application/octet-stream;base64,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') format('truetype'); } /* Chrome hack: SVG is rendered more smooth in Windozze. 100% magic, uncomment if you need it. */ /* Note, that will break hinting! In other OS-es font will be not as sharp as it could be */ @@ -17,7 +17,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'fontello'; - src: url('../font/fontello.svg?39099312#fontello') format('svg'); + src: url('../font/fontello.svg?14513121#fontello') format('svg'); } } */ @@ -53,11 +53,13 @@ /* text-shadow: 1px 1px 1px rgba(127, 127, 127, 0.3); */ } .icon-mail:before { content: '\e800'; } /* '' */ -.icon-left-open-big:before { content: '\e801'; } /* '' */ -.icon-right-open-big:before { content: '\e802'; } /* '' */ -.icon-share-1:before { content: '\e803'; } /* '' */ +.icon-share:before { content: '\e801'; } /* '' */ +.icon-left-open-big:before { content: '\e802'; } /* '' */ +.icon-right-open-big:before { content: '\e803'; } /* '' */ +.icon-download:before { content: '\e804'; } /* '' */ .icon-twitter:before { content: '\f099'; } /* '' */ .icon-facebook:before { content: '\f09a'; } /* '' */ +.icon-github-circled:before { content: '\f09b'; } /* '' */ .icon-linkedin:before { content: '\f0e1'; } /* '' */ .icon-xing:before { content: '\f168'; } /* '' */ .icon-whatsapp:before { content: '\f232'; } /* '' */ \ No newline at end of file diff --git a/themes/typemill/css/fontello/css/fontello-ie7-codes.css b/themes/typemill/css/fontello/css/fontello-ie7-codes.css index f92a81e..5f1fa08 100644 --- a/themes/typemill/css/fontello/css/fontello-ie7-codes.css +++ b/themes/typemill/css/fontello/css/fontello-ie7-codes.css @@ -1,10 +1,12 @@ .icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-left-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-right-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-share-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-left-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-right-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-facebook { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-github-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-linkedin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-xing { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-whatsapp { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } \ No newline at end of file diff --git a/themes/typemill/css/fontello/css/fontello-ie7.css b/themes/typemill/css/fontello/css/fontello-ie7.css index 340f9b7..4b02752 100644 --- a/themes/typemill/css/fontello/css/fontello-ie7.css +++ b/themes/typemill/css/fontello/css/fontello-ie7.css @@ -11,11 +11,13 @@ } .icon-mail { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-left-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-right-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } -.icon-share-1 { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-share { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-left-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-right-open-big { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-download { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-twitter { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-facebook { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } +.icon-github-circled { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-linkedin { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-xing { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } .icon-whatsapp { *zoom: expression( this.runtimeStyle['zoom'] = '1', this.innerHTML = ' '); } \ No newline at end of file diff --git a/themes/typemill/css/fontello/css/fontello.css b/themes/typemill/css/fontello/css/fontello.css index eff9080..08ef35f 100644 --- a/themes/typemill/css/fontello/css/fontello.css +++ b/themes/typemill/css/fontello/css/fontello.css @@ -1,11 +1,11 @@ @font-face { font-family: 'fontello'; - src: url('../font/fontello.eot?45966989'); - src: url('../font/fontello.eot?45966989#iefix') format('embedded-opentype'), - url('../font/fontello.woff2?45966989') format('woff2'), - url('../font/fontello.woff?45966989') format('woff'), - url('../font/fontello.ttf?45966989') format('truetype'), - url('../font/fontello.svg?45966989#fontello') format('svg'); + src: url('../font/fontello.eot?8743082'); + src: url('../font/fontello.eot?8743082#iefix') format('embedded-opentype'), + url('../font/fontello.woff2?8743082') format('woff2'), + url('../font/fontello.woff?8743082') format('woff'), + url('../font/fontello.ttf?8743082') format('truetype'), + url('../font/fontello.svg?8743082#fontello') format('svg'); font-weight: normal; font-style: normal; } @@ -15,7 +15,7 @@ @media screen and (-webkit-min-device-pixel-ratio:0) { @font-face { font-family: 'fontello'; - src: url('../font/fontello.svg?45966989#fontello') format('svg'); + src: url('../font/fontello.svg?8743082#fontello') format('svg'); } } */ @@ -56,11 +56,13 @@ } .icon-mail:before { content: '\e800'; } /* '' */ -.icon-left-open-big:before { content: '\e801'; } /* '' */ -.icon-right-open-big:before { content: '\e802'; } /* '' */ -.icon-share-1:before { content: '\e803'; } /* '' */ +.icon-share:before { content: '\e801'; } /* '' */ +.icon-left-open-big:before { content: '\e802'; } /* '' */ +.icon-right-open-big:before { content: '\e803'; } /* '' */ +.icon-download:before { content: '\e804'; } /* '' */ .icon-twitter:before { content: '\f099'; } /* '' */ .icon-facebook:before { content: '\f09a'; } /* '' */ +.icon-github-circled:before { content: '\f09b'; } /* '' */ .icon-linkedin:before { content: '\f0e1'; } /* '' */ .icon-xing:before { content: '\f168'; } /* '' */ .icon-whatsapp:before { content: '\f232'; } /* '' */ \ No newline at end of file diff --git a/themes/typemill/css/fontello/demo.html b/themes/typemill/css/fontello/demo.html index 8e10709..dc959a8 100644 --- a/themes/typemill/css/fontello/demo.html +++ b/themes/typemill/css/fontello/demo.html @@ -229,11 +229,11 @@ body { } @font-face { font-family: 'fontello'; - src: url('./font/fontello.eot?98470540'); - src: url('./font/fontello.eot?98470540#iefix') format('embedded-opentype'), - url('./font/fontello.woff?98470540') format('woff'), - url('./font/fontello.ttf?98470540') format('truetype'), - url('./font/fontello.svg?98470540#fontello') format('svg'); + src: url('./font/fontello.eot?27459207'); + src: url('./font/fontello.eot?27459207#iefix') format('embedded-opentype'), + url('./font/fontello.woff?27459207') format('woff'), + url('./font/fontello.ttf?27459207') format('truetype'), + url('./font/fontello.svg?27459207#fontello') format('svg'); font-weight: normal; font-style: normal; } @@ -299,17 +299,19 @@ body {
icon-mail0xe800
-
icon-left-open-big0xe801
-
icon-right-open-big0xe802
-
icon-share-10xe803
+
icon-share0xe801
+
icon-left-open-big0xe802
+
icon-right-open-big0xe803
+
icon-download0xe804
icon-twitter0xf099
icon-facebook0xf09a
-
icon-linkedin0xf0e1
-
icon-xing0xf168
+
icon-github-circled0xf09b
+
icon-linkedin0xf0e1
+
icon-xing0xf168
icon-whatsapp0xf232
diff --git a/themes/typemill/css/fontello/font/fontello.eot b/themes/typemill/css/fontello/font/fontello.eot index 18edf84..b2f5118 100644 Binary files a/themes/typemill/css/fontello/font/fontello.eot and b/themes/typemill/css/fontello/font/fontello.eot differ diff --git a/themes/typemill/css/fontello/font/fontello.svg b/themes/typemill/css/fontello/font/fontello.svg index 80087a8..6dfdc59 100644 --- a/themes/typemill/css/fontello/font/fontello.svg +++ b/themes/typemill/css/fontello/font/fontello.svg @@ -1,23 +1,27 @@ -Copyright (C) 2018 by original authors @ fontello.com +Copyright (C) 2019 by original authors @ fontello.com - + - + - + + + + + diff --git a/themes/typemill/css/fontello/font/fontello.ttf b/themes/typemill/css/fontello/font/fontello.ttf index 10c3383..40fee40 100644 Binary files a/themes/typemill/css/fontello/font/fontello.ttf and b/themes/typemill/css/fontello/font/fontello.ttf differ diff --git a/themes/typemill/css/fontello/font/fontello.woff b/themes/typemill/css/fontello/font/fontello.woff index 717781a..b60eb37 100644 Binary files a/themes/typemill/css/fontello/font/fontello.woff and b/themes/typemill/css/fontello/font/fontello.woff differ diff --git a/themes/typemill/css/fontello/font/fontello.woff2 b/themes/typemill/css/fontello/font/fontello.woff2 index c324099..215e92e 100644 Binary files a/themes/typemill/css/fontello/font/fontello.woff2 and b/themes/typemill/css/fontello/font/fontello.woff2 differ diff --git a/themes/typemill/css/style.css b/themes/typemill/css/style.css index 7cc1e5a..bef4a7f 100644 --- a/themes/typemill/css/style.css +++ b/themes/typemill/css/style.css @@ -377,6 +377,9 @@ article button.play-video::after { border-color: transparent transparent transparent rgba(255, 255, 255, 0.75); content: ' '; } +article .gitlink{ + float: right; +} /************************ * PAGING / BREADCRUMB * diff --git a/themes/typemill/page.twig b/themes/typemill/page.twig index 9ee14c8..503f9d4 100644 --- a/themes/typemill/page.twig +++ b/themes/typemill/page.twig @@ -6,7 +6,7 @@

{{ title }}

-{% if (settings.themes.typemill.socialPosition.top or settings.themes.typemill.modifiedPosition.top or settings.themes.typemill.authorPosition.top) %} +{% if (settings.themes.typemill.socialPosition.top or settings.themes.typemill.modifiedPosition.top or settings.themes.typemill.authorPosition.top or settings.themes.typemill.gitPosition.top) %}
{% if settings.themes.typemill.authorPosition.top %} {{ settings.themes.typemill.authorIntro }}: {{ settings.author }} @@ -22,13 +22,16 @@
{% endif %} + {% if settings.themes.typemill.gitPosition.top %} + + {% endif %} {% endif %} {{ content }} -{% if (settings.themes.typemill.socialPosition.bottom or settings.themes.typemill.modifiedPosition.bottom or settings.themes.typemill.authorPosition.bottom) %} +{% if (settings.themes.typemill.socialPosition.bottom or settings.themes.typemill.modifiedPosition.bottom or settings.themes.typemill.authorPosition.bottom or settings.themes.typemill.gitPosition.bottom) %}
{% if settings.themes.typemill.authorPosition.bottom %} {{ settings.themes.typemill.authorIntro }}: {{ settings.author }} @@ -44,11 +47,13 @@
{% endif %} + {% if settings.themes.typemill.gitPosition.bottom %} + + {% endif %} {% endif %} - {% if item.prevItem or item.nextItem %}
diff --git a/themes/typemill/partials/navigation.twig b/themes/typemill/partials/navigation.twig index a9ca447..afdec52 100644 --- a/themes/typemill/partials/navigation.twig +++ b/themes/typemill/partials/navigation.twig @@ -1,4 +1,4 @@ -{% macro loop_over(navigation) %} +{% macro loop_over(navigation,chapnum) %} {% import _self as macros %} @@ -14,12 +14,12 @@
  • {% endif %} {% if (element.elementType == 'folder') %} - {{ element.name }} + {% if chapnum %}{{ element.chapter }}. {% endif %}{{ element.name }} {% else %} - {{ element.name }} + {% if chapnum %}{{ element.chapter }} {% endif %}{{ element.name }} {% endif %}
  • {% endfor %} @@ -28,5 +28,5 @@ {% import _self as macros %} \ No newline at end of file diff --git a/themes/typemill/typemill.yaml b/themes/typemill/typemill.yaml index dc1fc8a..ffe0eaf 100644 --- a/themes/typemill/typemill.yaml +++ b/themes/typemill/typemill.yaml @@ -1,5 +1,5 @@ name: Typemill Theme -version: 1.1.3 +version: 1.1.4 description: The standard theme for Typemill. Responsive, minimal and without any dependencies. It uses the system fonts Calibri and Helvetica. No JavaScript is used. author: Sebastian Schürmanns homepage: https://typemill.net @@ -30,6 +30,11 @@ forms: placeholder: Add Label for Start-Button required: true + chapnum: + type: checkbox + label: Chapter Numbers + checkboxlabel: Count chapters in navigation? + fieldset0: type: fieldset legend: Author @@ -90,4 +95,21 @@ forms: xing: Xing linkedin: Linkedin whatsapp: WhatsApp - mail: Mail \ No newline at end of file + mail: Mail + + fieldset3: + type: fieldset + legend: GitHub + fields: + gitPosition: + type: checkboxlist + label: Position of Git Edit Link + options: + top: Top + bottom: Bottom + + gitlink: + type: text + label: Link to git repository + placeholder: https://github.com/typemill/documentation + help: Please add the base url to the text repository e.g. on github. \ No newline at end of file