Search Results

Search found 1256 results on 51 pages for 'activate'.

Page 5/51 | < Previous Page | 1 2 3 4 5 6 7 8 9 10 11 12  | Next Page >

  • Will I be able to activate my MSDN media Windows Home Server with an OEM license key?

    - by Peter Stuer
    Can I go ahead and install a Windows Home Server using an MSDN iso (en_windows_home_server_installation_disc_x86_dvd_x14-24276.iso), and activate it later when my OEM box arrives (OEM sku as bought from Amazon, http://www.amazon.co.uk/Microsoft-OEM-Home-Server-WIN32/dp/B001E5Q8CO/) , or will I have to wait and use the media that ships with the license? I know that you can not do his with the trial, but the MSDN iso is listed as "retail". I do not wish to use the MSDN activation key for this install.

    Read the article

  • How to Activate VLC’s Web Interface, Control VLC From a Browser, & Use Any Smartphone as a Remote

    - by Chris Hoffman
    VLC includes a web interface, which you can enable to access your VLC player from a web browser, controlling playback from another device – particularly useful for a media center PC. VLC also offers a mobile web interface for smartphones. The web interface is turned off and locked down by default – you have to edit the web server’s .hosts file or VLC will disallow all incoming connections from other devices. How to Make Your Laptop Choose a Wired Connection Instead of Wireless HTG Explains: What Is Two-Factor Authentication and Should I Be Using It? HTG Explains: What Is Windows RT and What Does It Mean To Me?

    Read the article

  • Drupal accounts with dead addresses: how to de-activate?

    - by Philippe
    Hi, on my drupal website, there are a lot of users with an invalid email address. I know because, either they have never logged in or their mails bounce. But I have to check manually, which is not good. When a user signs up with an email address, they receive a confirmation email. Is there a way to automatically disable an account if the user does not log in within the first day after receiving this confirmation mail? Alternatively, it would be OK to keep the accounts disabled until the user clicks a link on the confirmation mail. Are there plugins or settings in Drupal to do this?

    Read the article

  • How do I activate my gizmo5 phone number in Google Voice? [closed]

    - by Sorin Sbarnea
    I wasn't able to activate my gizmo5 number because Google Voice activation(verification) requires you to enter two dial tones (DTMF) and they did not work at least not with these two variants: Using gizmo5 PC client using fring from Iphone as gizmo5 SIP client Redirecting gizmo5 to a US mobile number None of the above methods worked for me. Any ideas? More info: http://www.google.com/support/forum/p/voice/thread?tid=1d8c1d99721e3509&hl=en http://googlevoices.blogspot.com/2009/04/forwarding-sip-calls-to-google-voice.html

    Read the article

  • Deactivated wifi drivers, now they won't activate again on a Dell Mini 10v?

    - by UbuntuFan
    I have ubuntu 13.04. In the software and update menu, under additional drivers, Were it says "Broadcom Corporation; BCM4312 802.11b/gLP.PHY" the box labbeled "do not use it ticked" and when i try tick the one that says "Using Broadcom 802.11 Linux STA Wireless drivers....." it wont let me apply changes, it starts doing it then stops and re-ticks the do not use box. Because of this I can not use the wiress driver. Is there another way i can fix this. Or maby restore ubuntu to previous date. I accidentally ticked the do not use box this morning and now can't undo it. I have restarted several times to try apply changes and still no luck

    Read the article

  • How can I activate a Panel-icon via a script (or get its screen co-ordinates; to click it)?

    - by fred.bear
    This question is in the context of Lucid 10.04 desktop (ie. no Unity). I do most screen navigation via the keyboard (not the mouse), so I'm looking for a script solution to re-activating an app which has been "minimized" to the Panel's Notification Area. I'll use Skype as an example. wmctrl allows me enough access to normally-minimized windows, but when Skype is "minimized" to the Notification Area, it simply goes "off the radar" as far as wmctrl is concerned. Bearing in mind that icon positions in the Notification Area can vary, is there some way to determine the screen co-ordinates of Skype's Panel icon, so I can "click" it using xdotool (or a similar utility)? ...or maybe there is a more direct way to activate the "dormant" Skype? ... (and I don't mean the mouse ;) Here is the script, so far. Hopefully it will make clear what I'm trying to do: #!/bin/bash procname="skype-wrapper" windmask="Skype™" if [[ $(pgrep -x -n -c "$procname") == 1 ]] ; then wintitle="$(wmctrl -l |grep "$windmask" |head -n 1 |sed -n "s/^.\+${HOSTNAME} \(.*\)/\1/p")" if [ "$wintitle" = "" ] ; then echo "Click on Skype's Panel-icon to show the main window" ############################################################### # How can I find the screen co-ordinates of Skype's Panel Icon ############################################################### else # Skype is running, and has (at least) one visible window which matches $windmask. Activate it. wmctrl -a "$wintitle" fi else # The process is not currently running. Start it. ("$procname" &) fi

    Read the article

  • How to activate SSL(HTTPS) in Glassfish 3.0 embedded API?

    - by Crazy Doc
    We are implementing an application with a webservice as component and decided to use the Glassfish 3.0 embedded distri to provide the webservice. And it works. We need a SSL(HTTPS) connection to the webservice, but we didn't find any documentation or hint how to activate it programmatically via the embedded API. Thus we tried to configure the embedded Glassfish via domain.xml, what has a listener configured with SSL. And the port is reachable but only without SSL. The embedded Glassfish seem to ignore the configuration to activate SSL for the port. Has anyone experience in configuring embedded Glassfish with SSL?

    Read the article

  • Type App Name To Launch/Activate in Win 8.1?

    - by Rubistro
    Early versions of Windows 8 had this amazingly useful feature: Hit the Windows Key Type the first few letters of an application name Hit Enter to activate it (make it frontmost) If the application was not already running, it would launch it. This still happens, even in Windows 8.1. But if the application was already running, it would still be brought to the front. This is broken in Windows 8.1 (It was also broken in later versions of Windows 8.) Has anyone found a fix for this? So that the application is always brought frontmost, whether or not it is already running?

    Read the article

  • Installed Windows 8 Upgrade AFTER Formatting HD - any way to activate?

    - by Brandon Vogel
    I had an XP system - formatted the HD then ran Windows 8 Upgrade install. Install was fine. It cannot activate and gives me the 'this is an upgrade' error. Is there ANY way to fix this (MS Support call or something?) before I scrap the entire Windows 8 install, Reinstall XP, then upgrade to Windows 8 the proper way? I hate to waste the day's worth of config-the-new-os time if not absolutely necessary. Error was the 0XC004F061 from Windows 8.

    Read the article

  • Transfer hard-drive with windows XP to another computer. On booting, asks to activate xp

    - by Jesse
    I had an old computer sitting around that I have not been able to boot successfully. I moved the hard drive and placed it in my newer computer. If I boot linux, I can mount the XP hard-drive and access the files. If I try to boot from the XP hard-drive, it will boot, but it asks me to activate windows before proceeding. If I continue, I get the "activation window" with two images/icons(?) which are failing to load. Nothing else happens. The version of windows came with the original computer the hard-drive came from, so I'm not sure if I'm married to the broken computer (I hope not!). Is there anything I can do in order to boot into XP from the new computer?

    Read the article

  • How do I activate SQLite3 on PHP 5.3.3 Centos 5?

    - by user58553
    I have reviewed the previous questions on this and they don't seem to cover what exactly I'm looking for, before I start, I'm no server admin. I'm trying to help get this server up and active and I have got it all going with exception to the SQLite3. The phpinfo displays '--without-sqlite' '--with-libxml-dir=/usr' '--enable-xml' '--with-system-tzdata' '--with-apxs2=/usr/sbin/apxs' '--without-mysql' '--without-gd' '--disable-dom' '--disable-dba' '--without-unixODBC' '--disable-pdo' '--disable-xmlreader' '--disable-xmlwriter' '--without-sqlite3' ' can somebody please advise in simple terms what to do to activate this, I've attempted a yum install. Thanks in advance, Sam

    Read the article

  • How to activate Windows 8 Pro license with Releae Preview installed?

    - by Antonio
    So I'm one of the many who downloaded the Release Preview (64-bit). I now got the ISO to install Windows 8 Professional (64-bit) and a product key (note: I didn't get these from either Windows 8 Upgrade Assistant or Microsoft's web Store), everything legal. However, the Windows 8 Upgrade Assistant only gives me the option to Store my personal files which means that I'll have to say goodbye to both my Program Files and their respective configurations. I just want to input the Product Key and activate the license, why isn't this possible? Even "Add Features to Windows 8" doesn't accept the key. Do I really need to backup all of my stuff and make a clean install?

    Read the article

  • Why do I have to enter my password every time I activate / deactivate AirPort (WiFi) on my MacBook P

    - by Another Registered User
    I use Snow Leopard, and I'm used to activate / deactivate WiFi like 20 times per day. The reason is that WiFi stops working properly after a few minutes of use. So every time I try to surf, I must stop/reactivate it first. But now, suddenly I have to enter my user password every time I want to do it. It's so annoying! The dialogue details say: Right: com.apple.airport.power Program: SystemUIServer What can I do that the Mac won't ask me for the password every time? It's hard enough that I have to stop/reactivate WiFi all the time (hardware bug). I have a admin account with full rights.

    Read the article

  • Run-time error'9' subscript out of range

    - by Chris
    The error occurs when I rename the file. I need to be able to the macro automatically recognise the change in the file name and apply it to the macro. Is there any way to do this without having to manually change it each time which will no work for what I need this to do Sub OccurenceSort() ' ' OccurenceSort Macro ' Macro recorded 4/9/2010 by Chris Greenlee ' ' Keyboard Shortcut: Ctrl+o ' Sheets("Occurences").Select Range("A1:D58").Select Range("D58").Activate Selection.Sort Key1:=Range("B2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Sheets("Chart").Select ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.PlotArea.Select ActiveChart.ChartArea.Select ActiveChart.SeriesCollection(1).Values = "=Occurences!R2C2:R12C2" End Sub Sub OccurenceByValue() ' ' OccurenceByValue Macro ' Macro recorded 4/9/2010 by Chris Greenlee ' ' Keyboard Shortcut: Ctrl+v ' ActiveWindow.Visible = False Windows("QA Project - Automated Charts v1.1.xls").Activate Sheets("Occurences").Select Range("A1:D58").Select Range("D58").Activate Selection.Sort Key1:=Range("C2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Sheets("Chart").Select ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.SeriesCollection(1).Values = "=Occurences!R2C3:R12C3" End Sub Sub OccurencesByPercentIncreaseToScore() ' ' OccurencesByPercentIncreaseToScore Macro ' Macro recorded 4/9/2010 by Chris Greenlee ' ' Keyboard Shortcut: Ctrl+p ' ActiveWindow.Visible = False Windows("QA Project - Automated Charts v1.1.xls").Activate Sheets("Occurences").Select Range("A1:D58").Select Range("D58").Activate Selection.Sort Key1:=Range("D2"), Order1:=xlDescending, Header:=xlGuess, _ OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom Sheets("Chart").Select ActiveSheet.ChartObjects("Chart 1").Activate ActiveChart.SeriesCollection(1).Values = "=Occurences!R2C4:R12C4" End Sub The problem occurs with this line Windows("QA Project - Automated Charts v1.1.xls").Activate

    Read the article

  • How do I activate the F_LINE input in a transplanted HP chassis?

    - by admin
    I have an HP Pavilion Media Center PC chassis, vintage 2003 or so and I replaced the motherboard in it with a newer (vintage 2009) HP motherboard, M2N68-LA (Narra 5). I have scoured the internet trying to find pinouts for the motherboard to no avail. My question concerns the front panel audio, specifically Line In. The old chassis was built for AC97 but the new mobo is build for the newer HD audio standard. I figured out by comparison & experimentally how to connect the Mic & Headphone jacks to the HD audio header of the mobo by adding a manual switch to set the SENSE lines. Now all works fine for Mic & headphone. The old chassis also has a front panel Line In jack that the newer HP chassis does not have. However, the new mobo has a 4 pin white connector labeled F_LINE that I believe is a line input. Under Windows 7 I see the two Line Inputs in the mixer but I can't get one of them to become active. The 4 pin F_LINE connector uses the two middle pins for ground, and presumably the other two for left and right audio inputs. There are no pins for sensing on that connector. Can anyone tell me how to use that F_LINE input for the front panel, or how to activate it?

    Read the article

  • How to activate Mac OS X application with a given process ID?

    - by Olivier
    I know the process id of an application in Mac OS X. How can I switch to it (using applescript, or python, or whatever)? By "switch", I mean, put in focus. The usual solution is to use the applescript code tell application "Foo" activate, but here the name is not useful because I have many instances of the same application running. I am however able to get the process id of the application. How can I switch to this application programmatically?

    Read the article

  • How to activate nVidia cards programmatically on new MacBookPros for CUDA programming?

    - by Carsten Kuckuk
    The new MacBookPros come with two graphic adapters, the Intel HD Graphics, and the NVIDIA GeForce GT 330M. OS X switches back and forth between them, depending on the workload, detection of an external monitor, or activation of Rosetta. I want to get my feet wet with CUDA programming, and unfortunately the CUDA SDK doesn't seem to take care of this back-and-forth switching. When Intel is active, no CUDA device gets detected, and when the NVidia card is active, it gets detected. So my current work-around is to use the little tool gfxCardStatus (http://codykrieger.com/gfxCardStatus/) to force the card on or off, just as I need it, but that's not satisfactory. Does anybody here know what the Apple-blessed, Apple-recommended way is to (1) detect the presence of a CUDA card, (2) to activate this card when present?

    Read the article

  • How to activate new page on some event in MVVM-WPF?

    - by Naresh Goradara
    Hi, I have a list page which list records in graphical representation. On clicking a some graphical portion or some button-which is added runtime on page- i want to activate new page by passing a some data as a parameter. Eg. I have Category list page, the UI representation is done at runtime. So clicking on some category I want to list its related Product on another page, I am getting its-CategoryID, Now, my problem is activating/displaying new page in MVVM patern in WPF. Just like Response.Redirect in ASP.Net Thanks in advance for your valuable suggestion.

    Read the article

  • How to activate a solution in SharePoint 2010 using client object model?

    - by Boris
    Here's the situation: I have a customized SharePoint2010 site created. I saved that site as a site template, which has created a solution. I want to be able to activate that solution using SharePoint2010 client object model. Is that possible? If yes, could you show me how to do it? If no, then could you show me how it can be done using standard SharePoint object model, or any other method? Thank you for all the help.

    Read the article

  • Scriptaculous Autocomplete to activate when the page is loaded.

    - by Jelle
    Is there a way to fire up Scriptaculous's Autocomplete to search with the default word from the inputfield when the page is loaded? Something like this? <input type="text" id="autocomplete" class="autocomplete_input" name="autocomplete_parameter" value="friends"/> <span id="indicator1" style="display: none"> loading </span> <div id="autocomplete_choices" class="autocomplete"> </div> <script type="text/javascript"> function AutoComp() { var myAutoCompleter = new Ajax.Autocompleter("autocomplete", "autocomplete_choices", "url", {indicator: 'indicator1',}); } document.onLoad = AutoComp.activate(); </script>

    Read the article

  • Using Durandal to Create Single Page Apps

    - by Stephen.Walther
    A few days ago, I gave a talk on building Single Page Apps on the Microsoft Stack. In that talk, I recommended that people use Knockout, Sammy, and RequireJS to build their presentation layer and use the ASP.NET Web API to expose data from their server. After I gave the talk, several people contacted me and suggested that I investigate a new open-source JavaScript library named Durandal. Durandal stitches together Knockout, Sammy, and RequireJS to make it easier to use these technologies together. In this blog entry, I want to provide a brief walkthrough of using Durandal to create a simple Single Page App. I am going to demonstrate how you can create a simple Movies App which contains (virtual) pages for viewing a list of movies, adding new movies, and viewing movie details. The goal of this blog entry is to give you a sense of what it is like to build apps with Durandal. Installing Durandal First things first. How do you get Durandal? The GitHub project for Durandal is located here: https://github.com/BlueSpire/Durandal The Wiki — located at the GitHub project — contains all of the current documentation for Durandal. Currently, the documentation is a little sparse, but it is enough to get you started. Instead of downloading the Durandal source from GitHub, a better option for getting started with Durandal is to install one of the Durandal NuGet packages. I built the Movies App described in this blog entry by first creating a new ASP.NET MVC 4 Web Application with the Basic Template. Next, I executed the following command from the Package Manager Console: Install-Package Durandal.StarterKit As you can see from the screenshot of the Package Manager Console above, the Durandal Starter Kit package has several dependencies including: · jQuery · Knockout · Sammy · Twitter Bootstrap The Durandal Starter Kit package includes a sample Durandal application. You can get to the Starter Kit app by navigating to the Durandal controller. Unfortunately, when I first tried to run the Starter Kit app, I got an error because the Starter Kit is hard-coded to use a particular version of jQuery which is already out of date. You can fix this issue by modifying the App_Start\DurandalBundleConfig.cs file so it is jQuery version agnostic like this: bundles.Add( new ScriptBundle("~/scripts/vendor") .Include("~/Scripts/jquery-{version}.js") .Include("~/Scripts/knockout-{version}.js") .Include("~/Scripts/sammy-{version}.js") // .Include("~/Scripts/jquery-1.9.0.min.js") // .Include("~/Scripts/knockout-2.2.1.js") // .Include("~/Scripts/sammy-0.7.4.min.js") .Include("~/Scripts/bootstrap.min.js") ); The recommendation is that you create a Durandal app in a folder off your project root named App. The App folder in the Starter Kit contains the following subfolders and files: · durandal – This folder contains the actual durandal JavaScript library. · viewmodels – This folder contains all of your application’s view models. · views – This folder contains all of your application’s views. · main.js — This file contains all of the JavaScript startup code for your app including the client-side routing configuration. · main-built.js – This file contains an optimized version of your application. You need to build this file by using the RequireJS optimizer (unfortunately, before you can run the optimizer, you must first install NodeJS). For the purpose of this blog entry, I wanted to start from scratch when building the Movies app, so I deleted all of these files and folders except for the durandal folder which contains the durandal library. Creating the ASP.NET MVC Controller and View A Durandal app is built using a single server-side ASP.NET MVC controller and ASP.NET MVC view. A Durandal app is a Single Page App. When you navigate between pages, you are not navigating to new pages on the server. Instead, you are loading new virtual pages into the one-and-only-one server-side view. For the Movies app, I created the following ASP.NET MVC Home controller: public class HomeController : Controller { public ActionResult Index() { return View(); } } There is nothing special about the Home controller – it is as basic as it gets. Next, I created the following server-side ASP.NET view. This is the one-and-only server-side view used by the Movies app: @{ Layout = null; } <!DOCTYPE html> <html> <head> <title>Index</title> </head> <body> <div id="applicationHost"> Loading app.... </div> @Scripts.Render("~/scripts/vendor") <script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="/App/main"></script> </body> </html> Notice that I set the Layout property for the view to the value null. If you neglect to do this, then the default ASP.NET MVC layout will be applied to the view and you will get the <!DOCTYPE> and opening and closing <html> tags twice. Next, notice that the view contains a DIV element with the Id applicationHost. This marks the area where virtual pages are loaded. When you navigate from page to page in a Durandal app, HTML page fragments are retrieved from the server and stuck in the applicationHost DIV element. Inside the applicationHost element, you can place any content which you want to display when a Durandal app is starting up. For example, you can create a fancy splash screen. I opted for simply displaying the text “Loading app…”: Next, notice the view above includes a call to the Scripts.Render() helper. This helper renders out all of the JavaScript files required by the Durandal library such as jQuery and Knockout. Remember to fix the App_Start\DurandalBundleConfig.cs as described above or Durandal will attempt to load an old version of jQuery and throw a JavaScript exception and stop working. Your application JavaScript code is not included in the scripts rendered by the Scripts.Render helper. Your application code is loaded dynamically by RequireJS with the help of the following SCRIPT element located at the bottom of the view: <script type="text/javascript" src="~/App/durandal/amd/require.js" data-main="/App/main"></script> The data-main attribute on the SCRIPT element causes RequireJS to load your /app/main.js JavaScript file to kick-off your Durandal app. Creating the Durandal Main.js File The Durandal Main.js JavaScript file, located in your App folder, contains all of the code required to configure the behavior of Durandal. Here’s what the Main.js file looks like in the case of the Movies app: require.config({ paths: { 'text': 'durandal/amd/text' } }); define(function (require) { var app = require('durandal/app'), viewLocator = require('durandal/viewLocator'), system = require('durandal/system'), router = require('durandal/plugins/router'); //>>excludeStart("build", true); system.debug(true); //>>excludeEnd("build"); app.start().then(function () { //Replace 'viewmodels' in the moduleId with 'views' to locate the view. //Look for partial views in a 'views' folder in the root. viewLocator.useConvention(); //configure routing router.useConvention(); router.mapNav("movies/show"); router.mapNav("movies/add"); router.mapNav("movies/details/:id"); app.adaptToDevice(); //Show the app by setting the root view model for our application with a transition. app.setRoot('viewmodels/shell', 'entrance'); }); }); There are three important things to notice about the main.js file above. First, notice that it contains a section which enables debugging which looks like this: //>>excludeStart(“build”, true); system.debug(true); //>>excludeEnd(“build”); This code enables debugging for your Durandal app which is very useful when things go wrong. When you call system.debug(true), Durandal writes out debugging information to your browser JavaScript console. For example, you can use the debugging information to diagnose issues with your client-side routes: (The funny looking //> symbols around the system.debug() call are RequireJS optimizer pragmas). The main.js file is also the place where you configure your client-side routes. In the case of the Movies app, the main.js file is used to configure routes for three page: the movies show, add, and details pages. //configure routing router.useConvention(); router.mapNav("movies/show"); router.mapNav("movies/add"); router.mapNav("movies/details/:id");   The route for movie details includes a route parameter named id. Later, we will use the id parameter to lookup and display the details for the right movie. Finally, the main.js file above contains the following line of code: //Show the app by setting the root view model for our application with a transition. app.setRoot('viewmodels/shell', 'entrance'); This line of code causes Durandal to load up a JavaScript file named shell.js and an HTML fragment named shell.html. I’ll discuss the shell in the next section. Creating the Durandal Shell You can think of the Durandal shell as the layout or master page for a Durandal app. The shell is where you put all of the content which you want to remain constant as a user navigates from virtual page to virtual page. For example, the shell is a great place to put your website logo and navigation links. The Durandal shell is composed from two parts: a JavaScript file and an HTML file. Here’s what the HTML file looks like for the Movies app: <h1>Movies App</h1> <div class="container-fluid page-host"> <!--ko compose: { model: router.activeItem, //wiring the router afterCompose: router.afterCompose, //wiring the router transition:'entrance', //use the 'entrance' transition when switching views cacheViews:true //telling composition to keep views in the dom, and reuse them (only a good idea with singleton view models) }--><!--/ko--> </div> And here is what the JavaScript file looks like: define(function (require) { var router = require('durandal/plugins/router'); return { router: router, activate: function () { return router.activate('movies/show'); } }; }); The JavaScript file contains the view model for the shell. This view model returns the Durandal router so you can access the list of configured routes from your shell. Notice that the JavaScript file includes a function named activate(). This function loads the movies/show page as the first page in the Movies app. If you want to create a different default Durandal page, then pass the name of a different age to the router.activate() method. Creating the Movies Show Page Durandal pages are created out of a view model and a view. The view model contains all of the data and view logic required for the view. The view contains all of the HTML markup for rendering the view model. Let’s start with the movies show page. The movies show page displays a list of movies. The view model for the show page looks like this: define(function (require) { var moviesRepository = require("repositories/moviesRepository"); return { movies: ko.observable(), activate: function() { this.movies(moviesRepository.listMovies()); } }; }); You create a view model by defining a new RequireJS module (see http://requirejs.org). You create a RequireJS module by placing all of your JavaScript code into an anonymous function passed to the RequireJS define() method. A RequireJS module has two parts. You retrieve all of the modules which your module requires at the top of your module. The code above depends on another RequireJS module named repositories/moviesRepository. Next, you return the implementation of your module. The code above returns a JavaScript object which contains a property named movies and a method named activate. The activate() method is a magic method which Durandal calls whenever it activates your view model. Your view model is activated whenever you navigate to a page which uses it. In the code above, the activate() method is used to get the list of movies from the movies repository and assign the list to the view model movies property. The HTML for the movies show page looks like this: <table> <thead> <tr> <th>Title</th><th>Director</th> </tr> </thead> <tbody data-bind="foreach:movies"> <tr> <td data-bind="text:title"></td> <td data-bind="text:director"></td> <td><a data-bind="attr:{href:'#/movies/details/'+id}">Details</a></td> </tr> </tbody> </table> <a href="#/movies/add">Add Movie</a> Notice that this is an HTML fragment. This fragment will be stuffed into the page-host DIV element in the shell.html file which is stuffed, in turn, into the applicationHost DIV element in the server-side MVC view. The HTML markup above contains data-bind attributes used by Knockout to display the list of movies (To learn more about Knockout, visit http://knockoutjs.com). The list of movies from the view model is displayed in an HTML table. Notice that the page includes a link to a page for adding a new movie. The link uses the following URL which starts with a hash: #/movies/add. Because the link starts with a hash, clicking the link does not cause a request back to the server. Instead, you navigate to the movies/add page virtually. Creating the Movies Add Page The movies add page also consists of a view model and view. The add page enables you to add a new movie to the movie database. Here’s the view model for the add page: define(function (require) { var app = require('durandal/app'); var router = require('durandal/plugins/router'); var moviesRepository = require("repositories/moviesRepository"); return { movieToAdd: { title: ko.observable(), director: ko.observable() }, activate: function () { this.movieToAdd.title(""); this.movieToAdd.director(""); this._movieAdded = false; }, canDeactivate: function () { if (this._movieAdded == false) { return app.showMessage('Are you sure you want to leave this page?', 'Navigate', ['Yes', 'No']); } else { return true; } }, addMovie: function () { // Add movie to db moviesRepository.addMovie(ko.toJS(this.movieToAdd)); // flag new movie this._movieAdded = true; // return to list of movies router.navigateTo("#/movies/show"); } }; }); The view model contains one property named movieToAdd which is bound to the add movie form. The view model also has the following three methods: 1. activate() – This method is called by Durandal when you navigate to the add movie page. The activate() method resets the add movie form by clearing out the movie title and director properties. 2. canDeactivate() – This method is called by Durandal when you attempt to navigate away from the add movie page. If you return false then navigation is cancelled. 3. addMovie() – This method executes when the add movie form is submitted. This code adds the new movie to the movie repository. I really like the Durandal canDeactivate() method. In the code above, I use the canDeactivate() method to show a warning to a user if they navigate away from the add movie page – either by clicking the Cancel button or by hitting the browser back button – before submitting the add movie form: The view for the add movie page looks like this: <form data-bind="submit:addMovie"> <fieldset> <legend>Add Movie</legend> <div> <label> Title: <input data-bind="value:movieToAdd.title" required /> </label> </div> <div> <label> Director: <input data-bind="value:movieToAdd.director" required /> </label> </div> <div> <input type="submit" value="Add" /> <a href="#/movies/show">Cancel</a> </div> </fieldset> </form> I am using Knockout to bind the movieToAdd property from the view model to the INPUT elements of the HTML form. Notice that the FORM element includes a data-bind attribute which invokes the addMovie() method from the view model when the HTML form is submitted. Creating the Movies Details Page You navigate to the movies details Page by clicking the Details link which appears next to each movie in the movies show page: The Details links pass the movie ids to the details page: #/movies/details/0 #/movies/details/1 #/movies/details/2 Here’s what the view model for the movies details page looks like: define(function (require) { var router = require('durandal/plugins/router'); var moviesRepository = require("repositories/moviesRepository"); return { movieToShow: { title: ko.observable(), director: ko.observable() }, activate: function (context) { // Grab movie from repository var movie = moviesRepository.getMovie(context.id); // Add to view model this.movieToShow.title(movie.title); this.movieToShow.director(movie.director); } }; }); Notice that the view model activate() method accepts a parameter named context. You can take advantage of the context parameter to retrieve route parameters such as the movie Id. In the code above, the context.id property is used to retrieve the correct movie from the movie repository and the movie is assigned to a property named movieToShow exposed by the view model. The movie details view displays the movieToShow property by taking advantage of Knockout bindings: <div> <h2 data-bind="text:movieToShow.title"></h2> directed by <span data-bind="text:movieToShow.director"></span> </div> Summary The goal of this blog entry was to walkthrough building a simple Single Page App using Durandal and to get a feel for what it is like to use this library. I really like how Durandal stitches together Knockout, Sammy, and RequireJS and establishes patterns for using these libraries to build Single Page Apps. Having a standard pattern which developers on a team can use to build new pages is super valuable. Once you get the hang of it, using Durandal to create new virtual pages is dead simple. Just define a new route, view model, and view and you are done. I also appreciate the fact that Durandal did not attempt to re-invent the wheel and that Durandal leverages existing JavaScript libraries such as Knockout, RequireJS, and Sammy. These existing libraries are powerful libraries and I have already invested a considerable amount of time in learning how to use them. Durandal makes it easier to use these libraries together without losing any of their power. Durandal has some additional interesting features which I have not had a chance to play with yet. For example, you can use the RequireJS optimizer to combine and minify all of a Durandal app’s code. Also, Durandal supports a way to create custom widgets (client-side controls) by composing widgets from a controller and view. You can download the code for the Movies app by clicking the following link (this is a Visual Studio 2012 project): Durandal Movie App

    Read the article

< Previous Page | 1 2 3 4 5 6 7 8 9 10 11 12  | Next Page >