Copied to clipboard

Flag this post as spam?

This post will be reported to the moderators as potential spam to be looked at


  • Desley 44 posts 169 karma points
    Apr 23, 2014 @ 10:45
    Desley
    1

    Dashboard.config

    Hi everyone,

    I was wondering if it is possible to load a .cshtml or controller so I can easily use razor for my dashboard in Umbraco 7. All the examples I could find are outdated.

    My config looks like below:

    <section alias="StartupDashboardSection">
        <areas>
          <area>content</area>
        </areas>
        <tab caption="Dashboard">
          <access>
            <grant>admin</grant>
          </access>
          <control showOnce="true" addPanel="true" panelCaption="">
                    views/dashboard/default/customdashboard.cshtml
                </control>      
        </tab>
      </section>
    

    Giving me the following error:

    Authorization error: Unauthorized access to URL: views/dashboard/default/customdashboard.cshtml

    If I load a regular .html file it works fine.

    Any ideas?

  • Jan Skovgaard 11280 posts 23678 karma points MVP 11x admin c-trib
    Apr 23, 2014 @ 11:00
    Jan Skovgaard
    1

    Hi Desley

    If I'm not mistaken the dashboard section is now using Angular so I don't think you can use .cshtml for creating them. I can see that the "changepassword.html" is referring to som angular controllers so that is probably the way to go about it.

    Hope this helps.

    /Jan

  • Desley 44 posts 169 karma points
    Apr 23, 2014 @ 12:22
    Desley
    0

    Thanks. I suppose there aren't any examples to be found with the current conditions?

  • Jan Skovgaard 11280 posts 23678 karma points MVP 11x admin c-trib
    Apr 23, 2014 @ 12:38
    Jan Skovgaard
    1

    Hi Desley

    Not that I know of unfortunately...

    /Jan

  • Desley 44 posts 169 karma points
    Apr 24, 2014 @ 13:47
  • Jan Skovgaard 11280 posts 23678 karma points MVP 11x admin c-trib
    Apr 24, 2014 @ 14:00
    Jan Skovgaard
    0

    Hi Desley

    Thanks for sharing - Had not seen that very useful blog-post by Dirk. Just bookmarked it for a later read :)

    Mind sharing the code for your solution as well?

    /Jan

  • Desley 44 posts 169 karma points
    Apr 28, 2014 @ 10:20
    Desley
    104

    There are probably better ways but this is all I could come up with as a beginner.

    package.manifest

    {
        propertyEditors:
        [ 
            {
                alias: "Aneto.Dash",
                name: "Aneto Dashboard",
                editor:
                {
                    view: "~/App_Plugins/Aneto/DashboardAd.html"
                }
            }
        ],
    
        javascript:
        [
            "~/App_Plugins/Aneto/Aneto.Ad.controller.js",
            "~/App_Plugins/Aneto/Aneto.Ad.resource.js"
        ]
     }
    

    DashboardAd.html

    <link href="/css/dashboard.css" rel="stylesheet" />
    <script src="Aneto.Ad.controller.js"></script>
    
    <div ng-controller="Aneto.DashController">
    
        <div class="DashboardAdvertenties">
            <h2><img src="/images/icons/Pages-icon.png" width="35" height="35" alt="" /> Advertenties</h2>
            <ul>
                <li>Totaal Aantal Advertenties: <span class="DashboardNr"> {{ TotaalAds }} </span></li>
                <li>Aantal Open Advertenties: <span class="DashboardNr"> {{ TotaalOpenAds }} </span></li>
                <li>Aantal Gesloten Advertenties: <span class="DashboardNr"> {{ TotaalGeslotenAds }} </span></li>
                <li>Aantal Reacties: <span class="DashboardNr"> {{ TotaalReacties }} </span></li>
            </ul>
        </div>
    
        <div class="DashboardAdvertenties">
            <h2><img src="/images/icons/Icon-user.png" width="25" height="25" alt="" /> Gebruikers</h2>
            <ul>
                <li>Aantal geregistreerde gebruikers: <span class="DashboardNr"> {{ TotaalGebruikers }} </span></li>
            </ul>
        </div>
    
    </div>
    

    Aneto.Ad.controller.js

    angular.module("umbraco").controller("Aneto.DashController", function ($scope, notificationsService, dashResource) {
    
        dashResource.getAdvertisementModel().then(function (response) {
            $scope.TotaalAds = response.data.TotaalAds;
            $scope.TotaalOpenAds = response.data.TotaalOpenAds;
            $scope.TotaalGeslotenAds = response.data.TotaalGeslotenAds;
            $scope.TotaalReacties = response.data.TotaalReacties;
            $scope.TotaalGebruikers = response.data.TotaalGebruikers;
    
        }, function(response) {
                            notificationsService.error("Error", "Error loading documents");
                            console.log(response.data);
                        });
        }
    );
    

    Aneto.Ad.resource.js

    angular.module('umbraco.resources').factory('dashResource', function ($q, $http) {
        return {
            getAdvertisementModel: function () {
                return $http.get("backoffice/Aneto/AnetoApi/GetAdvertisementModel");
            }
        };
    });
    

    AnetoApiController.cs

    using System.Linq;
    using umbraco;
    using Umbraco.Core.Models;
    using Umbraco.Web;
    using Umbraco.Web.Editors;
    using Umbraco.Web.Mvc;
    using Umbraco.Web.WebApi;
    
    namespace Web.Controllers.Api
    {
        [PluginController("Aneto")]
        [IsBackOffice]
        public class AnetoApiController : UmbracoAuthorizedJsonController
        {
            private int TotaalOpenAdsTemp;
            private int TotaalGeslotenAdsTemp;
    
            public AdvertismentTotalViewModel GetAdvertisementModel()
            {
                IPublishedContent homePage = Umbraco.TypedContentAtRoot().First();
                var advertentieOverview = homePage.Descendants("Advertenties");
                var advertentieItems = advertentieOverview.DescendantsOrSelf("AdvertentieItem");
    
                var alleAdvertentieItems = uQuery.GetDocument(1068).GetChildDocuments();
    
                foreach (var item in advertentieItems)
                {
                    var test = item.Properties.FirstOrDefault(p => p.PropertyTypeAlias == "status").Value.ToString();
                    if (item.Properties.FirstOrDefault(p => p.PropertyTypeAlias == "status").Value.ToString() == "Open")
                    {
                        TotaalOpenAdsTemp = TotaalOpenAdsTemp + 1;
                    }
                }
    
                return new AdvertismentTotalViewModel()
                {
                    TotaalAds = alleAdvertentieItems.Count(),
                    TotaalOpenAds = TotaalOpenAdsTemp,
                    TotaalGeslotenAds = alleAdvertentieItems.Count() - TotaalOpenAdsTemp,
                    TotaalReacties = 0,
                    TotaalGebruikers = umbraco.cms.businesslogic.member.Member.GetAll.Count()
                };
            }
    }
    
        public class AdvertismentTotalViewModel
        {
            public int TotaalAds { get; set; }
            public int TotaalOpenAds { get; set; }
            public int TotaalGeslotenAds { get; set; }
            public int TotaalReacties { get; set; }
    
            public int TotaalGebruikers { get; set; }
        }
    }
    
  • This forum is in read-only mode while we transition to the new forum.

    You can continue this topic on the new forum by tapping the "Continue discussion" link below.

Please Sign in or register to post replies