Installationsvorbereitung Tipp für eckige Richtlinien (Oder, Bindestriche überall wieder lieben lernen)

Ich habe ein paar apps die Make-$http.get() Anrufe und ich wollte eine aufbereitete Fehlermeldung mit hässlichen Fehlerdetails versteckt zeigen können, aber zugänglich.  Im Grunde, Dies:

image

Und dann klickt der Benutzer auf den Fehler, Sie sehen mehr info:

image

Einfache Dinge.  Da genaue dieselbe potentielle Fehler in der Verwaltung Bildschirm sowie dem Endbenutzer-Bildschirm angezeigt werden können, Es fordert eindeutig eine benutzerdefinierte eckig Richtlinie.  ICH  habe das gefunden herausragende Serie der Artikel (http://weblogs.asp.net/dwahlin/creating-custom-angularjs-directives-part-i-the-fundamentals) durch die große Dan Wahlin.  Nach seinen Rat, Ich habe sehr schnell ein <Hallo-Welt> Richtlinie und zogen an meinen komplexer Fehler-Anzeige-Rakel. Ich habe ein paar Probleme mit dieser komplexeren Richtlinie getroffen.  Glücklich, irgendwie durch Zufall, Ich erzählte WebStorm (der Editor verwende ich in diesen Tagen) dass die JS-Datei eine eckig-Datei war und es hat mir geholfen herauszufinden, das Problem.  Dies ist der Code für die Richtlinie selbst:

Angular.Module("CDLApp").Richtlinie("GeneralCdlErrorHandler", Funktion() {

Rückkehr {
einschränken: "E",
Ersetzen: wahr,

Anwendungsbereich: {
retrieveLastConfigurationError: "&"
},

Vorlage:
'<Div Class = "Warnung Warnung-Gefahr" Rolle = "Warnung" ng-Init = "DoShowExpandedErrorDetails = True" ng-Karte = "RetrieveLastConfigurationError()">' +
"Gab es ein i/o-Fehler oder andere Fehler. Dies geschieht in der Regel, weil Konfigurationsdatendatei nicht sein könnte " +
' gefunden oder die Konfigurationsdatei enthält falschen Informationen (wie verweisen auf einer Dokumentbibliothek " +
"das ist nicht vorhanden).' +
' <BR />' +
' <Div ng-Karte = "DoShowExpandedErrorDetails">' +
' <a Href = "#" ng-Klick = "DoShowExpandedErrorDetails = ! DoShowExpandedErrorDetails">' +
"Klicken Sie hier, um Details auszublenden." +
' </eine>: ' +
' <BR />' +
' <Pre>{{retrieveLastConfigurationError() | JSON}}</Pre>' +
' <BR />' +
' </div>' +
' <Div ng-Karte = "!DoShowExpandedErrorDetails">' +
' <a Href = "#" ng-Klick = "DoShowExpandedErrorDetails = ! DoShowExpandedErrorDetails">' +
"Klicken Sie hier, um ausführliche Fehlerinformationen zu erweitern." +
' </eine>' +
' </div>' +
'</div>'
};
});

Im Grunde, Ich erstelle ein neues Element namens "GeneralCdlErrorHandler".  Es benötigt Zugriff auf eine Funktion namens RetrieveLastConfigurationError und, in das Bereichsobjekt verarbeitet wird.  Ich hätten wahrscheinlich nur den übergeordneten Bereich, aber das fühlt sich faul.  Wenn jemand meint, dass ich das getan haben, sollten, Ich würde gerne darüber in den Kommentaren zu hören.

Dies war alles in Ordnung, aber ich war nicht immer alles.  Keine Fehler in der Konsole aufgetaucht (mindestens einmal bekam ich alle Sx-Fehler, die ich auf dem Weg erstellt).  Ich verstehe einfach keine Ausgaben, die aus der Richtlinie.  Ich ging und fügte Sie statischen Text vor der ng-Karte-Richtlinie und ich * habe * zu erhalten, die. Das machte mich glauben, dass man vielleicht die Richtlinie war nicht implizit erstellen Sie neue Vars wie "DoShowExpandedErrorDetails" oder ein "ng-Init" drin. 

Ich ging zurück in den HTML-Code zu sehen, hätte ich einen Typ und diesmal WebStorm mir geholfen.  Ich hatte in der RetrieveLastConfigurationError-Funktion wie folgt übergeben worden:

<Allgemein-Cdl-Fehler-Handler retrieveLastConfigurationError="CDLController.retrieveLastConfigurationError()">
</Allgemein-Cdl-Fehler-handler>

Aber es wirklich notwendig, um das:

<Allgemein-Cdl-Fehler-Handler abrufen-letzte-Konfiguration-Fehler = "CDLController.retrieveLastConfigurationError()">
</Allgemein-Cdl-Fehler-handler>

WebStorm war klug genug, zu wissen, dass es getrennt werden musste.  Hätte es diesen Tipp versorgt, Ich würde wahrscheinlich noch diese Fehlerbehebung werden Lächeln.  Spaß mal!

Der Trick ist dies: nicht nur ist der Richtlinie Elementnamen getrennt, So sind alle Attribute, die Sie hinzufügen.  Sobald ich die Bindestriche hinzugefügt, Sie alle wirkten groß.  Dan's Tutorial zufällig einzelne Kurznamen verwenden, Also habe nicht ich die Verbindung herstellen..

Hoffe, das jemand hilft.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

IE9 Wirklich mag es nicht wenn man eine Verknüpfung mit Ihrer <Spannweite> Schlagwörter

Ich habe eine schlechte Angewohnheit, mit Chrome ganze Zeit verfallen.  Es ist "schlecht", weil die Sachen, die ich entwickeln wirklich braucht, um auf eine Menge von anderen Web-Browsern laufen, einschließlich, Leider IE8.  Mein Arbeit Laptop hat IE9 Standard aus irgendeinem Grund) und ich tat nur eine schnelle prüfen, welche Dinge... und wie es aussah war nicht schön.  Zum Beispiel:

image

Es hat * sollte * wie folgt aussehen:

image

 

Es war nicht nur aus, aber meine Click-Ereignisse waren nicht feuern.  (Die meisten von Ihnen, auf jeden Fall).

Visuell, Es sah aus wie Dinge damit begonnen, aus den Fugen in der Nähe der Link "Advanced Setup" gehen.  Ich grub in diesen Teil des HTML-Codes und festgestellt, dass ich diese Zeile:

<span Class = "Glyphicon Glyphicon-new-Window" />

Das scheint die zulässige syntax ("Chrome-version 40.02214.94 m"ist kein Problem damit). Ich ging und änderte es sowieso, wie gezeigt:

<span Class = "Glyphicon Glyphicon-new-Window"></Spannweite>

Jene fest es.

So ein winziges kleines Ding verursacht so ein riesiges Chaos eines Bildschirms.  Spaß mal.

Dies geschah, um eine schnelle Lösung sein, aber es ist auch die Art von Dingen, die Ihre Wirbelsäule aus Ausrichtung nur bekommt, wenn man es sieht.  Es gibt über 500 Zeilen HTML in dieser kleinen Admin-Funktion und Sie wollen nicht nur finden sich unter diesen Unkraut Graben, je Lächeln.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

HTTP 406 Fehler bei der Verwendung von eckigen $http.get gegen SharePoint-REST-Endpunkte

Update: Marc AD Ndersson wies darauf hin, dieses großartige Stück info: http://Blogs.Office.com/2014/08/13/JSON-Light-Support-Rest-SharePoint-API-Released/. Das erklärt einiges :).

Das ist der schlechteste Titel der einen Blog-Post je! Wie auch immer.

Ich tun in der Regel alle meine Prototypen gegen eine O365-Instanz. Ich habe meine persönliche Instanz, so dass ich nicht besorgt über die Auswirkungen auf jemand anderes sein. Als Nebenwirkung – denken Sie daran, wenn wir für unsere Laptops mit Moos – durchgeführt, um virtuelle Maschinen aufrufen SQL Server, IIS, Entscheidung über Hyper-V-vs. VMWare? Wie auch immer...

Ich hatte eine app mit Angular in diesem Umfeld, das entwickelt, unter anderem, Dies:

$http.Get(serverUrl)
.Erfolg(Funktion(Daten, Status, Header, config) {

Var GetLinksResponse = Daten;

getLinksResponse.value.forEach(Funktion(i) {

// und so weiter und so Schaum

Dies war nur in zwei verschiedenen SharePoint online-Umgebungen adaequat. Jedoch, Wenn es mein Kollege auf eine Cloudshare-Instanz portiert., Er war immer ein HTTP 406 Fehler (Das war das erste Mal habe ich nie, dass man, Also... Yay, Ich vermute). Wir haben ein wenig Forschung und bemerkte, dass die "Accept"-Header Weg war. SharePoint online war vollkommen zufrieden mit:

Akzeptieren: Application/json

Aber die Cloudshare Instanz (Prem ist die SP, auf einem virtuellen Server gehostet) wollte das klassische "promoveaza = verbose" sowie in hinzugefügt:

Akzeptieren: Application/json;promoveaza = verbose

Zu reparieren, Wir haben den Header als solche:

Var-Config = {Header: {
'Akzeptieren': "Application/Json;promoveaza = verbose'
}
};

$http.Get(serverUrl,config)
.Erfolg(Funktion(Daten, Status, Header, config) {

Var GetLinksResponse = Daten;

getLinksResponse.value.forEach(Funktion(i) {

// und so weiter und so Schaum

Entledigte sich die 406, aber auch das Format der Antwort geändert. Es war mehr... ausführlich. (haha!) Weitere Änderungen sind erforderlich, und hier ist das Endergebnis:

Var-Config = {Header: {
'Akzeptieren': "Application/Json;promoveaza = verbose'
}
};

$http.Get(serverUrl,config)
.Erfolg(Funktion(Daten, Status, Header, config) {

Var GetLinksResponse = Daten;

getLinksResponse.d.results.forEach(Funktion(i) {

// und so weiter und so Schaum

Es stellte sich nur in einem 30 Minute Problem für uns, so dass wir Glück gehabt. Hoffentlich findet jemand diese nützliche.

</Ende>

How-to: Aktivieren Sie mehrere kantige SharePoint Webparts auf der gleichen Seite

Dieses Blog Beiträge wird beschrieben, wie Sie mehrere haben können Angular.js basiert SharePoint-Webparts (verwiesen durch ein Inhalts-Editor-Webpart) auf der gleichen Seite. Ich rufe ein Inhalts-Editor-Webpart (CEWP) Das verweist JavaScript gebaut, mit dem Angular.js-Framework einen "Angular Webpart."

Angular des bootstrap-Prozess ist super einfach und gerade über jedes Beispiel finden Sie auf dem Internets geht ungefähr so:

<HTML ng-app = "MyApp">

<bla /><bla /><bla />

</HTML>

Dieses gliedert sich, jedoch, Wenn Sie, aktivieren Sie mehrere CEWP, die mehrere kantige Webparts auf einer Seite darstellt möchten.. Angular werden nur automatisch gegen die erste ng-app-Richtlinie es Funde bootstrap – mindestens ab abgewinkelte Ausführung 1.3.6. Die Lösung ist ziemlich einfach-manuell bootstrap Code stattdessen. Die oben genannten Änderungen jetzt sowas:

<Körper>
<d
IV Id =”bootstrapHere” ng-Controller =”MyController als theController”>
<bla /><bla /><bla />
</div>
</Körper>

<Script Src =”//AJAX.googleapis.com/AJAX/libs/angularjs/1.3.6/Angular.js”></Skript>

<Skript>
Angular.Bootstrap(Angular.Element(Document.getElementById(“bootstrapHere”)),["MyApp"]);
</Skript>

Im Grunde, anstelle von ng-app auf dem Element dazu Ihre bootstrapping, Sie schlagen eine ID auf dieses element. Dann, Verwenden Sie den bootstrap() Methode für eckige verarbeiten selbst das bootstrapping Steuern zur Laufzeit. Ich habe dies mit drei verschiedenen eckig Webparts auf der gleichen Seite getestet und es funktioniert einen Charme.

</Ende>

undefinedOnnieren Sie meinen Blog ab.

Folgen Sie mir auf Twitter bei http://www.twitter.com/pagalvin

Die New Jersey-Kraftfahrzeug-Kommission nimmt ein weiteres Opfer

Also, Mein Sohn ist ein wenig überfällig, seinen Führerschein zu erhalten.  Gestern, in der Mitte morgen, He LKWs mit bis zu Oakland NJ zu bekommen.  Er bekommt es, füllt Sie seinen Papierkram ist eine unfreie Genehmigung ausgestellt und erfährt, dass er jetzt gehen muss, um ein weiterer MVC-Lage, seine Augen-Test zu machen.  Weil, offenbar, hoch qualifizierte Auge Tester Leben nicht nur überall., NJ-MVC muss also gehen, wo das Talent.  Oder, Vielleicht deshalb, weil sie eine hamiltonsche Philosophie der Konsolidierung folgen?  Viel wie Hamilton Finanz- und Herstellung fühlte Konsolidierung entscheidend für die künftige wirtschaftliche Stärke der Republik waren, Vielleicht fühlt sich NJ MVC sie Auge Prüfung Talent für die künftige Stärke von NJ MVC konsolidieren müssen?  Vielleicht ist es Teil eines Plans der unaussprechliche?  Leider, Ich habe nur Fragen zu diesem Thema und keine Antworten. 

Folgende Oakland-Beratung, Frau und Sohn LKW ihren Weg bis in Lodi, NJ mit normalem Genehmigung zu Lodi.  Lodi möglicherweise das Schlimmste abstellen von jedem NJ MVC-Standort.  Und, Da sie auch einige der knappen host begehrte noch hoch Auge Prüfung Maschinen und Auge testen Profis, Sie gewinnen Supplicants aller Couleur, Schattierungen, Bildung und Schaulustige.  Mein Sohn arbeitet seinen Weg durch das Labyrinth von Linien und Anweisungen von den "never-look-them-in-the-eye" NJ MVC-Fachleuten und schließlich auf das Auge Prüfung Linie ankommen.  Sie lernen jetzt, dass die Oakland-Person auf der unfreie ermöglichen einen Fehler gemacht.  Er falsch eingegeben, die Sozialversicherungsnummer, setzen eine eine "8" anstelle von "2" in einer der Ziffern.  NJ DMV-Person wusste dies, denn wenn sie das falsche SS# im Computer zog, es zeigen nicht meines Sohnes Namen.  Frau und Sohn sagen, "Ach, Das ist die falsche Nummer, Du brauchst es eine '2' statt '8'."  Was viele, Vielleicht jedes einzelner gerecht denkender Mensch würde erwarten, dass zu diesem Zeitpunkt ist für die NJ MVC-Person einfach die Zahl korrigieren sie einfach in den Computer eingegeben.  Ha! Narr!  Nr., Stattdessen wurde er gebeten, seine Sozialversicherungskarte bereitgestellt.  Lassen Sie uns für einen Augenblick abschweifen und berücksichtigen, dass um die unfreie in erster Linie erhalten, Er hatte bereits einen US-Pass sowie eine New-Jersey Geburtsurkunde und Brief an ihn an seine Privatadresse zur Verfügung gestellt.   Seine Mutter ist bei ihm, teilt seinen Namen, seine Adresse, seine Höhe (aber leider, nicht seinem Geschmack in Science-Fiction-Filmen) ... you name it., Mein Sohn ist gut und wirklich identifiziert, wie das Leben lang Wohnsitz dieser US-Staaten und in der Tat, New Jersey selbst durch sonstige Maßnahmen, die man sich vorstellen kann.  Ob die NJ MVC-Person einfach dem Fehler, die behoben haben würde machten der Oakland-person, der Computer würde mein Sohn Informationen hochgezogen haben und würde das Ende der Geschichte gewesen sein.  Aber auch hier, Narr!  Sie können nicht. Stattdessen, NJ-MVC bestehen jetzt auf eine Sozialversicherungskarte. 

Also, Frau und Sohn gehen nach Hause, um es zu erhalten und zurück.  Und am Ende, Er erhält seine Genehmigung.

Das ist drei verschiedene Ausflüge in NJ MVC an einem Tag.  Um seine Erlaubnis zu bekommen.  Es dauerte fast 6 Stunden von Anfang bis Ende.  Dies ist mein Sohn Einführung zu fahren die Garden State.

NJ-MVC ist klar gebrochen. 

</Ende>

Eckige nicht in IE9 Bootstrap

Ich habe mit Angular.js für die letzte lange während und für das Leben von mir gespielt, um, Meine eckig apps im IE9 starten konnte nicht abgerufen werden.  Sie alle arbeiten gut in IE11 aber IE9 würde nur zeigen, die geschweiften Klammern und ähnliche bits.

Ich suchte und fand jemand beschweren sich über sein Problem.  Es funktionierte gut in Chrom, IE11, nicht nur IE9.

Ich war durch die Tatsache geworfen, dass die IE-Konsole mir Störungen wie diese gab:

SEC7111: HTTPS-Sicherheit ist durch Res gefährdet.://ieframe.dll/forbidframing.htm

Diesen Fehler hatte mich dachte, gab es ein Problem, das Herunterladen der eckig oder anderen Bibliotheken, die ich brauchte.  Wie sich herausstellt, Dies war nicht das Problem.

Durch Stochern des internets, Ich fand schließlich heraus, dass die Phrase, die, der ich brauchte, um die Suche nach "bootstrap" war und es schien, als das bootstrapping versagt wurde.  Am Ende, Mein Problem war, dass ich verziert, hatte meine <HTML> -Tag mit dem Attribut ng-app, wie in:

<HTML ng-app = "MatrixApp">

Gut, Das ist nicht für IE9 funktioniert.  Stattdessen, Ich gewickelt den Rest des HTML-Codes in der <Körper> innerhalb eines Div und Verweise MatrixApp so.

Problem gelöst.

Ich hoffe das spart jemand einige Trauer.

</Ende>

Erstellen von benutzerdefinierten SharePoint-Formen ohne eine Masterseite

Mein Kollege, Lauren Jones, eine schöne Anleitung schrieb zum Erstellen einer benutzerdefinierten Dateneingabeformular mithilfe von SharePoint Designer.  Das ist nicht gerade "Neues unter der Sonne", aber es gibt etwas wie Drehung.  In ihren Worten:

Erstellen von benutzerdefinierten Formularen ist direkt in SharePoint Designer zu tun, Navigieren Sie zu Ihrer Liste und auf der Multifunktionsleiste-Menü wählen Sie ' Listenform’ und neue Formularvorlage erstellen.

Dies funktioniert gut, wenn Sie das Formular an Sie angeschlossen werden soll Masterseite, Aber was ist, wenn Sie den Anwendungsfall der Erstellen eines Formulars, das wird in einem Popupfenster oder ist Standalone ohne das SharePoint-Chrom. Ich hatte genau diesen Anwendungsfall, Ich wollte auf Custom style ein Formular, dann verwenden Sie dieses Formular in einem Popup Div Inline innerhalb einer Seite.

Nicht verzweifeln, Es gibt einen Weg, dies zu tun, der nicht so intuitiv ist aber relativ einfach zu bewerkstelligen.

Lesen Sie alle Details hier: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=55&rtitle=customforms&rsrouce=pgblog und Sie können es in Aktion sehen, indem Sie auf den Link "kontaktieren Sie uns für weitere Informationen", auf die Dienste auf der Seite Dienste unserer Big Apple-SharePoint-Website (http://www.bigapplesharepoint.com/services).

Lauren schreibt viele gute Sachen auf UX und branding.  Sie können mehr von hier und schreibe hier sehen: http://www.bigapplesharepoint.com/team?showExpertName=Lauren%20Jones.

</Ende>

Störende Design und betrunken auf der Feature-Coolaid

Mein Kollege, Lauren Jones (https://twitter.com/laurenjones02) schrieb einen kurzen Artikel, reden, wie übermäßig komplexe SP-Rollouts sehr hart an Endbenutzer sind.  Es ist irgendwie klar, in einer Weise, aber es ist einfach für mich zu sagen, dass, nachdem ich eine Menge von komplexen Rollouts Dinge unvorbereitet Endbenutzern im Laufe der Jahre organisierte habe.

Hier ist der Schlüssel "Graph:

Vor fünf Jahren, Wenn ich SharePoint zu einer Organisation zum ersten Mal mit dem primären Ziel des Werdens die Collaboration-Plattform und ersetzen Aktie Laufwerke rollte, Wir stellten auch soziale und News über RSS-feeds, Meine Websites und profile, und tagging folksonomy. Unnötig zu sagen, Das war viel für Endbenutzer zur Übernahme in ein Schlag. Zwar gab es Erfolge mit Annahme rund um Dokumentenmanagement und profile, RSS und tagging war weniger erfolgreich und das war wirklich aufgrund der Kommunikation zwischen Change Management und training. Wir konnten es auf einmal nicht.. Nehmen weniger ist mehr Ansatz und Freigabe von Funktionalität in Phasen ist einfacher für Endbenutzer zu akzeptieren und anzunehmen.

Dieser Artikel erinnert an ein weiteres Stück las ich von Kris Gale mit Bezug zu jammern die Feature-set, “Kosten der Ingenieure und Produktmanager nicht der Ansicht.”

Wenn Sie eine Horrorgeschichte oder Erfolgsgeschichte zu teilen, Ich hoffe, dass Sie in den Kommentaren auf der Big Apple-Website tun werde über.

</Ende>

Weekly Roundup – Juli 13, 2014

I für Xpost hier am vergangenen Wochenende. 

Hier ist die 3RD Artikel in einer Serie, wo ich schreibe über Blog-Posts und online-Artikeln, die in der letzten Woche oder so besonders interessant für mich waren.  Diese Woche-Eintrag in der Serie hebt zwei CodePlex-Projekte für einen potenziellen InfoPath-Ersatz und für die Verwaltung von Berechtigungen in SharePoint, News über Satelliten, noch eine andere JavaScript-Framework und eine Anspielung auf Ada Babbage und ihre Rolle bei der Berechnung der Geschichte.

Sie können ihn hier lesen.: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=93&rsource=pgblog&rtitle=roundup

</Ende>

Blick CAML-Abfragen in Echtzeit mit ULS Viewer

Mein Kollege, Ashsih Patel, schrieb sich eine schöne Anleitung beschreiben, wie die CAML hinter verschiedenen SP siehe abfragt, die geschehen im Geschäftsgang in Echtzeit mit dem ULS-Viewer.

Hier ist das intro:

Wollten Sie immer wissen, welche CAML-Abfragen von SharePoint Server ausgeführt werden?

Gut, für die Problembehandlung und Zweck lernen, Es ist keine schlechte Idee. Letztendlich, SQL Profiler hat uns eine Menge Probleme beheben geholfen.

Möglicherweise gibt es Produkte gibt, aber ich dachte, einen Weg ohne Ausgaben Dollar extra zu tun! Und hier ist es...

Sie können die ganze Sache hier lesen: http://www.bigapplesharepoint.com/pages/View-An-Insight.aspx?BlogID=68&rsource=pgblog&rtitle=caml.

</Ende>