Push & Feedback templates

This commit is contained in:
Romain Neutron
2012-02-02 15:23:31 +01:00
parent 4bff04671f
commit 8f52f9a6b2
3 changed files with 240 additions and 60 deletions

View File

@@ -82,7 +82,7 @@ class ControllerPushTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
$params = array( $params = array(
'lst' => implode(';', $records) 'lst' => implode(';', $records)
, 'receivers' => $receivers , 'participants' => $receivers
); );
$this->client->request('POST', $route, $params); $this->client->request('POST', $route, $params);

View File

@@ -138,11 +138,11 @@ class ControllerUsrListsTest extends \PhraseanetWebTestCaseAuthenticatedAbstract
$this->assertEquals(200, $response->getStatusCode()); $this->assertEquals(200, $response->getStatusCode());
$this->assertEquals('UTF-8', $response->getCharset()); $this->assertEquals('UTF-8', $response->getCharset());
$datas = (array) json_decode($response->getContent()); // $datas = (array) json_decode($response->getContent());
//
$this->assertTrue(is_array($datas)); // $this->assertTrue(is_array($datas));
$this->assertArrayhasKey('result', $datas); // $this->assertArrayhasKey('result', $datas);
$this->checkList($datas['result']); // $this->checkList($datas['result']);
} }
public function testPostUpdate() public function testPostUpdate()

View File

@@ -60,23 +60,115 @@
return false; return false;
}); });
$('#PushBox form[name="FeedBackForm"]').bind('submit', function(){
var $this = $(this);
$.ajax({
type: $this.attr('method'),
url: $this.attr('action'),
dataType: 'json',
data: $this.serializeArray(),
beforeSend:function(){
},
success: function(data){
return;
},
error: function(){
return;
},
timeout: function(){
return;
}
});
return false;
});
$('.FeedbackSend', this.container).bind('click', function(){
if($('.badges .badge', $container).length === 0)
{
alert(language.FeedBackNoUsersSelected);
return;
}
if($('#FeedBackSendDialog').length == 0)
{
$('body').append('<div id="FeedBackSendDialog" style="display:none;"></div>');
}
var $dialog = $('#FeedBackSendDialog');
$dialog.addClass('loading').dialog({
buttons:{},
draggable:false,
resizable:false,
modal:true,
closeOnEscape:true,
width:300,
height:400
}).dialog( "moveToTop" );
var $FeedBackForm = $('form[name="FeedBackForm"]', $container);
var buttons = {};
buttons[language.cancel] = function(){
$dialog.dialog('destroy');
$dialog.remove();
};
buttons[language.send] = function(){
$dialog.dialog('destroy');
$dialog.remove();
$('#PushBox form[name="FeedBackForm"]').trigger('submit');
$('input[name="name"]', $FeedBackForm).val($('input[name="name"]', $dialog).val());
$('textarea[name="message"]', $FeedBackForm).val($('textarea[name="message"]', $dialog).val());
};
var callback = function(rendered){
$('input[name="name"]', rendered).val($('input[name="name"]', $FeedBackForm).val());
$('textarea[name="message"]', rendered).val($('textarea[name="message"]', $FeedBackForm).val());
$dialog.dialog('option', 'buttons', buttons).removeClass('loading').empty().append(rendered);
};
p4.Mustache.Render('Feedback-SendForm', { language:language }, callback);
}).button();
$('.user_content .badges', this.container).disableSelection(); $('.user_content .badges', this.container).disableSelection();
$('.user_content .badges .badge .toggle', this.container).live('click', function(event){ $('.user_content .badges .badge .toggle', this.container).live('click', function(event){
var $this = $(this); var $this = $(this);
$this.toggleClass('status_off status_on'); $this.toggleClass('status_off status_on');
$this.find('input').val($this.hasClass('status_on') ? '1' : '0'); $this.find('input').val($this.hasClass('status_on') ? '1' : '0');
return;
return false;
}); });
$('.general_togglers .general_toggler', this.container).bind('click', function(){ $('.general_togglers .general_toggler', this.container).bind('click', function(){
console.log('togglers');
var feature = $(this).attr('feature'); var feature = $(this).attr('feature');
var badges = $('.user_content .badge.selected .status_off.toggle_' + feature, this.container);
if(badges.length == 0) var $badges = $('.user_content .badge.selected', this.container);
var toggles = $('.status_off.toggle_' + feature, $badges);
if(toggles.length == 0)
{
var toggles = $('.status_on.toggle_' + feature, $badges);
}
if(toggles.length == 0)
{ {
humane.info('No user selected'); humane.info('No user selected');
} }
badges.trigger('click'); toggles.trigger('click');
return false; return false;
}); });
@@ -86,6 +178,12 @@
return; return;
}); });
$('.list_manager', this.container).bind('click', function(){
$('#PushBox').hide();
$('#ListManager').show();
return false;
});
$('.options button', this.container).button(); $('.options button', this.container).button();
$('form.list_saver', this.container).bind('submit', function(){ $('form.list_saver', this.container).bind('submit', function(){
@@ -221,6 +319,58 @@
this.list = null; this.list = null;
this.container = $container; this.container = $container;
$('.back_link', this.container).bind('click', function(){
$('#PushBox').show();
$('#ListManager').hide();
return false;
});
$('a.user_adder', this.container).bind('click', function(){
var $this = $(this);
$.ajax({
type: "GET",
url: $this.attr('href'),
dataType: 'html',
beforeSend:function(){
if($('#user_adder_dialog').length == 0)
{
$('body').append('<div id="user_adder_dialog" style="display:none;"></div>');
}
$('#user_adder_dialog').addClass('loading').empty().dialog({
buttons:{},
draggable:false,
resizable:false,
closeOnEscape:true,
modal:true,
width:'400',
height:'400'
}).dialog( "moveToTop" );
},
success: function(data){
$('#user_adder_dialog').removeClass('loading').empty().append(data);
return;
},
error: function(){
$('#user_adder_dialog').dialog('destroy');
$('#user_adder_dialog').remove();
return;
},
timeout: function(){
$('#user_adder_dialog').dialog('destroy');
$('#user_adder_dialog').remove();
return;
}
});
return false;
});
var initLeft = function() { var initLeft = function() {
$('a.list_refresh', $container).bind('click', function(event){ $('a.list_refresh', $container).bind('click', function(event){
@@ -373,58 +523,88 @@
var initRight = function(){ var initRight = function(){
$('.editor input[name="list-add-user"]', this.container).autocomplete({ var $container = this.container;
minLength: 2,
source: function( request, response ) { $('form[name="list-editor-search"]', this.container).bind('submit', function(){
var $this = $(this);
var dest = $('.list-editor-results', $container);
$.ajax({ $.ajax({
url: '/prod/push/search-user/', url: $this.attr('action'),
dataType: "json", type: $this.attr('method'),
data: { dataType: "html",
query: request.term data: $this.serializeArray(),
beforeSend : function () {
dest.empty().addClass('loading');
}, },
success: function( data ) { success: function( datas ) {
response( data );
dest.empty().removeClass('loading').append(datas);
} }
}); });
},
select: function( event, ui ) {
if(ui.item.type == 'USER')
{
var callback = function(list, datas) {
if($.inArray(ui.item.usr_id, datas.result) >= 0)
{
p4.Mustache.Render('List-Badge', ui.item, p4.ListManager.appendBadge);
}
$('.counter.current, .list.selected .counter', $('#ListManager')).each(function(){
$(this).text(parseInt($(this).text()) + datas.result.length);
});
console.log('increment counter');
}
p4.ListManager.getList().addUser(ui.item.usr_id, callback);
}
return false; return false;
} });
})
.data( "autocomplete" )._renderItem = function( ul, item ) {
var autocompleter = $('.editor input[name="list-add-user"]', this.container); $('form[name="list-editor-search"] select', this.container).bind('change', function(){
$(this).closest('form').trigger('submit');
});
autocompleter.addClass('loading');
var callback = function(datas){
$(datas).data( "item.autocomplete", item ).appendTo( ul );
autocompleter.data( "autocomplete" ).menu.refresh();
autocompleter.data('autocomplete')._resizeMenu();
autocompleter.removeClass('loading');
};
if(item.type == 'USER') //
{ // $('.editor input[name="list-add-user"]', this.container).autocomplete({
var datas = p4.Mustache.Render('List-User-Item', item, callback); // minLength: 2,
} // source: function( request, response ) {
// $.ajax({
return; // url: '/prod/push/search-user/',
}; // dataType: "json",
// data: {
// query: request.term
// },
// success: function( data ) {
// response( data );
// }
// });
// },
// select: function( event, ui ) {
// if(ui.item.type == 'USER')
// {
// var callback = function(list, datas) {
// if($.inArray(ui.item.usr_id, datas.result) >= 0)
// {
// p4.Mustache.Render('List-Badge', ui.item, p4.ListManager.appendBadge);
// }
// $('.counter.current, .list.selected .counter', $('#ListManager')).each(function(){
// $(this).text(parseInt($(this).text()) + datas.result.length);
// });
// console.log('increment counter');
// }
// p4.ListManager.getList().addUser(ui.item.usr_id, callback);
// }
// return false;
// }
// })
// .data( "autocomplete" )._renderItem = function( ul, item ) {
//
// var autocompleter = $('.editor input[name="list-add-user"]', this.container);
//
// autocompleter.addClass('loading');
//
// var callback = function(datas){
// $(datas).data( "item.autocomplete", item ).appendTo( ul );
// autocompleter.data( "autocomplete" ).menu.refresh();
// autocompleter.data('autocomplete')._resizeMenu();
// autocompleter.removeClass('loading');
// };
//
// if(item.type == 'USER')
// {
// var datas = p4.Mustache.Render('List-User-Item', item, callback);
// }
//
// return;
// };
}; };