Archive for January, 2013

Fiddler2 block a resource from loading, css stylesheet, image, etc.

Wednesday, January 9th, 2013

click
x -> remove all
to clear the log
refresh the page you’re working with
find the request you’d like to block on subsequent loads, and click on it to highlight it
select the AutoResponder tab on the right, check to ‘Enable automatic responses’, also check ‘Unmatched requests passthrough’ to let all other calls through, click the Add button (Fiddler2 will auto use the highlighted resource url for you),
in the Rule editor below, select the second dropdown and choose what you’d like Fiddler2 to do when that particular resource is requested (for example: 404_Plain.dat), click Save
reload your page

also check out the Filters tab for things like blocking ALL css or js requests…

JavaScript Backbone Hash App #4 – activate it

Monday, January 7th, 2013

$(function(){ // onready
// App initiations
var appRouter = new AppRouter(); // Router initialization 
Backbone.history.start(); // Backbone start
});

// I like to use an initial loader script to load the app in the order desired, or you could use LABS or similar, in this case something like:

– /lib/jQuery, /lib/underscore, /lib/backbone,
– then our app files: /app/router, /app/models, /app/views
– finally, this file

JavaScript Backbone Hash App #3 – the view

Monday, January 7th, 2013

// Search
var SearchButtonView = Backbone.View.extend({
el: ‘.goBtnOutside’,
template: _.template(‘<input type=”submit” id=”searchButton” class=”goButton” alt=”Search” title=”Go” value=”Go”>’),
initialize: function(){
},
render: function() {
return this;
},
events: {
‘click #searchButton’: ‘fireSearch’
},
fireSearch: function(e) {
var searchRequest = $(‘#some-field’).val();
if(searchRequest == ”){
Backbone.history.navigate(“AllAnswers”, true);
}
else{
Backbone.history.navigate(“Search:” + searchRequest, true);
}
}
});
var MakeSearchButton = new SearchButtonView();

JavaScript Backbone Hash App #2 – the model – jsonp

Monday, January 7th, 2013

//Answer Model
var AnswerModel = Backbone.Model.extend({

initialize: function(attributes, options) {
//passed in
this.Callback = attributes.callback;
this.Method = attributes.methodNeeded;
this.answerId = attributes.answerId;
},
url: function() {
return ‘http://’ + controllerUrl + ‘/cc/kfController/’ + this.Method + ‘/’ + this.answerId;
},

// override backbone synch to force a jsonp call
sync: function(method, model, options) {
var params = _.extend({
type: ‘GET’,
dataType: ‘jsonp’,
jsonpCallback: this.Callback,
url: model.url()+”?callback=?”,
processData: false
}, options);

// Make the request.
return $.ajax(params);
}
});

JavaScript Backbone Hash App #1 – the router

Monday, January 7th, 2013

// this helps the app remain configurable, moveable, thus this ‘state’ of the app is extracted
var mostPopularAnswersHashText = “MostPopular”

//Router
var AppRouter = Backbone.Router.extend({

routes: {
”: ‘home’,
‘index.php’: ‘home’,
‘Search::searchQuery’ : ‘search’, // Matches http://support.htm/#Search:query
‘Search/:searchQuery’ : ‘search’, // Matches http://support.htm/#Search/query
‘:globalState’ : ‘globalStates’, // Matches http://example.com/#six
‘a_id/:answerIdInput’: ‘answerDetails’, // Matches http://example.com/#a_id/34
‘*actions’: ‘defaultAction’ // Matches http://example.com/#anything-here
},

defaultAction : function(){
this.navigate(mostPopularAnswersHashText, {trigger: true});
},
home : function(){
takeDown();
tracer(‘index’);
appProcessing = false;
this.navigate(mostPopularAnswersHashText, {trigger: true});
},

search : function(searchQuery){
searchResults = ‘Search/’ + searchQuery;

var portal = new AnswerModel({
//passing these values to the Model, which simply hits an AJAX server service
methodNeeded: ‘searchAjax’, answerId: prodID + ‘/’ + searchQuery, callback: ‘searchResults’
});
portal.fetch({
success: function(response,xhr) {
// Pass returned populated model to a View & render
var output = new AllAnswersView({ model : ‘AnswerModel’ });
output.render(response);
},
error: function (errorResponse) {
}
});
},

globalStates : function(globalState){

switch(globalState){

case mostPopularAnswersHashText:
var portal = new AnswerModel({
methodNeeded: ‘displayAnswersAjax’, answerId: prodID, callback: ‘callResponse’
});
portal.fetch({
success: function(response,xhr) {
var output = new MostPopularView({ model : ‘AnswerModel’ });
output.render(response);
},
error: function (errorResponse) {
}
});
break;

case allAnswersHashText:
case allTravelToolsHashText:
case allTravelEssentialsHashText:
case allTravelAdvisoriesHashText:

if(globalState == allAnswersHashText){ searchQuery = ”; }
if(globalState == allTravelToolsHashText){ searchQuery = ‘/c_travel-tools’; }
if(globalState == allTravelEssentialsHashText){ searchQuery = ‘/c_travel-essentials’; }
if(globalState == allTravelAdvisoriesHashText){ searchQuery = ‘/c_travel-advisories’; }

var portal = new AnswerModel({methodNeeded: ‘searchAjax’, answerId: prodID + ‘/’ + searchQuery, callback: ‘searchResults’});
portal.fetch({
success: function(response,xhr) {
var output = new AllAnswersView({ model : ‘AnswerModel’ });
output.render(response);
},
error: function (errorResponse) {
}
});
break;
}
},

answerDetails : function(answerIdInput){
// Initiate an Answer Model, pass it the desired ID
var portal = new AnswerModel({methodNeeded: ‘getFullAnswersAjax’, answerId: answerIdInput, callback: ‘answerContentResponse’});
portal.fetch({
success: function(response,xhr) {
// Pass returned populated model to a View, render
var article = new AnswerIdView({ model : ‘AnswerModel’ });
article.render(response);
},
error: function (errorResponse) {
tracer(errorResponse);
}
});
}
});