<!DOCTYPE html>
<html>

  <head>
    <link rel="stylesheet" href="http://code.ionicframework.com/0.9.27/css/ionic.min.css">
    <script src="http://code.ionicframework.com/0.9.27/js/ionic.bundle.js"></script>
    
    <script src="app.js"></script>
    <script src="controllers.js"></script>

  </head>

  <body ng-app="picUploader" animation="slide-left-right-ios7">
    <ion-nav-bar type="bar-royal"
      animation="nav-title-slide-ios7"
      back-button-type="button-icon button-clear"
      back-button-icon="ion-ios7-arrow-back"></ion-nav-bar>

    <ion-nav-view></ion-nav-view>
  </body>

</html>
angular.module('picUploader', ['ionic', 'starter.controllers'])


.config(function($stateProvider, $urlRouterProvider) {

  $stateProvider

    // setup an abstract state for the tabs directive
    .state('tab', {
      url: "/tab",
      abstract: true,
      templateUrl: "tabs.html"
    })

    // the select image tab has its own child nav-view and history
    .state('tab.select-image', {
      url: '/select-image',
      views: {
        'select-tab': {
          templateUrl: 'select-image.html',
          controller: 'SelectPicCtrl'
        }
      }
    })

    .state('crop-image', {
      url: '/crop-image/:imageURI',
      templateUrl: 'crop-image.html',
      controller: 'CropImgCtrl'
    });

  // if none of the above states are matched, use this as the fallback
  $urlRouterProvider.otherwise('/tab/select-image');

});
angular.module('starter.controllers', ['ionic'])

// A simple controller that fetches a list of data from a service
.controller('SelectPicCtrl', function($scope, $state) {

  $scope.launchPhotoLibrary = function() {
    if (navigator.camera) {
      navigator.camera.getPicture( cameraSuccess, cameraError,
                                 { sourceType: navigator.camera.PictureSourceType.PHOTOLIBRARY } );
    } else {
      $scope.imagestring = encodeURIComponent("http://lorempixel.com/200/400/");
    }
    $state.go('crop-image', {imageURI:$scope.imagestring});
  };
  function cameraSuccess(imageURI) {
    // hack until cordova 3.5.0 is released
    if (imageURI.substring(0,21)=="content://com.android") {
      var photo_split=imageURI.split("%3A");
      imageURI="content://media/external/images/media/"+photo_split[1];
    }
    $scope.image.src = imageURI;
  }
  function cameraError(message) {
    alert('Failed because: ' + message);
  }

})


// controller for image cropping view
.controller('CropImgCtrl', function($scope, $stateParams) {
  $scope.imagestring = decodeURIComponent($stateParams.imageURI);
});
<ion-view title="Select Image">
  <ion-content has-header="true" has-tabs="true" class="center-contents">
    <button class="button button-block button-energized padding-vertical" ng-click="launchPhotoLibrary()">
      upload picture
    </button>
  </ion-content>
</ion-view>
  <ion-nav-bar class="bar-royal">
    <ion-nav-back-button class="button-icon">
      <i class="ion-close medium"></i>
    </ion-nav-back-button>
  </ion-nav-bar>
<ion-nav-view title="crop image!" >
  <ion-content has-header="true" padding="true">
    {{ imagestring }}
    <img src="{{ imagestring }}" />
  </ion-content>
</ion-nav-view>
<ion-tabs tabs-style="tabs-icon-top" tabs-type="tabs-default">


  <!-- Pets Tab -->
  <ion-tab title="Select Pic" icon="icon ion-image" href="#/tab/select-image">
    <ion-nav-view name="select-tab"></ion-nav-view>
  </ion-tab>


  <!-- Adopt Tab -->
  <ion-tab title="Adopt" icon="icon ion-heart" href="#/tab/adopt">
    <ion-nav-view name="adopt-tab"></ion-nav-view>
  </ion-tab>


  <!-- About Tab -->
  <ion-tab title="About" icon="icon ion-search" href="#/tab/about">
    <ion-nav-view name="about-tab"></ion-nav-view>
  </ion-tab>


</ion-tabs>