Merge branch 'master' into DepauMD
This commit is contained in:
commit
18fd14949e
15 changed files with 81 additions and 12 deletions
|
@ -194,6 +194,7 @@ There are some config settings you need to change in the files below.
|
|||
| `CMD_GITLAB_BASEURL` | no example | GitLab authentication endpoint, set to use other endpoint than GitLab.com (optional) |
|
||||
| `CMD_GITLAB_CLIENTID` | no example | GitLab API client id |
|
||||
| `CMD_GITLAB_CLIENTSECRET` | no example | GitLab API client secret |
|
||||
| `CMD_GITLAB_VERSION` | no example | GitLab API version (v3 or v4) |
|
||||
| `CMD_MATTERMOST_BASEURL` | no example | Mattermost authentication endpoint |
|
||||
| `CMD_MATTERMOST_CLIENTID` | no example | Mattermost API client id |
|
||||
| `CMD_MATTERMOST_CLIENTSECRET` | no example | Mattermost API client secret |
|
||||
|
|
|
@ -55,7 +55,8 @@
|
|||
"baseURL": "change this",
|
||||
"clientID": "change this",
|
||||
"clientSecret": "change this",
|
||||
"scope": "use 'read_user' scope for auth user only or remove this property if you need gitlab snippet import/export support (will result to be default scope 'api')"
|
||||
"scope": "use 'read_user' scope for auth user only or remove this property if you need gitlab snippet import/export support (will result to be default scope 'api')",
|
||||
"version": "use 'v4' if gitlab version > 11, 'v3' otherwise. Default to 'v4'"
|
||||
},
|
||||
"mattermost": {
|
||||
"baseURL": "change this",
|
||||
|
|
|
@ -103,6 +103,12 @@ config.isSAMLEnable = config.saml.idpSsoUrl
|
|||
config.isOAuth2Enable = config.oauth2.clientID && config.oauth2.clientSecret
|
||||
config.isPDFExportEnable = config.allowPDFExport
|
||||
|
||||
// Check gitlab api version
|
||||
if (config.gitlab.version !== 'v4' || config.gitlab.version !== 'v3') {
|
||||
logger.warn('config.js contains wrong version (' + config.gitlab.version + ') for gitlab api; it should be \'v3\' or \'v4\'. Defaulting to v3')
|
||||
config.gitlab.version = 'v4'
|
||||
}
|
||||
|
||||
// Only update i18n files in development setups
|
||||
config.updateI18nFiles = (env === Environment.development)
|
||||
|
||||
|
|
|
@ -20,6 +20,12 @@ module.exports = {
|
|||
type: Sequelize.INTEGER,
|
||||
defaultValue: 0
|
||||
})
|
||||
}).catch(function (error) {
|
||||
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'shortid'") {
|
||||
console.log('Migration has already run… ignoring.')
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
|
|
@ -7,6 +7,12 @@ module.exports = {
|
|||
return queryInterface.addColumn('Notes', 'lastchangeAt', {
|
||||
type: Sequelize.DATE
|
||||
})
|
||||
}).catch(function (error) {
|
||||
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'lastchangeuserId'") {
|
||||
console.log('Migration has already run… ignoring.')
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
|
|
@ -7,6 +7,12 @@ module.exports = {
|
|||
return queryInterface.addIndex('Notes', ['alias'], {
|
||||
indicesType: 'UNIQUE'
|
||||
})
|
||||
}).catch(function (error) {
|
||||
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'alias'") {
|
||||
console.log('Migration has already run… ignoring.')
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
|
|
@ -3,6 +3,12 @@ module.exports = {
|
|||
up: function (queryInterface, Sequelize) {
|
||||
return queryInterface.addColumn('Users', 'accessToken', Sequelize.STRING).then(function () {
|
||||
return queryInterface.addColumn('Users', 'refreshToken', Sequelize.STRING)
|
||||
}).catch(function (error) {
|
||||
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'accessToken'") {
|
||||
console.log('Migration has already run… ignoring.')
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
|
|
@ -15,6 +15,12 @@ module.exports = {
|
|||
createdAt: Sequelize.DATE,
|
||||
updatedAt: Sequelize.DATE
|
||||
})
|
||||
}).catch(function (error) {
|
||||
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'savedAt'") {
|
||||
console.log('Migration has already run… ignoring.')
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
|
|
@ -16,6 +16,12 @@ module.exports = {
|
|||
createdAt: Sequelize.DATE,
|
||||
updatedAt: Sequelize.DATE
|
||||
})
|
||||
}).catch(function (error) {
|
||||
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'authorship'") {
|
||||
console.log('Migration has already run… ignoring.')
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
|
|
@ -1,7 +1,13 @@
|
|||
'use strict'
|
||||
module.exports = {
|
||||
up: function (queryInterface, Sequelize) {
|
||||
return queryInterface.addColumn('Notes', 'deletedAt', Sequelize.DATE)
|
||||
return queryInterface.addColumn('Notes', 'deletedAt', Sequelize.DATE).catch(function (error) {
|
||||
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'deletedAt'") {
|
||||
console.log('Migration has already run… ignoring.')
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
down: function (queryInterface, Sequelize) {
|
||||
|
|
|
@ -2,7 +2,19 @@
|
|||
module.exports = {
|
||||
up: function (queryInterface, Sequelize) {
|
||||
return queryInterface.addColumn('Users', 'email', Sequelize.TEXT).then(function () {
|
||||
return queryInterface.addColumn('Users', 'password', Sequelize.TEXT)
|
||||
return queryInterface.addColumn('Users', 'password', Sequelize.TEXT).catch(function (error) {
|
||||
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'password'") {
|
||||
console.log('Migration has already run… ignoring.')
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
}).catch(function (error) {
|
||||
if (error.message === "ER_DUP_FIELDNAME: Duplicate column name 'email'") {
|
||||
console.log('Migration has already run… ignoring.')
|
||||
} else {
|
||||
throw error
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
|
|
|
@ -573,11 +573,11 @@ function gitlabActionProjects (req, res, note) {
|
|||
}
|
||||
}).then(function (user) {
|
||||
if (!user) { return response.errorNotFound(res) }
|
||||
var ret = { baseURL: config.gitlab.baseURL }
|
||||
var ret = { baseURL: config.gitlab.baseURL, version: config.gitlab.version }
|
||||
ret.accesstoken = user.accessToken
|
||||
ret.profileid = user.profileid
|
||||
request(
|
||||
config.gitlab.baseURL + '/api/v3/projects?access_token=' + user.accessToken,
|
||||
config.gitlab.baseURL + '/api/' + config.gitlab.version + '/projects?access_token=' + user.accessToken,
|
||||
function (error, httpResponse, body) {
|
||||
if (!error && httpResponse.statusCode === 200) {
|
||||
ret.projects = JSON.parse(body)
|
||||
|
|
|
@ -970,6 +970,7 @@ ui.toolbar.export.snippet.click(function () {
|
|||
.done(function (data) {
|
||||
$('#snippetExportModalAccessToken').val(data.accesstoken)
|
||||
$('#snippetExportModalBaseURL').val(data.baseURL)
|
||||
$('#snippetExportModalVersion').val(data.version)
|
||||
$('#snippetExportModalLoading').hide()
|
||||
$('#snippetExportModal').modal('toggle')
|
||||
$('#snippetExportModalProjects').find('option').remove().end().append('<option value="init" selected="selected" disabled="disabled">Select From Available Projects</option>')
|
||||
|
@ -1021,6 +1022,7 @@ ui.toolbar.import.snippet.click(function () {
|
|||
.done(function (data) {
|
||||
$('#snippetImportModalAccessToken').val(data.accesstoken)
|
||||
$('#snippetImportModalBaseURL').val(data.baseURL)
|
||||
$('#snippetImportModalVersion').val(data.version)
|
||||
$('#snippetImportModalContent').prop('disabled', false)
|
||||
$('#snippetImportModalConfirm').prop('disabled', false)
|
||||
$('#snippetImportModalLoading').hide()
|
||||
|
@ -1243,10 +1245,10 @@ ui.modal.snippetImportProjects.change(function () {
|
|||
var accesstoken = $('#snippetImportModalAccessToken').val()
|
||||
var baseURL = $('#snippetImportModalBaseURL').val()
|
||||
var project = $('#snippetImportModalProjects').val()
|
||||
|
||||
var version = $('#snippetImportModalVersion').val()
|
||||
$('#snippetImportModalLoading').show()
|
||||
$('#snippetImportModalContent').val('/projects/' + project)
|
||||
$.get(baseURL + '/api/v3/projects/' + project + '/snippets?access_token=' + accesstoken)
|
||||
$.get(baseURL + '/api/' + version + '/projects/' + project + '/snippets?access_token=' + accesstoken)
|
||||
.done(function (data) {
|
||||
$('#snippetImportModalSnippets').find('option').remove().end().append('<option value="init" selected="selected" disabled="disabled">Select From Available Snippets</option>')
|
||||
data.forEach(function (snippet) {
|
||||
|
@ -1433,7 +1435,7 @@ $('#snippetImportModalConfirm').click(function () {
|
|||
} else {
|
||||
ui.spinner.show()
|
||||
var accessToken = '?access_token=' + $('#snippetImportModalAccessToken').val()
|
||||
var fullURL = $('#snippetImportModalBaseURL').val() + '/api/v3' + snippeturl
|
||||
var fullURL = $('#snippetImportModalBaseURL').val() + '/api/' + $('#snippetImportModalVersion').val() + snippeturl
|
||||
$.get(fullURL + accessToken)
|
||||
.done(function (data) {
|
||||
var content = '# ' + (data.title || 'Snippet Import')
|
||||
|
@ -1470,15 +1472,19 @@ $('#snippetImportModalConfirm').click(function () {
|
|||
$('#snippetExportModalConfirm').click(function () {
|
||||
var accesstoken = $('#snippetExportModalAccessToken').val()
|
||||
var baseURL = $('#snippetExportModalBaseURL').val()
|
||||
var version = $('#snippetExportModalVersion').val()
|
||||
|
||||
var data = {
|
||||
title: $('#snippetExportModalTitle').val(),
|
||||
file_name: $('#snippetExportModalFileName').val(),
|
||||
code: editor.getValue(),
|
||||
visibility_level: $('#snippetExportModalVisibility').val()
|
||||
visibility_level: $('#snippetExportModalVisibility').val(),
|
||||
visibility: $('#snippetExportModalVisibility').val() === 0 ? 'private' : ($('#snippetExportModalVisibility').val() === 10 ? 'internal' : '')
|
||||
}
|
||||
|
||||
if (!data.title || !data.file_name || !data.code || !data.visibility_level || !$('#snippetExportModalProjects').val()) return
|
||||
$('#snippetExportModalLoading').show()
|
||||
var fullURL = baseURL + '/api/v3/projects/' + $('#snippetExportModalProjects').val() + '/snippets?access_token=' + accesstoken
|
||||
var fullURL = baseURL + '/api/' + version + '/projects/' + $('#snippetExportModalProjects').val() + '/snippets?access_token=' + accesstoken
|
||||
$.post(fullURL
|
||||
, data
|
||||
, function (ret) {
|
||||
|
@ -1487,7 +1493,6 @@ $('#snippetExportModalConfirm').click(function () {
|
|||
var redirect = baseURL + '/' + $("#snippetExportModalProjects option[value='" + $('#snippetExportModalProjects').val() + "']").text() + '/snippets/' + ret.id
|
||||
showMessageModal('<i class="fa fa-gitlab"></i> Export to Snippet', 'Export Successful!', redirect, 'View Snippet Here', true)
|
||||
}
|
||||
, 'json'
|
||||
)
|
||||
})
|
||||
|
||||
|
|
|
@ -153,6 +153,7 @@
|
|||
<div class="modal-body">
|
||||
<input type="hidden" id="snippetImportModalAccessToken" />
|
||||
<input type="hidden" id="snippetImportModalBaseURL" />
|
||||
<input type="hidden" id="snippetImportModalVersion" />
|
||||
<div class="ui-field-contain" style="display:table;margin-bottom:10px;width:100%;">
|
||||
<div style="display:table-row;margin-bottom:5px;">
|
||||
<label style="display:table-cell;">Project:</label>
|
||||
|
@ -191,6 +192,7 @@
|
|||
<div class="modal-body">
|
||||
<input type="hidden" id="snippetExportModalAccessToken" />
|
||||
<input type="hidden" id="snippetExportModalBaseURL" />
|
||||
<input type="hidden" id="snippetExportModalVersion" />
|
||||
<div class="ui-field-contain" style="display:table;margin-bottom:10px;width:100%;">
|
||||
<div style="display:table-row;margin-bottom:5px;">
|
||||
<label style="display:table-cell;">Title:</label>
|
||||
|
|
|
@ -152,7 +152,7 @@
|
|||
© 2018 <a href="https://hackmd.io">CodiMD</a> | <a href="<%- url %>/s/release-notes" target="_blank"><%= __('Releases') %></a><% if(privacyStatement) { %> | <a href="<%- url %>/s/privacy" target="_blank"><%= __('Privacy') %></a><% } %><% if(termsOfUse) { %> | <a href="<%- url %>/s/terms-of-use" target="_blank"><%= __('Terms of Use') %></a><% } %>
|
||||
</p>
|
||||
<h6 class="social-foot">
|
||||
<%- __('Follow us on %s and %s.', '<a href="https://github.com/hackmdio/CodiMD" target="_blank"><i class="fa fa-github"></i> GitHub</a>, <a href="https://twitter.com/hackmdio" target="_blank"><i class="fa fa-twitter"></i> Twitter</a>', '<a href="https://www.facebook.com/hackmdio" target="_blank"><i class="fa fa-facebook-square"></i> Facebook</a>') %>
|
||||
<%- __('Follow us on %s and %s.', '<a href="https://github.com/hackmdio/CodiMD" target="_blank"><i class="fa fa-github"></i> GitHub</a>, <a href="https://riot.im/app/#/room/#codimd:matrix.org" target="_blank"><i class="fa fa-comments"></i> Riot</a>') %>
|
||||
</h6>
|
||||
</div>
|
||||
</div>
|
||||
|
|
Loading…
Reference in a new issue