Commit 34b58a50 authored by Alexander Yuzhin's avatar Alexander Yuzhin

[SE mobile] Edit hyperlink

parent a02226f0
......@@ -26,7 +26,7 @@
input.field {
color: @themeColor;
&::-webkit-input-placeholder {
&.placeholder-color::-webkit-input-placeholder {
color: @themeColor;
}
......
This source diff could not be displayed because it is too large. You can view the blob instead.
This source diff could not be displayed because it is too large. You can view the blob instead.
......@@ -129,7 +129,7 @@ require([
,'EditImage'
,'EditShape'
,'EditChart'
// ,'EditHyperlink'
,'EditHyperlink'
,'AddContainer'
,'AddChart'
,'AddFunction'
......@@ -200,7 +200,7 @@ require([
,'spreadsheeteditor/mobile/app/controller/edit/EditImage'
,'spreadsheeteditor/mobile/app/controller/edit/EditShape'
,'spreadsheeteditor/mobile/app/controller/edit/EditChart'
// ,'spreadsheeteditor/mobile/app/controller/edit/EditHyperlink'
,'spreadsheeteditor/mobile/app/controller/edit/EditHyperlink'
,'spreadsheeteditor/mobile/app/controller/add/AddContainer'
,'spreadsheeteditor/mobile/app/controller/add/AddChart'
,'spreadsheeteditor/mobile/app/controller/add/AddFunction'
......
......@@ -571,6 +571,10 @@ define([
_settings.push('image');
} else {
_settings.push('cell');
if (cellInfo.asc_getHyperlink()) {
_settings.push('hyperlink');
}
}
},
......
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
/**
* EditHyperlink.js
* Spreadsheet Editor
*
* Created by Alexander Yuzhin on 12/20/16
* Copyright (c) 2016 Ascensio System SIA. All rights reserved.
*
*/
define([
'core',
'spreadsheeteditor/mobile/app/view/edit/EditHyperlink',
'jquery',
'underscore',
'backbone'
], function (core, view, $, _, Backbone) {
'use strict';
SSE.Controllers.EditHyperlink = Backbone.Controller.extend(_.extend((function() {
return {
models: [],
collections: [],
views: [
'EditHyperlink'
],
initialize: function () {
Common.NotificationCenter.on('editcontainer:show', _.bind(this.initEvents, this));
},
setApi: function (api) {
var me = this;
me.api = api;
},
onLaunch: function () {
this.createView('EditHyperlink').render();
},
initEvents: function () {
if ($('#edit-link').length < 1) {
return;
}
uiApp.addView('#edit-link');
var me = this;
me.initSettings();
},
initSettings: function () {
var me = this,
cellInfo = me.api.asc_getCellInfo(),
linkInfo = cellInfo.asc_getHyperlink(),
sheetCount = me.api.asc_getWorksheetsCount(),
isLock = cellInfo.asc_getFlags().asc_getLockText(),
i = -1,
sheets = [];
while (++i < sheetCount) {
if (!me.api.asc_isWorksheetHidden(i)) {
sheets.push(Common.Utils.String.format('<option value="{0}">{1}</option>', me.api.asc_getWorksheetName(i), me.api.asc_getWorksheetName(i)));
}
}
$('#edit-link-sheet select').html(sheets.join(''));
$('#edit-link-type select').val(linkInfo.asc_getType());
$('#edit-link-type .item-after').text((linkInfo.asc_getType() == Asc.c_oAscHyperlinkType.RangeLink) ? 'Internal Data Range' : 'External Link');
$('#edit-link-sheet, #edit-link-range').css('display', (linkInfo.asc_getType() == Asc.c_oAscHyperlinkType.RangeLink) ? 'block' : 'none');
$('#edit-link-link').css('display', (linkInfo.asc_getType() != Asc.c_oAscHyperlinkType.RangeLink) ? 'block' : 'none');
var currentSheet = me.api.asc_getWorksheetName(me.api.asc_getActiveWorksheetIndex());
$('#edit-link-sheet select').val((linkInfo.asc_getType() == Asc.c_oAscHyperlinkType.RangeLink) ? linkInfo.asc_getSheet(): currentSheet);
$('#edit-link-sheet .item-after').text((linkInfo.asc_getType() == Asc.c_oAscHyperlinkType.RangeLink) ? linkInfo.asc_getSheet(): currentSheet);
$('#edit-link-range input').val(linkInfo.asc_getRange());
$('#edit-link-link input').val(linkInfo.asc_getHyperlinkUrl() ? linkInfo.asc_getHyperlinkUrl().replace(new RegExp(" ",'g'), "%20") : '');
$('#edit-link-display input').val(isLock ? me.textDefault : linkInfo.asc_getText());
$('#edit-link-display input').toggleClass('disabled', isLock);
$('#edit-link-tip input').val(linkInfo.asc_getTooltip());
var focusInput = ((linkInfo.asc_getType() == Asc.c_oAscHyperlinkType.RangeLink) ? $('#edit-link-range input') : $('#edit-link-link input'));
$('#edit-link-edit').toggleClass('disabled', _.isEmpty(focusInput.val()));
$('#edit-link-link input, #edit-link-range input').single('input', _.bind(function(e) {
$('#edit-link-edit').toggleClass('disabled', _.isEmpty($(e.currentTarget).val()));
}, me));
$('#edit-link-edit').single('click', _.bind(me.onEdit, me));
$('#edit-link-remove').single('click', _.bind(me.onRemove, me));
$('#edit-link-type select').single('change', _.bind(me.onTypeChange, me));
},
// Handlers
onTypeChange: function (e) {
var val = parseInt($(e.currentTarget).val());
$('#edit-link-sheet, #edit-link-range').css('display', (val == Asc.c_oAscHyperlinkType.RangeLink) ? 'block' : 'none');
$('#edit-link-link').css('display', (val != Asc.c_oAscHyperlinkType.RangeLink) ? 'block' : 'none');
var requireInput = (val == Asc.c_oAscHyperlinkType.RangeLink) ? $('#edit-link-range input') : $('#edit-link-link input');
$('#edit-link-edit').toggleClass('disabled', _.isEmpty(requireInput.val()));
},
onEdit: function () {
var me = this,
linkProps = new Asc.asc_CHyperlink(),
defaultDisplay = "",
$type = $('#edit-link-type select'),
$sheet = $('#edit-link-sheet select'),
$range = $('#edit-link-range input'),
$link = $('#edit-link-link input'),
$display = $('#edit-link-display input'),
$tip = $('#edit-link-tip input'),
type = parseInt($type.val());
linkProps.asc_setType(type);
if (type == Asc.c_oAscHyperlinkType.RangeLink) {
var range = $.trim($range.val()),
isValidRange = /^[A-Z]+[1-9]\d*:[A-Z]+[1-9]\d*$/.test(range);
if (!isValidRange)
isValidRange = /^[A-Z]+[1-9]\d*$/.test(range);
if (!isValidRange) {
uiApp.alert(me.textInvalidRange);
return;
}
linkProps.asc_setSheet($sheet.val());
linkProps.asc_setRange(range);
defaultDisplay = $sheet.val() + '!' + range;
} else {
var url = $link.val().replace(/^\s+|\s+$/g,'');
if (! /(((^https?)|(^ftp)):\/\/)|(^mailto:)/i.test(url)) {
var urlType = me.api.asc_getUrlType($.trim(url));
if (urlType < 1) {
uiApp.alert(me.txtNotUrl);
return;
}
url = ( (urlType==2) ? 'mailto:' : 'http://' ) + url;
}
url = url.replace(new RegExp("%20",'g')," ");
linkProps.asc_setHyperlinkUrl(url);
defaultDisplay = url;
}
if ($display.hasClass('disabled')) {
linkProps.asc_setText(null);
} else {
if (_.isEmpty($display.val())) {
$display.val(defaultDisplay);
}
linkProps.asc_setText($display.val());
}
linkProps.asc_setTooltip($tip.val());
me.api.asc_insertHyperlink(linkProps);
SSE.getController('EditContainer').hideModal();
},
onRemove: function () {
this.api && this.api.asc_removeHyperlink();
SSE.getController('EditContainer').hideModal();
},
textDefault: 'Selected range',
textInvalidRange: 'Invalid cells range',
textEmptyImgUrl: 'You need to specify image URL.',
txtNotUrl: 'This field should be a URL in the format \"http://www.example.com\"'
}
})(), SSE.Controllers.EditHyperlink || {}))
});
\ No newline at end of file
......@@ -385,7 +385,7 @@
<div class="item-title">Minimum Value</div>
<div class="item-after">
<div class="item-input">
<input class="field right" type="number" placeholder="Auto">
<input class="field right placeholder-color" type="number" placeholder="Auto">
</div>
</div>
</div>
......@@ -397,7 +397,7 @@
<div class="item-title">Maximum Value</div>
<div class="item-after">
<div class="item-input">
<input class="field right" type="number" placeholder="Auto">
<input class="field right placeholder-color" type="number" placeholder="Auto">
</div>
</div>
</div>
......@@ -424,7 +424,7 @@
<div class="item-title">Crosses Value</div>
<div class="item-after">
<div class="item-input">
<input class="field right" type="number" placeholder="0">
<input class="field right placeholder-color" type="number" placeholder="0">
</div>
</div>
</div>
......@@ -540,7 +540,7 @@
<div class="item-title">Crosses Value</div>
<div class="item-after">
<div class="item-input">
<input class="field right" type="number" placeholder="0">
<input class="field right placeholder-color" type="number" placeholder="0">
</div>
</div>
</div>
......
......@@ -3,31 +3,74 @@
<div class="list-block">
<ul>
<li>
<div id="edit-link-url" class="item-content">
<a id="edit-link-type" class="item-link smart-select" data-back-on-select="true">
<select name="edit-link-type">
<option value="1" selected>External Link</option>
<option value="2">Internal Data Range</option>
</select>
<div class="item-content">
<div class="item-inner">
<div class="item-title">Link Type</div>
<div class="item-after">External Link</div>
</div>
</div>
</a>
</li>
<li>
<a id="edit-link-sheet" class="item-link smart-select" data-back-on-select="true">
<select name="edit-link-sheet"></select>
<div class="item-content">
<div class="item-inner">
<div class="item-title">Sheet</div>
<div class="item-after"></div>
</div>
</div>
</a>
</li>
<li id="edit-link-range">
<div class="item-content">
<div class="item-inner">
<div class="item-title label">Link</div>
<div class="item-input">
<input type="url" placeholder="Link">
<div class="item-title">Range</div>
<div class="item-after">
<div class="item-input">
<input class="field right" type="text" placeholder="Required">
</div>
</div>
</div>
</div>
</li>
<li>
<div id="edit-link-display" class="item-content">
<li id="edit-link-link">
<div class="item-content">
<div class="item-inner">
<div class="item-title label">Display</div>
<div class="item-input">
<input type="text" placeholder="Display">
<div class="item-title">Link</div>
<div class="item-after">
<div class="item-input">
<input class="field right" type="url" placeholder="Required">
</div>
</div>
</div>
</div>
</li>
<li>
<div id="edit-link-tip" class="item-content">
<li id="edit-link-display">
<div class="item-content">
<div class="item-inner">
<div class="item-title">Display</div>
<div class="item-after">
<div class="item-input">
<input class="field right" type="text" placeholder="Display">
</div>
</div>
</div>
</div>
</li>
<li id="edit-link-tip">
<div class="item-content">
<div class="item-inner">
<div class="item-title label">Screen Tip</div>
<div class="item-input">
<input type="text" placeholder="Screen Tip">
<div class="item-title">Screen Tip</div>
<div class="item-after">
<div class="item-input">
<input class="field right" type="text" placeholder="Screen Tip">
</div>
</div>
</div>
</div>
......
......@@ -40,7 +40,6 @@
*
*/
define([
'text!spreadsheeteditor/mobile/app/template/EditCell.template',
'jquery',
......@@ -154,11 +153,15 @@ define([
},
updateItemHandlers: function () {
if ($('#edit-cell').length < 1) {
return;
}
$('.container-edit a.item-link[data-page]').single('click', _.buffered(this.onItemClick, 100, this));
var selectorsDynamicPage = [
'#edit-cell',
'.page[data-page=edit-border-style]',
'.page[data-page=edit-cell-format]'
].map(function (selector) {
return selector + ' a.item-link[data-page]';
}).join(', ');
$(selectorsDynamicPage).single('click', _.bind(this.onItemClick, this));
},
showPage: function (templateId, suspendEvent) {
......
......@@ -169,11 +169,14 @@ define([
},
updateItemHandlers: function () {
if ($('#edit-chart').length < 1) {
return;
}
$('.container-edit a.item-link[data-page]').single('click', _.buffered(this.onItemClick, 100, this));
var selectorsDynamicPage = [
'#edit-chart',
'.page[data-page=edit-chart-style]'
].map(function (selector) {
return selector + ' a.item-link[data-page]';
}).join(', ');
$(selectorsDynamicPage).single('click', _.bind(this.onItemClick, this));
$('.edit-chart-style.subnavbar.categories a').single('click', function () {
$('.page[data-page=edit-chart-style]').find('.list-block.inputs-list').removeClass('inputs-list');
......
/*
*
* (c) Copyright Ascensio System Limited 2010-2016
*
* This program is a free software product. You can redistribute it and/or
* modify it under the terms of the GNU Affero General Public License (AGPL)
* version 3 as published by the Free Software Foundation. In accordance with
* Section 7(a) of the GNU AGPL its Section 15 shall be amended to the effect
* that Ascensio System SIA expressly excludes the warranty of non-infringement
* of any third-party rights.
*
* This program is distributed WITHOUT ANY WARRANTY; without even the implied
* warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For
* details, see the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
*
* You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia,
* EU, LV-1021.
*
* The interactive user interfaces in modified source and object code versions
* of the Program must display Appropriate Legal Notices, as required under
* Section 5 of the GNU AGPL version 3.
*
* Pursuant to Section 7(b) of the License you must retain the original Product
* logo when distributing the program. Pursuant to Section 7(e) we decline to
* grant you any rights under trademark law for use of our trademarks.
*
* All the Product's GUI elements, including illustrations and icon sets, as
* well as technical writing content are licensed under the terms of the
* Creative Commons Attribution-ShareAlike 4.0 International. See the License
* terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
*
*/
/**
* EditHyperlink.js
* Spreadsheet Editor
*
* Created by Alexander Yuzhin on 12/20/16
* Copyright (c) 2016 Ascensio System SIA. All rights reserved.
*
*/
define([
'text!spreadsheeteditor/mobile/app/template/EditHyperlink.template',
'jquery',
'underscore',
'backbone'
], function (editTemplate, $, _, Backbone) {
'use strict';
SSE.Views.EditHyperlink = Backbone.View.extend(_.extend((function() {
// private
var _editCellController;
return {
// el: '.view-main',
template: _.template(editTemplate),
events: {
},
initialize: function () {
_editCellController = SSE.getController('EditHyperlink');
Common.NotificationCenter.on('editcontainer:show', _.bind(this.initEvents, this));
},
initEvents: function () {
var me = this;
me.initControls();
},
// Render layout
render: function () {
this.layout = $('<div/>').append(this.template({
android : Common.SharedSettings.get('android'),
phone : Common.SharedSettings.get('phone'),
scope : this
}));
return this;
},
rootLayout: function () {
if (this.layout) {
return this.layout
.find('#edit-link-root')
.html();
}
return '';
},
initControls: function () {
//
},
textBack: 'Back'
}
})(), SSE.Views.EditHyperlink || {}))
});
......@@ -104,11 +104,14 @@ define([
},
updateItemHandlers: function () {
if ($('#edit-image').length < 1) {
return;
}
$('.container-edit a.item-link[data-page]').single('click', _.buffered(this.onItemClick, 100, this));
var selectorsDynamicPage = [
'#edit-image',
'.page[data-page=edit-image-replace-view]'
].map(function (selector) {
return selector + ' a.item-link[data-page]';
}).join(', ');
$(selectorsDynamicPage).single('click', _.bind(this.onItemClick, this));
},
showPage: function (templateId, suspendEvent) {
......
......@@ -107,11 +107,14 @@ define([
},
updateItemHandlers: function () {
if ($('#edit-shape').length < 1) {
return;
}
$('.container-edit a.item-link[data-page]').single('click', _.buffered(this.onItemClick, 100, this));
var selectorsDynamicPage = [
'#edit-shape',
'.page[data-page=edit-shape-style]'
].map(function (selector) {
return selector + ' a.item-link[data-page]';
}).join(', ');
$(selectorsDynamicPage).single('click', _.bind(this.onItemClick, this));
},
showPage: function (templateId, suspendEvent) {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment