Well structured AngularJS modules mimic the architecture of Drupal Services 3.x. for your next AngularJS / Ionic Drupal Headless / Decoupled project
Clone or download
Latest commit 82b0c8a Aug 15, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist merge and build Aug 15, 2016
docs implement ngDocs gulp task Mar 13, 2016
gulp implemented filed and images paths in constant Mar 24, 2016
src Merge branch '2.2.8' Aug 15, 2016
.gitignore created bundle gulp taks Oct 14, 2015
README.md Update README.md May 10, 2016
bower.json bumped version Jul 20, 2016
gulpfile.js moved file Mar 13, 2016
package.json bumped version Jul 20, 2016

README.md

Angular/Ionic Drupal7 Services

Well structured angular modules mimic the architecture of Drupal Services 3.x

Bower version npm version
Package Quality

Angular Drupal7 Services is a REST client for AngularJS, which allows you to user predefined functions when communication with Drupal's api endpoints.
Unlike the other project focusing on the same topic, Angular Drupal7 Services is precisely organized around the Drupal Services 3.x architecture and naming conventions.

It optionally provides events next to the common used promise approach.

A full set of Drupal's resources is available, and all basic workflow's depending to authentication or helpers for CRUD operations are also provided as a set of extra modules.

##DEMOS Check out the Drupal-API-Explorer for a full demo
Or check out the sample implementation for Ionic-Headless-Drupal

Get Started

(1) Get Angular Drupal7 Services:

  • clone & build this repository
  • download as .zip
  • or via npm: by running $ npm install ng-drupal-7-services from your console
  • or via Bower: by running $ bower install ng-drupal-7-services from your console

(2) Include ng-drupal-7-services.js in your index.html.

(3) Add 'd7-services' to your main module's list of dependencies

API Documentation (!!!in progress!!!)

Quickstart

(1) Insert the ng-drupal-7-services.js bundle into your index.html file.

<!doctype html>
<html ng-app="myApp">
<head>

    <script src="bower_components/angular/angular.min.js"></script>
    <!-- ng-drupal-7-services and it's dependencies-->
    <script src="bower_components/angular-cookies/angular-cookies.min.js"></script>
    <script src="bower_components/ngstorage/ngStorage.js"></script>
    <script src="bower_components/ng-drupal-7-services/dist/ng-drupal-7-services.js"></script>

    <script>
        angular.module('myApp', ['d7-services'])
        .config(function configFunction(DrupalApiConstant) {
                		//configure your drupal instance
                		DrupalApiConstant.drupal_instance = 'http://your.projects.domain/';
                	});
    </script>
    ...
</head>
<body>
    ...
</body>
</html>

(2) Using the services.

angular
    angular.module('myApp')
    .controller('NodeController', ['NodeResource', 'NodeChannel', function(NodeResource, NodeChannel){

        //fire request
         var retrievePromis = NodeResource.retrieve({nid:1});

        //using promise.then callbacks
        retrievePromis.then(function(data) { ... },function(error) { ... });

        //subscribing to events
        //This could happen in another directive/controller too
        NodeChannel.subRetrieveConfirmed($scope, function(data){ ... });
        NodeChannel.subRetrieveFailed($scope, function(error){ ... });

    }]);

##Configuration Basically all configurable options are wrapped in an angular constant. IF you changed any of Drupal's default settings adopt the constants in DrupalApiConstant in Angular's config phase as shown above. Find all available options in the API Documentation under Commons/DrupalApiConstant.

  angular.module('myApp', ['d7-services'])
        .config(function configFunction(DrupalApiConstant) {
           ...
           //your changes here
           ...
        });

##Supported Drupal Modules Here is a list of supported Drupal services 3.x modules:

##Extra Resources Following extramodules are provided for simplifing authentication routing and viewcomposition

  • Authentication authenticaion workflows and helper functions

  • AccessControl handle access for routing and actions

  • Directives show hide elements by role or accesslevel

  • Drupal Services

    • Comment Resource
      • Retrieve
      • Create
      • Update
      • Delete
      • Index
      • CountAll
      • CountNew
      • Retrieve
    • File Resource
      • Retrieve
      • Create
      • Delete
      • Index
      • Create_raw
    • Node Resource
      • Retrieve
      • Create
      • Update
      • Delete
      • Index
      • Files
      • Comments
      • Attach_file
    • System Resource
      • Connect
      • Get_variable
      • Set_variable
      • Del_variable
    • TaxonomyTerm Resource
      • Retrieve
      • Create
      • Update
      • Delete
      • Index
      • SelectNodes
    • TaxonomyVocabulary Resource
      • Retrieve
      • Create
      • Update
      • Delete
      • Index
      • GetTree
    • User Resource
      • Retrieve
      • Create
      • Update
      • Delete
      • Index
      • Login
      • Logout
      • Token
      • Request_new_password
      • Register
      • Cancel
      • Password_reset
      • Resend_welcome_email
  • Drupal Services Views

    • Views Resource
      • Retrieve
  • Drupal Geocoder -Views Geocoder

    • Retrieve
    • Index
  • Drupal Services Menu

    • Menu Resource
      • Retrieve
  • Drupal Services Definition

    • Definition Resource
      • Index
  • Extra Resources

    • Authentication service
      • storeTokenData
      • deleteTokenData
      • refreshToken
      • storeSessionData
      • deleteSessionData
      • getConnectionState
      • setConnectionState
      • getCurrentUser
      • setCurrentUser
      • refreshConnection
      • getLastConnectTime

Extra Services

##AccessControl

  • roles
  • accessLevels
  • authorize

Directives

  • accessLevel => show hide elem based on role and acessLevel

Setup for Drupal

  • Start with a fresh Drupal7 installation.

###Services

  • install Drupal Services
  • Go to admin/structure/services/add and create a new endpoint with following settings:
    • machine name: api
    • server: REST
    • path: api
    • debug: unchecked
    • session authentication: checked
  • Then click the edit resources link and open the resources tab. Now every resource you like by check box.
  • Then click Save
  • Click the Server tab
  • For Response formatters check following:
    • json
  • For Request parsing check following:
    • application/json
    • application/x-www-form-urlencoded
    • multipart/form-data (for file upload)
    • text/xml
  • Click Save.
  • Flush all of Drupal's caches.

###Setup for CORS

  • install CORS
  • Go to admin/config/services/cors and paste following into the textarea

api/v1*|<mirror>|POST,PUT,GET,DELETE|Content-Type,Authorization,X-CSRF-TOKEN|true

#Links Testing resources on a test server => https://www.drupal.org/node/1447020