Angular:

http://angularjs.org/

by bennekrouf

HTML

<div requirelogin>
    <div like>
          <button ng-click="sayILike()">Say like !</button>
          <button ng-click="login()">Login</button>
      </div>
</div>

JavaScript

var myApp = angular.module('myApp',[])

.directive('requirelogin', function() {
    return {
        scope: true,
        controller: function() {
            var isLogged = false;
            
            this.isLogged = function() {
                if(isLogged) return isLogged; 
                alert("You are not logged!");
            };
            
            this.login = function(){
                isLogged = true;            
            };
        }
    };
})

.directive('like', function() {
    return {
        scope: true,
        require: '^requirelogin',
        link: function(scope, element, attrs, loginCtrl) {
            scope.loginCtrl = loginCtrl;
            scope.sayILike = function(){
                if(scope.loginCtrl.isLogged()){
                    alert('I like');
                }
            };
            
            scope.login = function(){
                scope.loginCtrl.login();
            };
        }
    };
});