Add WebCms

This commit is contained in:
2016-11-07 12:56:17 -05:00
parent dfe92218f4
commit 15911f33c0
2750 changed files with 365672 additions and 133 deletions
@@ -0,0 +1,14 @@
<h3>Start here</h3>
<h4>This section contains the tools to add advanced features to your Umbraco site</h4>
<p>From here you can explore and install packages, create macros, add data types, and much more. Start by exploring the below links or videos.</p>
<h4>Find out more:</h4>
<ul>
<li>Find the answers to your Umbraco questions on our <a class="btn-link -underline href="http://our.umbraco.org/wiki" target="_blank">Community Wiki</a></li>
<li>Ask a question in the <a class="btn-link -underline href="http://our.umbraco.org/" target="_blank">Community Forum</a></li>
<li>Find an add-on <a class="btn-link -underline href="http://our.umbraco.org/projects" target="_blank">package</a> to help you get going quickly</li>
<li>Watch our <a class="btn-link -underline href="http://umbraco.tv" target="_blank">tutorial videos</a> (some are free, some require a subscription)</li>
<li>Find out about our <a class="btn-link -underline href="http://umbraco.org/products" target="_blank">productivity boosting tools and commercial support</a></li>
<li>Find out about real-life <a class="btn-link -underline href="http://umbraco.org/training/training-schedule" target="_blank">training and certification</a> opportunities</li>
</ul>
@@ -0,0 +1,20 @@
<h3>Hours of Umbraco training videos are only a click away</h3>
<p>Want to master Umbraco? Spend a couple of minutes learning some best practices by watching one of these videos about using Umbraco. And visit <a class="btn-link -underline" href="http://umbraco.tv" target="_blank">umbraco.tv</a> for even more Umbraco videos</p>
<div class="row-fluid"
ng-init="init('http://umbraco.tv/videos/developer/chapterrss?sort=no')"
ng-controller="Umbraco.Dashboard.StartupVideosController">
<ul class="thumbnails" >
<li class="span2" ng-repeat="video in videos">
<div class="thumbnail" style="margin-right: 20px; padding: 20px;">
<a class="btn-link -underline" target="_blank" href="{{video.link}}" title="{{video.title}}">
<img ng-src="{{video.thumbnail}}" alt="{{video.title}}">
</a>
<a target="_blank" href="{{video.link}}" title="{{video.title}}">
<div style="font-weight: bold; text-align: center; margin: 20px 0 0;">{{video.title}}</div>
</a>
</div>
</li>
</ul>
</div>
@@ -0,0 +1,234 @@
<div id="examineManagement" ng-controller="Umbraco.Dashboard.ExamineMgmtController">
<h3>Examine Management</h3>
<div ng-show="loading">
Loading...
</div>
<h4>Indexers</h4>
<ul ng-hide="loading">
<li class="provider" ng-repeat="indexer in indexerDetails">
<a class="btn-link -underline" href="" ng-click="toggle(indexer, 'showProperties')">
{{indexer.name}}
</a>
<ul ng-show="indexer.showProperties">
<li>
<a href="" ng-click="toggle(indexer, 'showTools')">Index info & tools</a>
<div ng-show="indexer.showTools && indexer.isLuceneIndex">
<div>
<br />
<div ng-show="!indexer.isProcessing && (!indexer.processingAttempts || indexer.processingAttempts < 100)" class="btn-group">
<button type="button" class="btn btn-warning" ng-click="rebuildIndex(indexer)">Rebuild index</button>
<button type="button" class="btn btn-warning" ng-click="optimizeIndex(indexer)" ng-show="indexer.documentCount > 0">Optimize index</button>
</div>
<div ng-show="indexer.isProcessing" class="umb-loader-wrapper" ng-show="actionInProgress">
<div class="umb-loader"></div>
</div>
<div class="error" ng-show="indexer.processingAttempts >= 100">
The process is taking longer than expected, check the umbraco log to see if there have been any errors during this operation
</div>
</div>
<table class="table table-bordered table-condensed">
<caption>&nbsp;</caption>
<tr>
<th>Documents in index</th>
<td>{{indexer.documentCount}}</td>
</tr>
<tr>
<th>Fields in index</th>
<td>{{indexer.fieldCount}}</td>
</tr>
<tr>
<th>Has deletions?</th>
<td>
<span>{{indexer.deletionCount > 0}}</span>
(<span>{{indexer.deletionCount}}</span>)
</td>
</tr>
<tr>
<th>Optimized?</th>
<td>
<span>{{indexer.isOptimized}}</span>
</td>
</tr>
</table>
</div>
</li>
<li ng-show="indexer.indexCriteria.IncludeNodeTypes.length > 0 || indexer.indexCriteria.ExcludeNodeTypes.length > 0 || indexer.indexCriteria.ParentNodeId">
<a href="" ng-click="toggle(indexer, 'showNodeTypes')">Node types</a>
<table ng-show="indexer.showNodeTypes" class="table table-bordered table-condensed">
<tr ng-show="indexer.indexCriteria.IncludeNodeTypes.length > 0">
<th>Include node types</th>
<td>{{indexer.indexCriteria.IncludeNodeTypes | json}}</td>
</tr>
<tr ng-show="indexer.indexCriteria.ExcludeNodeTypes.length > 0">
<th>Exclude node types</th>
<td>{{indexer.indexCriteria.ExcludeNodeTypes | json}}</td>
</tr>
<tr ng-show="indexer.indexCriteria.ParentNodeId">
<th>Parent node id</th>
<td>{{indexer.indexCriteria.ParentNodeId}}</td>
</tr>
</table>
</li>
<li ng-show="indexer.indexCriteria.StandardFields.length > 0">
<a href="" ng-click="toggle(indexer, 'showSystemFields')">System fields</a>
<table ng-show="indexer.showSystemFields" class="table table-bordered table-condensed">
<caption>&nbsp;</caption>
<thead>
<tr>
<th>Name</th>
<th>Enable sorting</th>
<th>Type</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="field in indexer.indexCriteria.StandardFields">
<th>{{field.Name}}</th>
<td>{{field.EnableSorting}}</td>
<td>{{field.Type}}</td>
</tr>
</tbody>
</table>
</li>
<li ng-show="indexer.indexCriteria.UserFields.length > 0">
<a href="" ng-click="toggle(indexer, 'showUserFields')">User fields</a>
<table ng-show="indexer.showUserFields" class="table table-bordered table-condensed">
<caption>&nbsp;</caption>
<thead>
<tr>
<th>Name</th>
<th>Enable sorting</th>
<th>Type</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="field in indexer.indexCriteria.UserFields">
<th>{{field.Name}}</th>
<td>{{field.EnableSorting}}</td>
<td>{{field.Type}}</td>
</tr>
</tbody>
</table>
</li>
<li>
<a href="" ng-click="toggle(indexer, 'showProviderProperties')">Provider properties</a>
<table ng-show="indexer.showProviderProperties" class="table table-bordered table-condensed">
<caption>&nbsp;</caption>
<tr ng-repeat="(key, val) in indexer.providerProperties track by $index">
<th>{{key}}</th>
<td>{{val}}</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
<h4>Searchers</h4>
<ul ng-hide="loading">
<li class="provider" ng-repeat="searcher in searcherDetails">
<a class="btn-link -underline" href="" ng-click="toggle(searcher, 'showProperties')">
{{searcher.name}}
</a>
<ul ng-show="searcher.showProperties">
<li class="search-tools">
<a href="" ng-click="toggle(searcher, 'showTools')">Search tools</a>
<div ng-show="searcher.showTools">
<a class="hide" href="" ng-click="closeSearch(searcher)" ng-show="searcher.isSearching">Hide search results</a>
<br />
<form>
<div class="row form-search">
<div class="span8 input-append">
<input type="text" class="search-query" ng-model="searcher.searchText" no-dirty-check />
<button type="button" class="btn btn-info" ng-click="search(searcher)" ng-disabled="searcher.isProcessing">Search</button>
</div>
</div>
<div class="row">
<label for="{{searcher.name}}-textSearch" class="radio inline">
<input type="radio" name="searchType" id="{{searcher.name}}-textSearch" value="text" ng-model="searcher.searchType" no-dirty-check />
Text Search
</label>
<label for="{{searcher.name}}-luceneSearch" class="radio inline">
<input type="radio" name="searchType" id="{{searcher.name}}-luceneSearch" value="lucene" ng-model="searcher.searchType" no-dirty-check />
Lucene Search
</label>
</div>
</form>
<div class="search-results" ng-show="searcher.isSearching">
<div ng-show="indexer.isProcessing" class="umb-loader-wrapper" ng-show="indexer.isProcessing">
<div class="umb-loader"></div>
</div>
<table ng-hide="searcher.isProcessing" class="table table-bordered table-condensed">
<thead>
<tr>
<th class="score">Score</th>
<th class="id">Id</th>
<th>Values</th>
</tr>
</thead>
<tbody>
<tr ng-repeat="result in searcher.searchResults">
<td>{{result.Score}}</td>
<td>{{result.Id}}</td>
<td>
<span ng-repeat="(key,val) in result.Fields track by $index">
<span class=""><em>{{key}}</em>:</span>
<span class="text-info">{{val}}</span>
</span>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</li>
<li>
<a href="" ng-click="toggle(searcher, 'showProviderProperties')">Provider properties</a>
<table ng-show="searcher.showProviderProperties" class="table table-bordered table-condensed">
<caption>&nbsp;</caption>
<tr ng-repeat="(key, val) in searcher.providerProperties track by $index">
<th>{{key}}</th>
<td>{{val}}</td>
</tr>
</table>
</li>
</ul>
</li>
</ul>
</div>
@@ -0,0 +1,139 @@
<div ng-controller="Umbraco.Dashboard.HealthCheckController as vm">
<div ng-if="vm.viewState === 'list'">
<h3 class="bold">Health Check</h3>
<div class="umb-healthcheck-help-text faded">
<p>The health checker evaluates various areas of your site for best practice settings, configuration, potential problems, etc. You can easily fix problems by pressing a button.
You can add your own health checks, have a look at <a href="https://our.umbraco.org/documentation/Extending/Healthcheck/" target="_blank" class="btn-link -underline">the documentation for more information</a> about custom health checks.</p>
</div>
<div class="umb-healthcheck-action-bar">
<button class="umb-era-button -blue" type="button" ng-click="vm.checkAllGroups(vm.groups);">Check All Groups</button>
</div>
<div class="umb-healthcheck">
<div class="umb-air" ng-repeat="group in vm.groups" ng-click="vm.openGroup(group);">
<div class="umb-healthcheck-group">
<div class="umb-healthcheck-title">{{group.name}}</div>
<div class="umb-healthcheck-group__load-container" ng-if="group.loading">
<umb-load-indicator></umb-load-indicator>
</div>
<div class="umb-healthcheck-messages" ng-hide="group.loading || !group.totalSuccess && !group.totalWarning && !group.totalError && !group.totalInfo">
<div class="umb-healthcheck-message" ng-if="group.totalSuccess > 0">
<i class="icon-check color-green"></i>
{{ group.totalSuccess }}
</div>
<div class="umb-healthcheck-message" ng-if="group.totalWarning > 0">
<i class="icon-alert color-yellow"></i>
{{ group.totalWarning }}
</div>
<div class="umb-healthcheck-message" ng-if="group.totalError > 0">
<i class="icon-delete color-red"></i>
{{ group.totalError }}
</div>
<div class="umb-healthcheck-message" ng-if="group.totalInfo > 0">
<i class="umb-healthcheck-status-icon icon-info"></i>
{{ group.totalInfo }}
</div>
</div>
</div>
</div>
</div>
</div>
<div ng-if="vm.viewState === 'details'">
<umb-editor-sub-header>
<umb-editor-sub-header-content-left>
<a class="umb-healthcheck-back-link" href="" ng-click="vm.setViewState('list');">&larr; Back to overview</a>
</umb-editor-sub-header-content-left>
</umb-editor-sub-header>
<div class="umb-healthcheck-group__details">
<div class="umb-healthcheck-group__details-group-title">
<div class="umb-healthcheck-group__details-group-name">{{ vm.selectedGroup.name }}</div>
<button class="umb-era-button -white -text-black" type="button" ng-click="vm.checkAllInGroup(vm.selectedGroup, vm.selectedGroup.checks);">Check group</button>
</div>
<div class="umb-healthcheck-group__details-checks">
<div class="umb-healthcheck-group__details-check" ng-repeat="check in vm.selectedGroup.checks">
<div class="umb-healthcheck-group__details-check-title">
<div class="umb-healthcheck-group__details-check-name">{{ check.name }}</div>
<div class="umb-healthcheck-group__details-check-description">{{ check.description }}</div>
</div>
<div class="umb-healthcheck-group__details-status" ng-repeat="status in check.status">
<div class="umb-healthcheck-group__details-status-icon-container">
<i class="umb-healthcheck-status-icon icon-check color-green" ng-if="status.resultType === 0"></i>
<i class="umb-healthcheck-status-icon icon-alert icon-alert color-yellow" ng-if="status.resultType === 1"></i>
<i class="umb-healthcheck-status-icon icon-delete icon-delete color-red" ng-if="status.resultType === 2"></i>
<i class="umb-healthcheck-status-icon icon-info icon-info" ng-if="status.resultType === 3"></i>
</div>
<div class="umb-healthcheck-group__details-status-content">
<div class="umb-healthcheck-group__details-status-text">
<div ng-bind-html="status.message"></div>
<div ng-if="status.description" ng-bind-html="status.description"></div>
</div>
<div class="umb-healthcheck-group__details-status-actions" ng-if="status.actions">
<div class="umb-healthcheck-group__details-status-action" ng-repeat="action in status.actions">
<ng-form name="healthCheckAction">
<div ng-if="action.valueRequired">
<div><label class="bold">Set new value:</label></div>
<input name="providedValue" type="text" ng-model="action.providedValue" required val-email/>
</div>
<button
type="button"
class="umb-era-button -blue"
ng-class="{ '-inactive': healthCheckAction.providedValue.$invalid}"
ng-click="vm.executeAction(check, $parent.$index, action);"
ng-disabled="healthCheckAction.providedValue.$invalid">
{{action.name}}
</button>
</ng-form>
<div class="umb-healthcheck-group__details-status-action-description" ng-if="action.description" ng-bind-html="action.description"></div>
</div>
</div>
</div>
</div>
<div ng-show="check.loading">
<div class="umb-healthcheck-group__details-status-overlay"></div>
<umb-load-indicator></umb-load-indicator>
</div>
</div>
</div>
</div>
</div>
</div>
@@ -0,0 +1,113 @@
<div class="redirecturlsearch" ng-controller="Umbraco.Dashboard.RedirectUrlsController as vm">
<umb-load-indicator ng-if="vm.dashboard.loading"></umb-load-indicator>
<umb-editor-sub-header>
<umb-editor-sub-header-content-right>
<umb-editor-sub-header-section ng-if="vm.dashboard.userIsAdmin === true">
<button
ng-if="vm.dashboard.urlTrackerDisabled === false"
type="button"
class="umb-era-button umb-button--s"
ng-click="vm.disableUrlTracker()">
<span><localize key="redirectUrls_disableUrlTracker">Disable URL Tracker</localize></span>
</button>
<button
ng-if="vm.dashboard.urlTrackerDisabled === true"
type="button"
class="umb-era-button umb-button--s -blue"
ng-click="vm.enableUrlTracker()">
<span><localize key="redirectUrls_enableUrlTracker">Enable URL Tracker</localize></span>
</button>
</umb-editor-sub-header-section>
<umb-editor-sub-header-section ng-if="vm.dashboard.urlTrackerDisabled === false">
<form class="form-search -no-margin-bottom pull-right" novalidate>
<div class="inner-addon left-addon">
<i class="icon icon-search"></i>
<input
class="form-control search-input"
type="text"
localize="placeholder"
placeholder="@general_typeToSearch"
ng-model="vm.dashboard.searchTerm"
ng-change="vm.filter()"
prevent-enter-submit
no-dirty-check>
</div>
</form>
</umb-editor-sub-header-section>
</umb-editor-sub-header-content-right>
</umb-editor-sub-header>
<div class="umb-table" ng-if="vm.redirectUrls.length > 0 && vm.dashboard.loading === false" ng-class="{'umb-table-inactive': vm.dashboard.urlTrackerDisabled === true}">
<div class="umb-table-head">
<div class="umb-table-row">
<div class="umb-table-cell not-fixed flx-s1 flx-g1 flx-b4"><localize key="redirectUrls_originalUrl">Original URL</localize></div>
<div class="umb-table-cell flx-s0 flx-g0" style="flex-basis: 20px;"></div>
<div class="umb-table-cell flx-s1 flx-g1 flx-b6"><localize key="redirectUrls_redirectedTo">Redirected To</localize></div>
</div>
</div>
<div class="umb-table-body">
<div class="umb-table-row -solid" ng-repeat="redirectUrl in vm.redirectUrls">
<div class="umb-table-cell not-fixed flx-s1 flx-g1 flx-b4">
<a class="umb-table-body__link" href="{{redirectUrl.originalUrl}}" target="_blank" title="{{redirectUrl.originalUrl}}">{{redirectUrl.originalUrl}}</a>
</div>
<div class="umb-table-cell flx-s0 flx-g0" style="flex-basis: 20px;">
<i class="umb-table-body__icon umb-table-body__fileicon icon-arrow-right" style="font-size: 12px; line-height: 1;"></i>
</div>
<div class="umb-table-cell flx-s1 flx-g1 flx-b6 items-center">
<div class="flx-s1 flx-g1 flx-b0" style="margin-right: 20px;">
<a class="umb-table-body__link" href="{{redirectUrl.destinationUrl}}" target="_blank" title="{{redirectUrl.destinationUrl}}">{{redirectUrl.destinationUrl}}</a>
</div>
<button type="button" class="umb-era-button umb-button--s -red" ng-click="vm.removeRedirect(redirectUrl)"><localize key="redirectUrls_removeButton">Remove</localize></button>
</div>
</div>
</div>
</div>
<umb-empty-state
ng-if="vm.redirectUrls.length === 0 && vm.dashboard.searchTerm.length === 0 && !vm.dashboard.loading"
position="center">
<div><localize key="redirectUrls_noRedirects">No redirects have been made</localize></div>
<small class="faded"><localize key="redirectUrls_noRedirectsDescription">When a published page gets renamed or moved a redirect will automatically be made to the new page</localize></small>
</umb-empty-state>
<umb-empty-state
ng-if="vm.redirectUrls.length === 0 && vm.dashboard.searchTerm.length > 0 && !vm.dashboard.loading"
position="center">
<localize key="general_searchNoResult"></localize>
</umb-empty-state>
<div class="flex justify-center items-center">
<umb-pagination
ng-if="vm.pagination.totalPages > 1 && !vm.dashboard.loading"
page-number="vm.pagination.pageNumber"
total-pages="vm.pagination.totalPages"
on-next="vm.goToPage"
on-prev="vm.goToPage"
on-go-to-page="vm.goToPage">
</umb-pagination>
</div>
</div>
@@ -0,0 +1,29 @@
<div id="examineManagement" ng-controller="Umbraco.Dashboard.XmlDataIntegrityReportController">
<h3>Xml Cache Data integrity</h3>
<div ng-show="loading">
Loading...
</div>
<p>
This checks the data integrity for the xml structures for content, media and members that are stored in the cmsContentXml table.
This does not check the data integrity of the xml cache file, only the xml structures stored in the database used to create the xml cache file.
</p>
<div ng-repeat="(key, value) in items" style="padding: 4px 0;">
<span ><strong>{{value.label}}&nbsp;...</strong></span>
<span ng-if="value.checking" class="text-info">Checking...</span>
<span ng-if="!value.checking && !value.invalid" class="text-success"><strong>Ok</strong></span>
<span ng-if="!value.checking && value.invalid" class="text-error"><strong>Error</strong></span>
<div ng-show="value.fix && !value.fixing">
<button type="button" ng-click="fix(value)" class="btn btn-danger" ng-if="value.invalid">
<span>Fix</span>
</button>
</div>
<div class="umb-loader-wrapper" ng-show="value.fixing">
<div class="umb-loader"></div>
</div>
</div>
</div>