/**
* stepの数と、実際の表示するステップ番号とは違いがあります!!
* 途中でステップが増える処理があるため。
* resmapを参照!
* 2つのresmapは、長さを合わせておきます。
*/
var step = 0;
var resmapNT = {
1: '1',
2: '2',
3: '3',
4: '4',
5: '4-1',
6: '5',
7: '6',
8: '7',
9: '8', // dummy
10: '9' // dummy
};
var resmapBM = {
1: '1',
2: '2',
3: '3',
4: '4',
5: '5',
6: '6',
7: '6-1',
8: '7',
9: '8',
10: '9'
};
var resmap = resmapNT;
var prevDisabled = false;
var nextDisabled = false;
var newsType = 0;
var TYPE_NEWS_TICKER = 1;
var TYPE_BOOKMARK = 2;
var buttonNames = {
bookmark: 'ブックマークボタン',
twitter: 'つぶやくボタン',
rss: 'RSS購読ボタン'
};
var SRC_BIND_NEWS = "typeBindNews";
var SRC_RSS = "typeRssDirect";
var bmConfig = {
buttons : {
bookmark : true,
twitter : false,
rss : true
},
bmServices : {
bmYahoo: true,
bmGoogle: true,
bmHatena: true,
rssYahoo: true,
rssGoogle: false,
rssHatena: false,
twitterId: ''
},
urlType : null,
ownUrl : null
};
var ntConfig = {
designId : ''
};
var newsConfig = {
newsSourceType : SRC_BIND_NEWS,
rssUrl : 'http://www.digitalstage.jp/blog/atom.xml',
userNewsCount : 0,
bindNewsId : '',
bindNewsTitle : '',
currentUserId : ''
};
var userNews = {};
var currentNewsData = null;
Ext.onReady(function(){
if (oemFlg.oem.length>0 && oemFlg.oem == '1')
newsConfig.rssUrl = 'http://www.sample.blks.jp/blog/atom.xml';
var args = location.search;
if (args.length > 0) {
// get initial data
var params = parseParam(args);
// 復元
var opt = eval('(' + decodeURIComponent(params.o) + ')');
for (var k in opt) {
if (k == 'newsType') newsType = opt[k];
if (k == 'services') bmConfig.bmServices = opt[k];
if (k == 'bindNewsId') newsConfig.bindNewsId = opt[k];
if (k == 'designId') ntConfig.designId = opt[k];
if (newsConfig[k]) newsConfig[k] = opt[k];
if (bmConfig[k]) bmConfig[k] = opt[k];
}
// Googleリーダー、はてなRSSサービス中止
bmConfig.bmServices.rssGoogle = false;
bmConfig.bmServices.rssHatena = false;
if (newsType == TYPE_BOOKMARK) {
resmap = resmapBM;
}
gotoStep(1);
} else {
gotoStep(1);
}
jQuery('#btn-prev').click(function(e) {
if (prevDisabled) return;
nextDisabled = false;
if (step == 1) {
location.href = '/main/';
return;
} else if (newsType == TYPE_NEWS_TICKER) {
// アカウントの作成をスキップ
if (step == 6) {
step--;
// ニュースソースがRSSアドレスの時
} else if (step == 8 && newsConfig.newsSourceType == SRC_RSS) {
step = 4;
}
} else if (newsType == TYPE_BOOKMARK) {
// RSSボタンの設定画面。ブックマークボタンは無い時
if (step == 5 && !bmConfig.buttons.bookmark) {
step--;
// アカウントの作成をスキップ
} else if (step == 8) {
step--;
// 設定の確認画面
} else if (step == 10) {
// RSSボタン無い時
if (bmConfig.buttons.rss) {
// ニュースソースがRSSアドレスの時
if (newsConfig.newsSourceType == SRC_RSS) step = 6;
} else {
// ブックマークボタンある時
if (bmConfig.buttons.bookmark) step = 5;
else step = 4; // 無い時
}
}
}
gotoStep(step-1);
});
jQuery('#btn-next').click(function(e) {
if (nextDisabled) return;
//
if (step == 1) {
if (newsType==0) {
msgBox(i18n.t("alert.error"), i18n.t("news.contents.error.select-item"));
return;
}
} else {
if (newsType == TYPE_NEWS_TICKER) {
if (beforeNextNewsTicker() == false) return;
} else {
if (beforeNextBookmark() == false) return;
}
}
gotoStep(step+1);
});
setupCommon();
jQuery(window).bind('resize', resizeHandler);
});
function beforeNextNewsTicker() {
if (step == 2) {
if (ntConfig.designId.length==0) {
msgBox(i18n.t("alert.error"), i18n.t("news.bindnews.contents.error.select-design"));
return false;
}
// ニュースソースの選択
} else if (step == 3) {
var rtn = postNewsSourcePage();
if (rtn == SRC_RSS) step = 7;
else if (rtn == SRC_BIND_NEWS) {
} else
return false;
// ログイン
} else if (step == 4) {
if (!postLoginPage('step4-1', 3)) return false;
// アカウントの作成
} else if (step == 5) {
if (!postNewAccountPage()) return false;
// ニュースの選択
} else if (step == 6) {
if (!postSelectNewsPage()) return false;
// 記事の確認と編集
} else if (step == 7) {
if (!postNewsEditPage()) return false;
// 設定の確認
} else if (step == 8) {
if (checkDouble()) {
msgBox(i18n.t("alert.request-error"), i18n.t("alert.request-error-msg"));
return false;
};
var opt = {
newsType : newsType,
designId : ntConfig.designId,
newsSourceType : newsConfig.newsSourceType,
bindNewsId : newsConfig.bindNewsId,
rssUrl : encodeURIComponent(newsConfig.rssUrl)
};
loadTag('news5', '', newsType, '', jQuery.toJSON(opt));
return false;
}
return true;
}
function beforeNextBookmark() {
if (step == 2) {
var chk = false;
jQuery('input[type=checkbox]').each(function(i, e){
bmConfig.buttons[e.id] = e.checked;
if (e.checked) chk = true;
});
if (!chk) {
msgBox(i18n.t("alert.error"), i18n.t("news.rss.contents.error.select-btn"));
return false;
}
} if (step == 3) {
var chk = false;
jQuery('input[type=checkbox]').each(function(i, e){
bmConfig.bmServices[e.id] = e.checked;
if (e.checked) chk = true;
});
if (!chk) {
msgBox(i18n.t("alert.error"), i18n.t("news.rss.contents.error.select-service"));
return false;
}
bmConfig.bmServices.twitterId = jQuery('#twitterId').val();
if (bmConfig.buttons.twitter && bmConfig.bmServices.twitterId.trim().length == 0) {
msgBox(i18n.t("alert.error"), i18n.t("news.rss.contents.error.required-twitter-ac"));
return false;
}
if (!bmConfig.buttons.bookmark) {
if (bmConfig.buttons.rss) step++;
else step = 9;
}
} else if (step == 4) {
bmConfig.urlType = jQuery('input[name="urlType"]:checked').attr('id');
if (bmConfig.urlType == 'urlTypeOwn') {
bmConfig.ownUrl = jQuery('#ownUrl').val();
if (bmConfig.ownUrl.trim().length == 0) {
msgBox(i18n.t("alert.error"), i18n.t("news.rss.contents.error.required-url"));
jQuery('#ownUrl')[0].setfocus();
return false;
}
}
if (!bmConfig.buttons.rss) step = 9;
// ニュースソースの選択
} else if (step == 5) {
var rtn = postNewsSourcePage();
if (rtn == SRC_RSS) step = 9;
else if (rtn == SRC_BIND_NEWS) {
} else
return false;
// ログイン
} else if (step == 6) {
if (!postLoginPage('step6-1', 5)) return false;
// アカウントの作成
} else if (step == 7) {
if (!postNewAccountPage()) return false;
// ニュースの選択
} else if (step == 8) {
if (!postSelectNewsPage()) return false;
// 記事の確認と編集
} else if (step == 9) {
if (!postNewsEditPage()) return false;
} else if (step == 10) {
if (checkDouble()) {
msgBox(i18n.t("alert.request-error"), i18n.t("alert.request-error-msg"));
return false;
};
opt = {
newsType : newsType,
buttons: bmConfig.buttons,
services: bmConfig.bmServices,
urlType: bmConfig.urlType,
ownUrl: (bmConfig.ownUrl == null) ? '':bmConfig.ownUrl,
newsSourceType : newsConfig.newsSourceType,
bindNewsId : newsConfig.bindNewsId,
rssUrl : newsConfig.rssUrl
};
loadTag('news5', '', newsType, '', jQuery.toJSON(opt));
return false;
}
return true;
}
function gotoStep(nextstep) {
if (nextstep == step) return;
var fn = (nextstep > step) ? nextHandler:prevHandler;
var nm = resmap[nextstep];
var tm = new Date().getTime();
var dir = (nextstep > 1 && newsType == TYPE_BOOKMARK) ? "news_bm":"news"
jQuery('#contents_body').load('/_modules/html/' + dir + '/step' + nm + '.html?tm=' + tm, fn);
}
function nextHandler(text, status) {
if (status == 'success') {
step++;
setStepCss();
onLoadComplete();
}
}
function prevHandler(text, status) {
if (status == 'success') {
step--;
setStepCss();
onLoadComplete();
}
}
function removeBranch() {
if (document.getElementById('step4-1')) jQuery('#step4-1').remove();
if (document.getElementById('step6-1')) jQuery('#step6-1').remove();
}
function onLoadComplete() {
if (step == 1) {
if (newsType == TYPE_NEWS_TICKER) {
jQuery('#btn-ticker').removeClass('off').addClass('on');
} else if (newsType == TYPE_BOOKMARK) {
jQuery('#btn-bookmark').removeClass('off').addClass('on');
}
jQuery('#btn-ticker').click(function(){
jQuery(this).removeClass('off').addClass('on');
jQuery('#btn-bookmark').removeClass('on').addClass('off');
newsType = TYPE_NEWS_TICKER;
resmap = resmapNT;
removeBranch();
setStepCss();
});
jQuery('#btn-bookmark').click(function(){
jQuery(this).removeClass('off').addClass('on');
jQuery('#btn-ticker').removeClass('on').addClass('off');
newsType = TYPE_BOOKMARK;
resmap = resmapBM;
removeBranch();
setStepCss();
});
if (newsConfig.newsSourceType == SRC_BIND_NEWS && newsConfig.bindNewsId != '') {
jQuery('#editArticles').click(function(){
goNewsEdit();
});
} else {
jQuery('#editArticles').hide();
}
} else {
if (newsType == TYPE_NEWS_TICKER) {
onLoadNewsTicker();
} else {
onLoadBookmark();
}
}
loaded();
}
/**
* ニュースティッカー選択時
* ページ読み込み時処理
* step == 1は、上位で処理しています。
*/
function onLoadNewsTicker() {
if (step == 2) {
jQuery('div.design-button').click(function(){
jQuery('div.design-button').removeClass('on').addClass('off');
jQuery(this).removeClass('off').addClass('on');
ntConfig.designId = this.id;
});
if (ntConfig.designId.length > 0) {
jQuery('#' + ntConfig.designId).removeClass('off').addClass('on');
}
} else if (step == 3) {
initNewsSourcePage();
} else if (step == 4) {
initLoginPage();
// IDの作成
} else if (step == 5) {
initNewAccountPage();
// ニュースの選択
} else if (step == 6) {
initSelectNewsPage();
// 記事の編集
} else if (step == 7) {
initNewsEditPage();
// 設定の確認
} else if (step == 8) {
jQuery('#itemType').html(i18n.t("news.bindnews.contents.step7.news-type"));
jQuery('#designType').html(
(ntConfig.designId=='design1') ? i18n.t("news.bindnews.contents.step7.design-standard"):
(ntConfig.designId=='design2') ? i18n.t("news.bindnews.contents.step7.design-mini"):i18n.t("news.bindnews.contents.step7.rss"));
var buf = '';
if (newsConfig.newsSourceType == SRC_RSS) {
buf = i18n.t("news.bindnews.contents.step7.rss-url")+'
' + newsConfig.rssUrl;
} else {
buf = i18n.t("news.bindnews.contents.step7.news-txt")+'「' + newsConfig.bindNewsTitle + '」';
}
jQuery('#newsSource').html(buf);
}
}
/**
* ブックマーク選択時
* ページ読み込み時処理
* step == 1は、上位で処理しています。
*/
function onLoadBookmark() {
if (step == 2) {
jQuery('input[type=checkbox]').each(function(i, e){
e.checked = bmConfig.buttons[e.id];
});
} else if (step == 3) {
jQuery('input[type=checkbox]').each(function(i, e){
e.checked = bmConfig.bmServices[e.id];
});
if (bmConfig.buttons.bookmark) jQuery('#bookmark-area').show();
else jQuery('#bookmark-area').hide();
if (bmConfig.buttons.rss) jQuery('#rssreader-area').show();
else jQuery('#rssreader-area').hide();
if (bmConfig.buttons.twitter) jQuery('#twitter-area').show();
else jQuery('#twitter-area').hide();
jQuery('#twitterId').val(bmConfig.bmServices.twitterId);
} else if (step == 4) {
if (bmConfig.urlType == null)
jQuery('#urlTypeDefault')[0].checked = true;
else
jQuery('#' + bmConfig.urlType)[0].checked = true;
if (bmConfig.ownUrl != null) jQuery('#ownUrl').val(bmConfig.ownUrl);
} else if (step == 5) {
initNewsSourcePage();
} else if (step == 6) {
initLoginPage();
// IDの作成
} else if (step == 7) {
initNewAccountPage();
// ニュースの選択
} else if (step == 8) {
initSelectNewsPage();
// 記事の編集
} else if (step == 9) {
initNewsEditPage();
// 設定の確認
} else if (step == 10) {
jQuery('#itemType').html(i18n.t("news.rss.contents.step9.kuchikomi-btn"));
var buf = '';
// ボタン
for (var k in bmConfig.buttons) {
var v = bmConfig.buttons[k];
if (v) {
if (buf.length > 0) buf += '、';
buf += buttonNames[k];
}
}
jQuery('#buttons').html(buf);
// サービス
buf = '';
if (bmConfig.buttons.bookmark) {
//if (bmConfig.bmServices.bmYahoo) buf = addSep(buf, 'Yahoo!ブックマーク');
if (bmConfig.bmServices.bmGoogle) buf = addSep(buf, i18n.t("news.rss.contents.step3.google"));
if (bmConfig.bmServices.bmHatena) buf = addSep(buf, i18n.t("news.rss.contents.step3.hatena"));
}
if (bmConfig.buttons.rss) {
if (bmConfig.bmServices.rssYahoo) buf = addSep(buf, i18n.t("news.rss.contents.step3.yahoo"));
if (bmConfig.bmServices.rssGoogle) buf = addSep(buf, i18n.t("news.rss.contents.step3.google-reader"));
if (bmConfig.bmServices.rssHatena) buf = addSep(buf, i18n.t("news.rss.contents.step3.hatena-rss"));
}
if (bmConfig.buttons.twitter) {
buf = addSep(buf, i18n.t("news.rss.contents.step3.twitter"));
}
jQuery('#services').html(buf);
// ブックマークのURL
if (bmConfig.buttons.bookmark) {
jQuery('#urlType').html((bmConfig.urlType=='urlTypeDefault') ? i18n.t("news.rss.contents.step4.page-url"):
i18n.t("news.rss.contents.step4.page-url2")+'
' + bmConfig.ownUrl);
} else {
jQuery('#bookmark-area').hide();
}
// ニュースソース
if (bmConfig.buttons.rss) {
if (newsConfig.newsSourceType == SRC_RSS) {
buf = i18n.t("news.rss.contents.step9.rss-url")+'
' + newsConfig.rssUrl;
} else {
buf = i18n.t("news.rss.contents.step9.news-txt")+'「' + newsConfig.bindNewsTitle + '」';
}
jQuery('#newsSource').html(buf);
} else {
jQuery('#rssreader-area').hide();
}
}
}
function setStepCss() {
var nm = resmap[step];
var dir = (newsType==TYPE_BOOKMARK) ? 'news_bm':'news';
jQuery('#sub_title').css('background-image', 'url(/_modules/images/' + dir + '/subtitle0' + nm + '.png)');
for (var i=1; i<=10; i++) {
nm = resmap[i];
var src = '/_modules/images/' + dir + '/step0' + nm;
if (i == step) {
src += '_on';
}
jQuery('#step' + nm).css('background-image',
'url(' + src + '.png)');
}
/* sumit button */
btn = document.getElementById('btn-next');
if ((step == 10 && newsType==TYPE_BOOKMARK) || (step == 8 && newsType==TYPE_NEWS_TICKER)) {
btn.className = 'btn-submit';
} else {
btn.className = 'btn-next';
}
// resize
resizeHandler();
}
// ニュースソース選択ページ初期化
function initNewsSourcePage() {
jQuery('#' + newsConfig.newsSourceType)[0].checked = true;
jQuery('#rssUrl').val(newsConfig.rssUrl);
}
// ログインページ初期化
function initLoginPage() {
if (oemFlg.oem.length>0 && oemFlg.oem == '1')
jQuery('#news-id-desc').text(i18n.t("news.bindnews.contents.step4.create-id-msg"));
jQuery('#userId').focus(function(){
jQuery('input[name=hasUserId][value=yes]')[0].checked = true;
});
jQuery('#forgotId').click(function(){
// フォームパネル
var frm = new Ext.FormPanel({
title: i18n.t("news.bindnews.contents.step4.input-mail-txt"),
frame: true,
width: 550,
items:[{
layout: 'form',
items:[{
xtype:'textfield',
vtype:'email',
fieldLabel: i18n.t("news.bindnews.contents.step4.input-mail"),
name: 'email',
width: 400
}]
}]
});
// Window描画
var win = new Ext.Window({
title: i18n.t("news.bindnews.contents.step4.header-forgot-id"),
modal: true,
buttonAlign: 'center',
animateTarget: 'forgotId',
defaultButton: 1,
layout: 'form',
items:[
frm
],
buttons: [{
text: i18n.t("common.cancel"),
handler: function(){
keyDownEscFlag = false;
win.hide();
}
},{
text: i18n.t("common.send"),
handler: function(){
// エラーチェック
frm.getForm().submit({
url: 'remind_id',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
waitMsg: i18n.t("common.sending"),
success: function(fm, act) {
if (act.result.err_msg != '') {
msgBox(i18n.t("alert.error"), act.result.err_msg);
} else {
msgBox(i18n.t("news.bindnews.contents.step4.remind"), i18n.t("news.bindnews.contents.step4.remind-msg"));
keyDownEscFlag = false;
win.hide();
}
},
failure: function(fm, act) {
switch (act.failureType) {
case Ext.form.Action.CLIENT_INVALID:
Ext.Msg.alert(i18n.t("alert.error"), i18n.t("alert.value-error-msg"));
break;
case Ext.form.Action.CONNECT_FAILURE:
Ext.Msg.alert(i18n.t("alert.communication-error"), i18n.t("alert.communication-error-msg"));
break;
case Ext.form.Action.SERVER_INVALID:
Ext.Msg.alert(i18n.t("alert.error"), i18n.t("alert.server-error-msg"));
}
}
});
}
}]
});
keyDownEscFlag = true;
win.show();
});
jQuery('#forgotPass').click(function(){
// フォームパネル
var passFrm = new Ext.FormPanel({
title:i18n.t("news.bindnews.contents.step4.input-login-id-txt"),
frame: true,
width: 550,
items:[{
layout: 'form',
items:[{
xtype:'textfield',
fieldLabel: i18n.t("news.bindnews.contents.step4.input-login-id"),
name: 'login_id',
width: 400
}]
}]
});
// Window描画
var passWin = new Ext.Window({
title: i18n.t("news.bindnews.contents.step4.header-forgot-pass"),
modal: true,
buttonAlign: 'center',
animateTarget: 'forgotPass',
defaultButton: 1,
layout: 'form',
items:[
passFrm
],
buttons: [{
text: i18n.t("common.cancel"),
handler: function(){
keyDownEscFlag = false;
passWin.hide();
}
},{
text: i18n.t("common.send"),
handler: function(){
// エラーチェック
passFrm.getForm().submit({
url: 'remind_pass',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
waitMsg: i18n.t("common.sending"),
success: function(fm, act) {
if (act.result.err_msg != '') {
msgBox(i18n.t("alert.error"), act.result.err_msg);
} else {
msgBox(i18n.t("news.bindnews.contents.step4.remind"), i18n.t("news.bindnews.contents.step4.remind-msg2"));
keyDownEscFlag = false;
passWin.hide();
}
},
failure: function(fm, act) {
switch (act.failureType) {
case Ext.form.Action.CLIENT_INVALID:
Ext.Msg.alert(i18n.t("alert.error"), i18n.t("alert.value-error-msg"));
break;
case Ext.form.Action.CONNECT_FAILURE:
Ext.Msg.alert(i18n.t("alert.communication-error"), i18n.t("alert.communication-error-msg"));
break;
case Ext.form.Action.SERVER_INVALID:
Ext.Msg.alert(i18n.t("alert.error"), i18n.t("alert.server-error-msg"));
}
}
});
}
}]
});
keyDownEscFlag = true;
passWin.show();
});
_loadLogin();
}
// アカウント作成ページ初期化
function initNewAccountPage() {
jQuery('#userId').focus(function(e) {
checkRequired(this, '#msg-userId');
checkRequiredRegEx(this, '#msg-userId', USER_MATCH); // 2011-07-20
}).keyup(function(e) {
checkRequired(this, '#msg-userId');
checkRequiredRegEx(this, '#msg-userId', USER_MATCH); // 2011-07-20
});
jQuery('#password').focus(function(e) {
checkRequired(this, '#msg-password');
checkRequiredRegEx(this, '#msg-password', PASS_MATCH); // 2011-07-20
}).keyup(function(e) {
checkRequired(this, '#msg-password');
checkRequiredRegEx(this, '#msg-password', PASS_MATCH); // 2011-07-20
});
jQuery('#chk_pass').focus(function(e) {
if (checkRequired(this, '#msg-chk_pass'))
checkEqual(this, '#password', '#msg-chk_pass');
}).keyup(function(e) {
if (checkRequired(this, '#msg-chk_pass'))
checkEqual(this, '#password', '#msg-chk_pass');
});
jQuery('#mail_address').focus(function(e) {
checkRequired(this, '#msg-mail_address');
checkMailAddress(this, '#msg-mail_address');
}).keyup(function(e) {
checkRequired(this, '#msg-mail_address');
checkMailAddress(this, '#msg-mail_address');
});
jQuery('#chk_mail_address').focus(function(e) {
if (checkRequired(this, '#msg-chk_mail_address'))
if (checkMailAddress(this, '#msg-chk_mail_address'))
checkEqual(this, '#mail_address', '#msg-chk_mail_address');
}).keyup(function(e) {
if (checkRequired(this, '#msg-chk_mail_address'))
if (checkMailAddress(this, '#msg-chk_mail_address'))
checkEqual(this, '#mail_address', '#msg-chk_mail_address');
});
}
// ニュース選択ページ初期化
function initSelectNewsPage() {
jQuery('#uid').html(i18n.t("news.bindnews.contents.step5.login-user") + newsConfig.currentUserId + i18n.t("news.bindnews.contents.step5.login-txt"));
var newsTitlesArea = jQuery('#newsTitlesArea');
newsTitlesArea.html("").addClass('mini-loading');
var radioCreated = jQuery('#useCreated');
radioCreated[0].disabled = true;
newsConfig.userNewsCount = 0;
jQuery.ajax({
url: './list_user_news',
type: 'POST',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
data: {
'user_id': newsConfig.currentUserId
},
dataType: 'json',
success: function(json) {
userNews = json;
if (json.news.length > 0) {
var sel = jQuery('');
for (var i=0; i' + n.news_name + '');
}
sel.appendTo(newsTitlesArea);
if (newsConfig.bindNewsId.length > 0) jQuery('#userNews').val(newsConfig.bindNewsId);
radioCreated[0].checked = true;
radioCreated[0].disabled = false;
// 削除ボタン
newsTitlesArea.append(" ")
var delBtn = jQuery(''+i18n.t("news.bindnews.contents.step6.delete-news-link")+'');
delBtn.click(function(){
var id = sel.val();
var nm = sel.find(":selected").text();
Ext.Msg.confirm(i18n.t("news.bindnews.contents.step6.delete-news"), i18n.t("news.bindnews.contents.step6.delete-news-msg")+'「' + nm + '」'+i18n.t("news.bindnews.contents.step6.delete-news-msg2"), function(btn) {
if (btn == 'yes') {
jQuery.ajax({
url: './newsdel',
type: 'POST',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
data: {
'user_id': newsConfig.currentUserId,
'news_id': id
},
dataType: 'json',
success: function(json) {
initSelectNewsPage();
},
error: function(xhr, stats) {
msgBox(i18n.t("alert.update-error"), i18n.t("news.bindnews.contents.error.faild-delete-news"));
}
});
}
});
});
delBtn.appendTo(newsTitlesArea);
} else {
newsTitlesArea.html(i18n.t("news.bindnews.contents.step5.select-news-txt"));
jQuery('#createNew')[0].checked = true;
}
newsTitlesArea.removeClass('mini-loading');
},
error: function(xhr, stats) {
newsTitlesArea.removeClass('mini-loading');
}
});
}
// ニュース記事編集ページ初期化
function initNewsEditPage() {
jQuery('#newsName').text(i18n.t("news.bindnews.contents.step6.news-name") + newsConfig.bindNewsTitle);
jQuery('#editNewsTitle').click(function(){
editNewsTitle();
return false;
});
// 更新リスト
store = new Ext.data.JsonStore ({
proxy: new Ext.data.HttpProxy({
url: './list_articles',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')}
}),
baseParams: {
user_id: newsConfig.currentUserId,
news_id: newsConfig.bindNewsId
},
root: 'articles',
id: 'id',
fields: ['id', 'subject', 'body', 'url',
{ name:'news_date', type:'date'},
{ name:'create_date', type:'date'},
{ name:'updated_date', type:'date'}],
remoteSort: false
});
var cm = new Ext.grid.ColumnModel([
{
header: i18n.t("news.bindnews.contents.step6.article-title"),
dataIndex: 'subject',
align: 'left',
width: 230,
renderer: formatTitle
},{
header: i18n.t("news.bindnews.contents.step6.article-date"),
dataIndex: 'news_date',
width: 120,
renderer: formatDate
},{
header: i18n.t("news.bindnews.contents.step6.article-url"),
dataIndex: 'url',
align: 'left',
width: 240,
renderer: formatLink
},{
header: '',
dataIndex: '',
renderer: renderCtrlCol,
sortable: false,
hideable: false,
align: 'center'
}
]);
cm.defaultSortable = true;
// create the Grid
var grid = new Ext.grid.GridPanel({
el:'edit-area',
width:700,
height:350,
title: '',
store: store,
cm: cm,
trackMouseOver:false,
sm: new Ext.grid.RowSelectionModel({
singleSelect: true
}),
loadMask: {msg: i18n.t("common.loading")},
viewConfig: {
forceFit:true,
enableRowBody:true,
showPreview:true,
getRowClass : function(record, rowIndex, p, store){
if(this.showPreview){
p.body = record.data.body;
return 'x-grid3-row-expanded';
}
return 'x-grid3-row-collapsed';
}
},
bbar: [
{text: i18n.t("news.bindnews.contents.step6.add-new-article"), handler: function() {
editRecord(null);
}},
'->',
{text: i18n.t("news.bindnews.contents.step6.update-list"), handler: function() {
store.reload();
}}
]
});
store.on('load', function(st, rec, opt) {
//videoId = st.reader.jsonData.gdata_url;
});
grid.render();
store.load();
grid.on('render', function() {
grid.getSelectinModel().selectFirstRow();
if (videoId != '') {
var idx = store.indexOfId(videoId);
grid.getSelectionModel().selectRow(idx);
}
});
}
function renderCtrlCol(val, p, rec) {
var id = rec.data.id;
var nm = rec.data.label;
return ''+i18n.t("common.edit")+'
' +
''+i18n.t("common.delete")+'';
}
function editRecord(id) {
if (id==null && store.getCount()==10) {
msgBox(i18n.t("alert.input-error"), i18n.t("news.bindnews.contents.error.limit-news"));
return;
}
obj = {
subject: '', body: '', news_date: new Date(), url: 'http://'
};
if (id != null) {
var rec = store.getById(id);
obj.subject = rec.data.subject;
obj.body = rec.data.body;
obj.news_date = rec.data.news_date;
obj.url = rec.data.url;
}
var form = new Ext.FormPanel({
id: 'news-editor',
bodyStyle: 'padding: 5px 5px 0',
monitorValid: true,
items: [{
layout: 'column',
border: false,
items: [{
columnWidth: .4,
layout: 'form',
border: false,
items: [{
xtype: 'datefield',
fieldLabel: i18n.t("news.bindnews.contents.step6.edit-article-date"),
name: 'news_date',
format: 'Y/m/d',
allowBlank: false,
value: obj.news_date,
anchor: '98%'
}]
}, {
columnWidth: .6,
layout: 'form',
border: false,
items: [{
xtype: 'timefield',
hideLabel: true,
name: 'news_time',
format: 'H:i',
increment: 1,
allowBlank: false,
value: obj.news_date,
width: 70
}]
}]
},{
fieldLabel: i18n.t("news.bindnews.contents.step6.edit-article-title"),
name: 'subject',
xtype: 'textfield',
width: 450,
allowBlank: false,
value: obj.subject
},{
fieldLabel: i18n.t("news.bindnews.contents.step6.edit-article-url"),
name: 'url',
xtype: 'textfield',
width: 450,
vtype: 'url',
allowBlank: false,
value: obj.url
},{
fieldLabel: i18n.t("news.bindnews.contents.step6.edit-article-body"),
name: 'body',
xtype: 'textarea',
width: 450,
height: 220,
value: obj.body
}],
sm: new Ext.grid.RowSelectionModel({
singleSelect: true
}),
bbar: [''+i18n.t("news.bindnews.contents.step6.footer-edit-article")+''],
height: 370,
width: 600,
loadMask: {msg: i18n.t("common.loading")}
});
var editWin = new Ext.Window({
title: i18n.t("news.bindnews.contents.step6.header-edit-article"),
width: 600,
height: 420,
minWidth: 600,
minHeight: 420,
layout: 'fit',
plain: true,
closeAction :'hide',
bodyStyle: 'padding: 5px',
buttonAlign: 'center',
modal: true,
items: form,
buttons: [{
text: i18n.t("common.cancel"),
handler: function() { editWin.hide(); }
}, {
text: i18n.t("common.update"),
handler: function() {
form.getForm().submit({
url: (id != null) ? './articlemod' : './articleadd',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
clientValidation: true,
params: {
user_id: newsConfig.currentUserId,
news_id: newsConfig.bindNewsId,
data_id: id
},
success: function(form, action) {
store.reload();
editWin.hide();
keyDownEscFlag = false;
},
failure: function(form, action) {
switch (action.failureType) {
case Ext.form.Action.CLIENT_INVALID:
msgBox(i18n.t("alert.input-error"), i18n.t("alert.input-error"));
return;
case Ext.form.Action.CONNECT_FAILURE:
msgBox(i18n.t("alert.communication-server-error"), i18n.t("alert.communication-server-error-msg"));
return;
case Ext.form.Action.SERVER_INVALID:
msgBox(i18n.t("alert.update-error"), action.result.msg);
return;
}
}
});
}
}]
});
keyDownEscFlag = true;
editWin.show();
}
function delRecord(id) {
var rec = store.getById(id);
if (rec) {
var nm = rec.data.subject;
Ext.Msg.confirm(i18n.t("news.bindnews.contents.step6.delete-article"), i18n.t("news.bindnews.contents.step6.delete-article-msg")+'「' + nm + '」'+i18n.t("news.bindnews.contents.step6.delete-article-msg2"), function(btn) {
if (btn == 'yes') {
jQuery.ajax({
url: './articledel',
type: 'POST',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
data: {
'user_id': newsConfig.currentUserId,
'news_id': newsConfig.bindNewsId,
'data_id': id
},
dataType: 'json',
success: function(json) {
store.reload();
},
error: function(xhr, stats) {
msgBox(i18n.t("alert.update-error"), i18n.t("news.bindnews.contents.error.faild-delete-article"));
}
});
}
});
}
}
function editNewsTitle() {
var titleForm = new Ext.FormPanel({
id: 'title-editor',
bodyStyle: 'padding: 5px 5px 0',
monitorValid: true,
items: [{
fieldLabel: i18n.t("news.bindnews.contents.step6.edit-news-title"),
name: 'news_title',
xtype: 'textfield',
width: 450,
allowBlank: false,
value: newsConfig.bindNewsTitle
}, {
fieldLabel: i18n.t("news.bindnews.contents.step6.edit-news-description"),
name: 'description',
xtype: 'textarea',
width: 450,
allowBlank: true,
value: (currentNewsData) ? currentNewsData.description:''
}, {
fieldLabel: i18n.t("news.bindnews.contents.step6.edit-news-author"),
name: 'author',
xtype: 'textfield',
width: 250,
allowBlank: true,
value: (currentNewsData) ? currentNewsData.author:''
}, {
fieldLabel: i18n.t("news.bindnews.contents.step6.edit-news-author-url"),
name: 'author_url',
xtype: 'textfield',
vtype: 'url',
width: 450,
allowBlank: true,
value: (currentNewsData) ? currentNewsData.author_url:''
}],
sm: new Ext.grid.RowSelectionModel({
singleSelect: true
}),
height: 200,
width: 600,
loadMask: {msg: i18n.t("common.loading")}
});
var titleEditWin = new Ext.Window({
title: i18n.t("news.bindnews.contents.step6.header-edit-news"),
width: 600,
height: 250,
minWidth: 600,
minHeight: 250,
layout: 'fit',
plain: true,
closeAction :'hide',
bodyStyle: 'padding: 5px',
buttonAlign: 'center',
modal: true,
items: titleForm,
buttons: [{
text: i18n.t("common.cancel"),
handler: function() { titleEditWin.hide(); }
}, {
text: i18n.t("common.update"),
handler: function() {
titleForm.getForm().submit({
url: './newsmod',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
clientValidation: true,
params: {
user_id: newsConfig.currentUserId,
news_id: newsConfig.bindNewsId
},
success: function(form, action) {
newsConfig.bindNewsTitle = form.findField('news_title').getValue();
jQuery('#newsName').text(i18n.t("news.bindnews.contents.step6.news-name") + newsConfig.bindNewsTitle);
titleEditWin.hide();
keyDownEscFlag = false;
},
failure: function(form, action) {
switch (action.failureType) {
case Ext.form.Action.CLIENT_INVALID:
msgBox(i18n.t("alert.input-error"), i18n.t("alert.input-error-msg"));
return;
case Ext.form.Action.CONNECT_FAILURE:
msgBox(i18n.t("alert.communication-server-error"), i18n.t("alert.communication-server-error-msg"));
return;
case Ext.form.Action.SERVER_INVALID:
msgBox(i18n.t("alert.update-error"), action.result.msg);
return;
}
}
});
}
}]
});
keyDownEscFlag = true;
titleEditWin.show();
}
function postNewsSourcePage() {
var chkSrc = jQuery('input[name="newsSrcType"]:checked')[0].id;
newsConfig.newsSourceType = chkSrc;
if (newsConfig.newsSourceType == SRC_RSS) {
newsConfig.rssUrl = jQuery('#rssUrl').val().trim();
if (newsConfig.rssUrl.length==0) {
msgBox(i18n.t("alert.error"), i18n.t("news.rss.contents.error.required-rss-url"));
return 'error';
}
newsConfig.rssUrl = newsConfig.rssUrl.replace('feed://', 'http://');
newsConfig.rssUrl = newsConfig.rssUrl.replace('feed:https://', 'https://');
return SRC_RSS;
}
return SRC_BIND_NEWS;
}
function postLoginPage(newIdEl, newIdPos) {
var hasId = jQuery('input[name="hasUserId"]:checked').val();
if (hasId == 'yes') {
if (document.getElementById(newIdEl)) jQuery('#' + newIdEl).remove();
var uid = jQuery('#userId').val();
newsConfig.currentUserId = uid;
var pwd = jQuery('#password').val();
jQuery.ajax({
url: './checkuser',
type: 'POST',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
data: {
'user_id': uid,
'password': pwd
},
dataType: 'json',
success: function(json) {
if (json.err_msg == '') {
_saveLogin();
step++;
gotoStep(step+1);
} else {
if (json.use_sync) {
msgBox(i18n.t("news.bindnews.contents.error.authorization-error"), json.err_msg);
} else if (json.use_sync3) {
Ext.Msg.confirm('SYNC3のアカウント', 'このアカウントはSYNC3で使われています。
あなたがこのアカウントの所有者の場合、データーを移行する事ができます。
移行ウィザードを起動しますか?', function(btn) {
if (btn == 'yes') {
//location.href = '/news3/?user_id=' + uid;
location.href = '/news3/?user_id=' + encodeURIComponent(uid); // 2011-07-20
}
});
} else if (json.use_sync2) {
Ext.Msg.confirm('SYNC2のアカウント', 'このアカウントはSYNC2で使われています。
あなたがこのアカウントの所有者の場合、データーを移行する事ができます。
移行ウィザードを起動しますか?', function(btn) {
if (btn == 'yes') {
//location.href = '/news/?user_id=' + uid;
location.href = '/news/?user_id=' + encodeURIComponent(uid); // 2011-07-20
}
});
} else {
msgBox(i18n.t("news.bindnews.contents.error.authorization-error"), json.err_msg);
}
}
},
error: function(xhr, stats) {
msgBox(i18n.t("alert.communication-server-error"), i18n.t("alert.server-status-error") + stats);
}
});
// コールバックを受けてから遷移するので、ここではfalse
return false;
} else {
_eraseLogin();
if (!document.getElementById(newIdEl))
jQuery('').css('width', '200px').insertAfter(jQuery('#menu ul li:eq(' + newIdPos + ')'));
}
return true;
}
function postNewAccountPage() {
jQuery('#userId').val(jQuery('#userId').val().trim()); // 2011-07-20
// 入力チェック
var hasError = false;
if (!checkRequired('#userId', '#msg-userId')) hasError = true;
else if (!checkRequiredRegEx('#userId', '#msg-userId', USER_MATCH)) hasError = true; // 2011-07-20
if (!checkRequired('#password', '#msg-password')) hasError = true;
else if (!checkRequiredRegEx('#password', '#msg-password', PASS_MATCH)) hasError = true; // 2011-07-20
if (!checkRequired('#chk_pass', '#msg-chk_pass')) hasError = true;
else
if (!checkEqual('#chk_pass', '#password', '#msg-chk_pass')) hasError = true;
if (!checkRequired('#mail_address', '#msg-mail_address')) hasError = true;
if (!checkMailAddress('#mail_address', '#msg-mail_address')) hasError = true;
if (!checkRequired('#chk_mail_address', '#msg-chk_mail_address')) hasError = true;
else {
if (!checkMailAddress('#chk_mail_address', '#msg-chk_mail_address')) hasError = true;
else {
if (!checkEqual('#chk_mail_address', '#mail_address', '#msg-chk_mail_address')) hasError = true;
}
}
if (hasError) {
msgBox(i18n.t("alert.input-error"), i18n.t("alert.input-error-msg"));
return false;
}
// 更新
var uid = jQuery('#userId').val();
newsConfig.currentUserId = uid;
var pwd = jQuery('#password').val();
var mail = jQuery('#mail_address').val();
jQuery.ajax({
url: './useradd',
type: 'POST',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
data: {
'user_id': uid,
'password': pwd,
'mail_address': mail
},
dataType: 'json',
success: function(json) {
if (json.err_msg == '') {
gotoStep(step+1);
} else {
msgBox(i18n.t("alert.update-error"), json.err_msg);
}
},
error: function(xhr, stats) {
msgBox(i18n.t("alert.update-error"), i18n.t("alert.db-error") + stats);
}
});
// 更新コールバックを受けてから遷移するので、ここではfalse
return false;
}
function postSelectNewsPage() {
var srcType = jQuery('input[name=newsSrcType]:checked')[0].id;
if (typeof(srcType) == 'undefined') {
msgBox(i18n.t("alert.update-error"), i18n.t("news.bindnews.contents.error.select-news"));
return false;
} else if (srcType == 'createNew') {
newsConfig.bindNewsTitle = jQuery('#newsTitle').val().trim();
if (newsConfig.bindNewsTitle.length == 0) {
msgBox(i18n.t("alert.update-error"), i18n.t("news.bindnews.contents.error.required-news-title"));
return false;
}
jQuery.ajax({
url: './newsadd',
type: 'POST',
headers: {"X-CSRFToken": jQuery.cookie('csrftoken')},
data: {
'user_id': newsConfig.currentUserId,
'news_title': newsConfig.bindNewsTitle
},
dataType: 'json',
success: function(json) {
if (json.err_msg == '') {
newsConfig.bindNewsId = json.new_id;
gotoStep(step+1);
} else {
msgBox(i18n.t("alert.update-error"), json.err_msg);
}
},
error: function(xhr, stats) {
msgBox(i18n.t("alert.update-error"), i18n.t("alert.db-error") + stats);
}
});
// 更新コールバックを受けてから遷移するので、ここではfalse
return false;
} else if (srcType == 'useCreated') {
var sel = jQuery('#userNews option:selected');
newsConfig.bindNewsId = sel.val();
newsConfig.bindNewsTitle = sel.text();
for (var i=0,l=userNews.news.length; i{0}',
value
);
}
function formatLink(value, p, r){
return String.format(
'{0}',
value, value);
}
function goNewsEdit() {
step = (newsType == TYPE_NEWS_TICKER) ? 3 : 5;
gotoStep(step+1);
}