Index: trunk/Vanilla/plugins/Vanilla/config.yaml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/config.yaml (revision 1218)
+++ trunk/Vanilla/plugins/Vanilla/config.yaml (revision 1220)
@@ -353,7 +353,40 @@
                         - Pages
                         - Monthly Archives
+    vanilla_scoring:
+        label: Vanilla + Scoring
+        base_path: templates/vanilla+scoring
+        order: 511
+        notes: 
+            - Homepage & Entry archives
+            - Entry Titles and scoring only
+            - 5 star rating
+            - favorite/unfavorite
+            - digg (note: no undigg)
+        templates:
+            index:
+                home:
+                    label: Homepage
+                    outfile: index.html
+                    rebuild_me: 1
+                javascript:
+                    label: Javascript
+                    outfile: mt.js
+                    rebuild_me: 1
+                scoring:
+                    label: Scoring Javascript
+                    outfile: mtscoring.js
+                    rebuild_me: 1
+            individual:
+                entry: 
+                    label: Entry
+                    mappings:
+                        entry_archive:
+                            archive_type: Individual
+            module:
+                wrapper:
+                    label: Wrapper
 
 
-# - Rating
+# - Scoring
 #     * 1
 #     * 5 Star
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/home.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/home.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/home.mtml (revision 1220)
@@ -0,0 +1,21 @@
+<mt:IncludeBlock module="Wrapper">
+
+    <mt:Entries lastn="10">
+        <h2><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></h2>
+        <p>
+            <strong>Digg-Style</strong>
+            <$mt:DugScore$>
+        </p>
+        <p>
+            <strong>Five Star</strong>
+            <$mt:FiveStarScore$>
+        </p>
+        <p>
+            <strong>Favorite/Unfavorite</strong>
+            <$mt:FavoriteScore$>
+        </p>
+        
+        <!-- <p><strong>Thumbs up/down</strong></p> -->
+    </mt:Entries>
+
+</mt:IncludeBlock>
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/mtcs-js.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/mtcs-js.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/mtcs-js.mtml (revision 1220)
@@ -0,0 +1,121 @@
+// This file is not used by this template set.
+// It is here as a placeholder for adding a 
+// feature where scoring can be disabled once
+// a user has scored the object.
+
+
+/* MTCS Scoring *****************************************************************/
+
+<mt:Ignore>
+/***
+ * Functions for scoring entries
+ * Scoring requires blog context, it is thus conditioned.
+ */
+</mt:Ignore>
+<mt:IfBlog>
+function mtScore(entry_id) {
+    var span = DOM.getElement('scoring-id-' + entry_id);
+    if (!span) return false;
+    if (DOM.hasClassName(span, 'scoring-pending')) return false;
+    if (DOM.hasClassName(span, 'scoring-scored')) return false;
+    if (!DOM.hasClassName(span, 'scoring-scorable')) return false;
+
+    var xh = mtGetXmlHttp();
+    if (!xh) return false;
+
+    DOM.addClassName( span, 'scoring-pending' );
+    var url = '<$mt:CGIPath$><$mt:CommunityScript$>';
+    xh.open('POST', url, true);
+    xh.onreadystatechange = function() {
+        if ( xh.readyState == 4 ) {
+            if ( xh.status && ( xh.status != 200 ) ) {
+                // error - ignore
+            } else {
+                eval(xh.responseText);
+            }
+        }
+    };
+    xh.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
+    xh.send( '__mode=vote&blog_id=<$mt:BlogID$>&f=scored,count&jsonp=mtScore_cb&id=' + entry_id);
+    return false;
+}
+
+function mtUpdateScores() {
+    var u = mtGetUser();
+    <mt:IfAnonymousRecommendAllowed>
+    <mt:Else>
+        if (!u) return false;
+    </mt:IfAnonymousRecommendAllowed>
+
+    var entry_ids = '';
+    var scores = DOM.getElementsByClassName("scoring");
+    for (var i = 0; i < scores.length; i++) {
+        var id = scores[i].id;
+        id = id.replace(/^scoring-id-/, '');
+        if (entry_ids != '') entry_ids += ",";
+        entry_ids += id;
+    }
+    if (entry_ids == '') return false;
+
+    var xh = mtGetXmlHttp();
+    if (!xh) return false;
+
+    var url = '<$mt:CGIPath$><$mt:CommunityScript$>';
+    xh.open('POST', url, true);
+    xh.onreadystatechange = function() {
+        if ( xh.readyState == 4 ) {
+            if ( xh.status && ( xh.status != 200 ) ) {
+                // error - ignore
+            } else {
+                eval(xh.responseText);
+            }
+        }
+    };
+    xh.setRequestHeader( 'Content-Type', 'application/x-www-form-urlencoded' );
+    xh.send( '__mode=score&blog_id=<$mt:BlogID$>&f=scored,count&jsonp=mtScore_cb&id=' + entry_ids);
+    return false;
+}
+
+function mtScore_cb(s_hash) {
+    var u = mtGetUser();
+    if (s_hash['error']) {
+        var els = DOM.getElementsByClassName('scoring-pending');
+        for (var i = 0; i < els.length; i++)
+            DOM.removeCLassName(els[i], 'scoring-pending');
+        // display error
+        alert(s_hash['error']);
+        return;
+    }
+    for (var id in s_hash) {
+        var span = DOM.getElement('scoring-id-' + id);
+        if ( span ) {
+            DOM.removeClassName( span, 'scoring-pending' );
+            DOM.removeClassName( span, 'scoring-scorable' );
+            if ( s_hash[id].scored ) {
+                DOM.addClassName( span, 'scoring-scored' );
+            } else {
+    <mt:IfAnonymousRecommendAllowed>
+                DOM.addClassName( span, 'scoring-scorable' );
+    <mt:Else>
+                if ( u && u.is_authenticated )
+                    DOM.addClassName( span, 'scoring-scorable' );
+    </mt:IfAnonymousRecommendAllowed>
+            }
+        }
+        var score = DOM.getElement('scoring-score-' + id);
+        if ( score )
+            score.innerHTML = s_hash[id].count ? s_hash[id].count : 0;
+        var label = DOM.getElement('scoring-score-label-' + id);
+        if ( label ) {
+            switch ( s_hash[id].count ) {
+                case 1:
+                    label.innerHTML = '<__trans phrase="Vote">';
+                    break;
+                default:
+                    label.innerHTML = '<__trans phrase="Votes">';
+                    break;
+            }
+        }
+    }
+}
+</mt:IfBlog>
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/wrapper.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/wrapper.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/wrapper.mtml (revision 1220)
@@ -0,0 +1,46 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" id="sixapart-standard">
+<head>
+    <title><$mt:BlogName encode_html="1"$></title>
+    <meta http-equiv="Content-Type" content="text/html; charset=<$mt:PublishCharset$>" />
+    <$mt:Var name="html_head"$>
+    <script type="text/javascript" src="<$mt:Link template="JavaScript"$>"></script>
+    <script type="text/javascript">
+        var staticWebPath = "<$mt:StaticWebPath$>";
+        var commentScript = "<$mt:CGIPath$><$mt:CommentScript$>";
+    </script>
+    <script type="text/javascript" src="<$mt:StaticWebPath$>plugins/Score/score_base.js"></script>
+    <script type="text/javascript" src="<$mt:StaticWebPath$>plugins/Score/Dug/score.js"></script>
+    <script type="text/javascript" src="<$mt:StaticWebPath$>plugins/Score/FiveStar/score.js"></script>
+    <script type="text/javascript" src="<$mt:StaticWebPath$>plugins/Score/Favorite/score.js"></script>
+    <mt:Ignore>
+    <!-- Community Solution Scoring -->
+    <!-- This updates any scoring controls on the page for the user who is signed-in. -->
+    <script type="text/javascript">
+    /* <![CDATA[ */
+    // mtAttachEvent('load', mtUpdateScores);
+    // mtAttachEvent('usersignin', mtUpdateScores);
+    /* ]]> */
+    </script>
+    </mt:Ignore>
+
+</head>
+<body>
+    
+    <p><em>Note: this template set is funtional, but not finished.</em></p>
+
+    <h1><a href="<$mt:BlogURL$>"><$mt:BlogName encode_html="1"$></a> + <__trans phrase="Rating"></h1>
+
+<!-- end header --><hr />
+
+
+    <$mt:Var name="contents"$>
+
+
+<!-- start footer --><hr />
+
+    <p><__trans phrase="_POWERED_BY"> and the Vanilla template set</p>
+
+</body>
+</html>
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/entry.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/entry.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/entry.mtml (revision 1220)
@@ -0,0 +1,17 @@
+<mt:IncludeBlock module="Wrapper">
+
+    <h1><$mt:EntryTitle$></h1>
+    <p>
+        <strong>Digg-Style</strong>
+        <$mt:DugScore$>
+    </p>
+    <p>
+        <strong>Five Star</strong>
+        <$mt:FiveStarScore$>
+    </p>
+    <p>
+        <strong>Favorite/Unfavorite</strong>
+        <$mt:FavoriteScore$>
+    </p>
+
+</mt:IncludeBlock>
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/javascript.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/javascript.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+scoring/javascript.mtml (revision 1220)
@@ -0,0 +1,167 @@
+
+/* Ajax Requests *****************************************************************/
+
+<mt:Ignore>
+/***
+ * Returns a XMLHttpRequest object (for Ajax operations).
+ */
+</mt:Ignore>
+function mtGetXmlHttp() {
+    if ( !window.XMLHttpRequest ) {
+        window.XMLHttpRequest = function() {
+            var types = [
+                "Microsoft.XMLHTTP",
+                "MSXML2.XMLHTTP.5.0",
+                "MSXML2.XMLHTTP.4.0",
+                "MSXML2.XMLHTTP.3.0",
+                "MSXML2.XMLHTTP"
+            ];
+
+            for ( var i = 0; i < types.length; i++ ) {
+                try {
+                    return new ActiveXObject( types[ i ] );
+                } catch( e ) {}
+            }
+
+            return undefined;
+        };
+    }
+    if ( window.XMLHttpRequest )
+        return new XMLHttpRequest();
+}
+
+
+/* Adding Handlers to window events *****************************************************************/
+
+<mt:Ignore>
+/***
+ * A utility function for assigning/adding handlers to window events.
+ */
+</mt:Ignore>
+function mtAttachEvent(eventName,func) {
+    var onEventName = 'on' + eventName;
+    var old = window[onEventName];
+    if( typeof old != 'function' )
+        window[onEventName] = func;
+    else {
+        window[onEventName] = function( evt ) {
+            old( evt );
+            return func( evt );
+        };
+    }
+}
+
+/* DOM Handler *****************************************************************/
+
+if ( !window.DOM )
+    DOM = {
+
+        getElement: function( e ) {
+            return (typeof e == "string" || typeof e == "number") ? document.getElementById( e ) : e;
+        },
+    
+    
+        addEventListener: function( e, en, f, uc ) {
+            try {
+                if( e.addEventListener )
+                    e.addEventListener( en, f, uc );
+                else if( e.attachEvent )
+                    e.attachEvent( "on" + en, f );
+                else
+                    e[ "on" + en ] = f;
+            } catch( e ) {}
+        },
+
+    
+        getClassNames: function( e ) {
+            if( !e || !e.className )
+                return [];
+            return e.className.split( /\s+/g );
+        },
+    
+    
+        hasClassName: function( e, cn ) {
+            e = DOM.getElement( e );
+            if( !e || !e.className )
+                return false;
+            var cs = DOM.getClassNames( e );
+            for( var i = 0; i < cs.length; i++ ) {
+                if( cs[ i ] == cn )
+                    return true;
+            }
+            return false;
+        },
+    
+    
+        addClassName: function( e, cn ) {
+            e = DOM.getElement( e );
+            if( !e || !cn )
+                return false;
+            var cs = DOM.getClassNames( e );
+            for( var i = 0; i < cs.length; i++ ) {
+                if( cs[ i ] == cn )
+                    return true;
+            }
+            cs.push( cn );
+            e.className = cs.join( " " );
+            return false;
+        },
+    
+    
+        removeClassName: function( e, cn ) {
+            var r = false;
+            e = DOM.getElement( e );
+            if( !e || !e.className || !cn )
+                return r;
+            var cs = (e.className && e.className.length)
+                ? e.className.split( /\s+/g )
+                : [];
+            var ncs = [];
+            /* support regex */
+            if( cn instanceof RegExp ) {
+                for( var i = 0; i < cs.length; i++ ) {
+                    if ( cn.test( cs[ i ] ) ) {
+                        r = true;
+                        continue;
+                    }
+                    ncs.push( cs[ i ] );
+                }
+            } else {
+                for( var i = 0; i < cs.length; i++ ) {
+                    if( cs[ i ] == cn ) {
+                        r = true;
+                        continue;
+                    }
+                    ncs.push( cs[ i ] );
+                }
+            }
+            if( r )
+                e.className = ncs.join( " " );
+            return r;
+        },
+
+
+        getElementsByTagAndClassName: function( tagName, className, root ) {
+            root = DOM.getElement( root );
+            if( !root )
+                root = document;
+            var allElements = root.getElementsByTagName( tagName );
+            var elements = [];
+            for( var i = 0; i < allElements.length; i++ ) {
+                var element = allElements[ i ];
+                if( !element )
+                    continue;
+                if( DOM.hasClassName( element, className ) )
+                    elements[ elements.length ] = element;
+            }
+            return elements;
+        },
+
+
+        getElementsByClassName: function( className, root ) {
+            return DOM.getElementsByTagAndClassName( "*", className, root );
+        }
+
+
+    };
+
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/home.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/home.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/home.mtml (revision 1220)
@@ -0,0 +1,14 @@
+<mt:IncludeBlock module="Wrapper">
+
+    <mt:Entries lastn="10">
+        <h2><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></h2>
+        <p><__trans phrase="By [_1] on [_2]" params="<$mt:EntryAuthorLink$>%%<$mt:EntryDate format="%x %X"$>"></p>
+        <mt:If tag="EntryBody">
+            <$mt:EntryBody$>
+        </mt:If>
+        <mt:If tag="EntryMore" convert_breaks="0">
+            <em><__trans phrase="Continue reading <a href="[_1]">[_2]</a>." params="<$mt:EntryPermalink$>%%<$mt:EntryTitle$>"></em>
+        </mt:If>
+    </mt:Entries>
+
+</mt:IncludeBlock>
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/entry_listing.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/entry_listing.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/entry_listing.mtml (revision 1220)
@@ -0,0 +1,25 @@
+<mt:IncludeBlock module="wrapper">
+
+    <h1><__trans phrase="[_1] Archives" params="<$mt:ArchiveTitle$>"></h1>
+    
+    <mt:Entries>
+        <h2><a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></h2>
+        <p><__trans phrase="By [_1] on [_2]" params="<$mt:EntryAuthorLink$>%%<$mt:EntryDate format="%x %X"$>"></p>
+        <mt:If tag="EntryBody">
+            <$mt:EntryBody$>
+        </mt:If>
+        <mt:If tag="EntryMore" convert_breaks="0">
+            <em><__trans phrase="Continue reading <a href="[_1]">[_2]</a>." params="<$mt:EntryPermalink$>%%<$mt:EntryTitle$>"></em>
+        </mt:If>
+    </mt:Entries>
+    
+    <mt:If name="category_archive">
+        <h3><__trans phrase="[_1] Category-Monthly Archives" params="<$mt:ArchiveTitle$>"></h3>
+        <ul>
+        <mt:ArchiveList archive_type="Category-Monthly">
+            <li><a href="<$mt:ArchiveLink$>"><$mt:ArchiveTitle$></a></li>
+        </mt:ArchiveList>
+        </ul>
+    </mt:If>
+
+</mt:IncludeBlock>
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/wrapper.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/wrapper.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/wrapper.mtml (revision 1220)
@@ -0,0 +1,23 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" id="sixapart-standard">
+<head>
+    <title><$mt:BlogName encode_html="1"$></title>
+    <meta http-equiv="Content-Type" content="text/html; charset=<$mt:PublishCharset$>" />
+</head>
+<body>
+
+    <h1><a href="<$mt:BlogURL$>"><$mt:BlogName encode_html="1"$></a> + <__trans phrase="Homepage + Entry Archives"></h1>
+
+<!-- end header --><hr />
+
+
+    <$mt:Var name="contents"$>
+
+
+<!-- start footer --><hr />
+
+    <p><__trans phrase="_POWERED_BY"> and the Vanilla template set</p>
+
+</body>
+</html>
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/entry.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/entry.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/entry.mtml (revision 1220)
@@ -0,0 +1,12 @@
+<mt:IncludeBlock module="Wrapper">
+
+    <h1><$mt:EntryTitle$></h1>
+    <p><__trans phrase="By [_1] on [_2]" params="<$mt:EntryAuthorLink$>%%<$mt:EntryDate format="%x %X"$>"></p>
+    <mt:If tag="EntryBody">
+        <$mt:EntryBody$>
+    </mt:If>
+    <mt:If tag="EntryMore" convert_breaks="0">
+        <$mt:EntryMore$>
+    </mt:If>
+
+</mt:IncludeBlock>
Index: trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/tag_cloud.mtml
===================================================================
--- trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/tag_cloud.mtml (revision 1220)
+++ trunk/Vanilla/plugins/Vanilla/templates/vanilla+widgets/tag_cloud.mtml (revision 1220)
@@ -0,0 +1,12 @@
+<mt:If tag="Tags">
+<div class="widget-tag-cloud widget">
+    <h3 class="widget-header"><__trans phrase="Tag Cloud"></h3>
+    <div class="widget-content">
+        <ul>
+    <mt:Tags top="20">
+            <li class="rank-<$mt:TagRank max="10"$>"><a href="javascript:void(0)" onclick="location.href='<$mt:TagSearchLink encode_js="1"$>';return false;" rel="tag"><$mt:TagName$></a></li>
+    </mt:Tags>
+        </ul>
+    </div>
+</div>
+</mt:If>
Index: trunk/Vanilla/README.txt
===================================================================
--- trunk/Vanilla/README.txt (revision 929)
+++ trunk/Vanilla/README.txt (revision 1220)
@@ -61,4 +61,7 @@
         - Page Detail
         - Search Results Template
+        - Notes:
+            - Can someone explain how mt-search determines which search template to use for rendering results?  If itâs by the value of the IncludeBlogs input, which blog id takes precedence? Does the new mt-search still support the ExcludeBlogs input?
+            - Itâs IncludeBlogs.  It uses the first blog_id in the comma separated list.  And yes, ExcludeBlogs does work as it has been before.
 
     9. Vanilla + Assets
@@ -66,4 +69,24 @@
         - lastn entries on Homepage with the first asset added to each as 70 pixel square
         - Entry Detail with assets in entries
+
+    10. Vanilla + Widgets
+        - Homepage with one widget set and individually included widget:
+            - Search
+            - Tag Cloud
+            - Monthly Archives
+            - Recent Entries
+            - Page Listing
+            - About Site
+        - Entry Detail with a second widget set and individually included widget:
+            - Search
+            - Tag Cloud
+            - Monthly Archives
+            - About Site
+    11. Vanilla + Scoring
+        
+        Tip: to remove all scoring for a particular namespace, use this SQL command:
+        
+            delete from mt_objectscore where objectscore_namespace = 'NAMESPACE';
+        
     
 ## INSTALLATION ##
