Skip to content

Commit

Permalink
Addon README.asciidoc is now displayed under Documentation section
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Jun 5, 2015
1 parent 306e0cb commit 0b2a863
Show file tree
Hide file tree
Showing 5 changed files with 107 additions and 90 deletions.
2 changes: 1 addition & 1 deletion app/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -176,7 +176,7 @@ <h3>Contact</h3>
<script type="text/javascript" src="js/lib/forge.jquery.js"></script>
<script type="text/javascript" src="js/lib/jbossorg-tabzilla.js"></script>
<!-- AngularJS -->
<script type="text/javascript" src="js/lib/angular.min.js"></script>
<script type="text/javascript" src="js/lib/angular.js"></script>
<script type="text/javascript" src="js/lib/angular-ui-router.min.js"></script>
<script type="text/javascript" src="js/lib/ui-route-styles.js"></script>

Expand Down
14 changes: 12 additions & 2 deletions app/js/controllers/addonCtrl.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,22 @@ angular.module('jboss-forge').controller('addonCtrl', function($scope, $statePar
backendAPI.fetchAddons(function(data) {
$scope.addons = data;
});
$scope.setSelectedAddon = function(addon) {
var selectAddon = function(addon) {
$scope.selectedAddon = addon;
backendAPI.fetchAddonDocsById(addon.id, function(data) {
$scope.docSections = data;
});
}

$scope.setSelectedAddon = selectAddon;
$scope.fetchDocContents = function(addonId, docId) {
backendAPI.fetchAddonDocContentsById(addonId, docId, function (data) {
$scope.selectedAddon.docContents = data;
});
}
if ($stateParams.addonId) {
backendAPI.fetchAddonById($stateParams.addonId, function(addon) {
$scope.selectedAddon = addon;
selectAddon();
productModal();
});
}
Expand Down
6 changes: 6 additions & 0 deletions app/js/services/backendAPIService.js
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,12 @@ angular.module('jboss-forge').service('backendAPI', function($http, config){
this.fetchAddonById = function(addonId, _success) {
return this.fetch('/api/addons/'+addonId, _success);
}
this.fetchAddonDocsById = function(addonId, _success) {
return this.fetch('/api/addons/'+addonId+'/docs', _success);
}
this.fetchAddonDocContentsById = function(addonId, docId, _success) {
return this.fetch('/api/addons/'+addonId+'/docs/'+docId, _success);
}
this.fetchDocs = function(_success) {
return this.fetch('/api/docs', _success);
}
Expand Down
89 changes: 10 additions & 79 deletions app/views/addons.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,9 @@
<button type="button" class="close modal-forge-close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<div class="row">
<div class="product-nav-row col-xs-12">
<a href="#overview_detail" aria-controls="overview" role="tab" data-toggle="tab" onclick="return false">Overview</a>
<a href="#installation_detail" aria-controls="stats" role="tab" data-toggle="tab" onclick="return false">Installation</a>
<a href="#stats_detail" aria-controls="stats" role="tab" data-toggle="tab" onclick="return false">Stats</a>
<a href="#reviews_detail" aria-controls="stats" role="tab" data-toggle="tab" onclick="return false">Reviews</a>
<a href="#changelog_detail" aria-controls="stats" role="tab" data-toggle="tab" onclick="return false">Changelog</a>
<a href="#documentation_detail" aria-controls="stats" role="tab" data-toggle="tab" onclick="return false">Documentation</a>
<a href="#support_detail" aria-controls="stats" role="tab" data-toggle="tab" onclick="return false">Support</a>
<a href="#overview_detail" aria-controls="stats" role="tab" data-toggle="tab" onclick="return false;">Overview</a>
<a href="#installation_detail" aria-controls="stats" role="tab" data-toggle="tab" onclick="return false;">Installation</a>
<a ng-repeat="doc in docSections" href="#{{doc}}_detail" aria-controls="{{doc}}" role="tab" data-toggle="tab" ng-click="fetchDocContents(selectedAddon.id,doc)">{{doc}}</a>
</div>

</div>
Expand Down Expand Up @@ -50,85 +46,20 @@ <h3>AUTHORS</h3>
</div>
<!-- / End Overview Panel -->



<!-- Stats Panel -->
<div role="tabpanel" class="tab-pane" id="stats_detail">
<div class="row">
<div class="col-xs-12">
<h2>
Lorem Ipsum
</h2>
<div class="main-content">
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Proin sit amet vulputate risus, a pulvinar nibh. Nunc sit amet vulputate libero. Vestibulum non risus non felis commodo tempus sed a mauris. Suspendisse rutrum, dui vitae euismod varius, urna ipsum porttitor metus, non vehicula risus sapien id magna. Curabitur et odio semper, dictum orci in, eleifend augue. In mollis nulla non nulla rutrum semper. In pulvinar a magna in finibus. Vivamus quis consectetur turpis.
</p>

<p>
Vestibulum hendrerit tortor augue, eget varius felis venenatis sed. Duis tempus dolor orci, a maximus elit rhoncus ultricies. Integer venenatis tellus sed tellus rhoncus, et efficitur eros eleifend. Curabitur dapibus porta mi, eget dignissim neque rutrum at. Nam at porttitor est. Vivamus in urna tincidunt, malesuada mauris gravida, tincidunt magna. Donec rutrum nisi eget ultrices varius. Donec ut ultricies tellus, et dignissim lacus. Suspendisse potenti. Praesent nec nulla a arcu tempus accumsan vel at neque. Phasellus tempus consectetur magna. Quisque varius mi in quam molestie, quis feugiat urna blandit.
</p>
<p>
Etiam luctus, lectus at pulvinar maximus, tortor arcu luctus massa, vel facilisis neque tellus in eros. Nam rutrum accumsan nisi, nec finibus urna pharetra eget. Nullam elementum nisl velit, ac ullamcorper nunc ultrices vitae. Nunc maximus convallis magna, non bibendum odio consequat ut. Curabitur lacinia pharetra elit, vitae tincidunt felis cursus placerat. Donec non lectus bibendum, gravida mauris vitae, venenatis libero. Cras semper lorem nec congue dictum. Ut egestas nisi quis magna dapibus laoreet. Nullam ipsum sapien, consequat nec nisl eget, mollis elementum ipsum. Integer venenatis lectus at libero fringilla eleifend. Phasellus vulputate neque libero, et sodales velit dapibus vel. Cras vitae nisl ut dui condimentum eleifend. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse luctus tortor pretium magna scelerisque, a varius ex consectetur. Pellentesque finibus, est ut condimentum scelerisque, diam est convallis nisl, quis aliquet nibh massa ac justo.
</p>


</div>

</div>

</div>


</div>
<!-- / End Stats Panel -->



<!-- Reviews Panel -->
<div role="tabpanel" class="tab-pane" id="reviews_detail">
This is the reviews panel


</div>
<!-- / End Reviews Panel -->


<!-- Installation Panel -->
<div role="tabpanel" class="tab-pane" id="installation_detail">
<!-- Installation Panel -->
<div role="tabpanel" class="tab-pane" id="installation_detail">
<p>From Forge CLI:</p>
<br/>
<code>{{selectedAddon.installCmd}}</code>
</div>
<!-- / End Installation Panel -->


<!-- Changelog Panel -->
<div role="tabpanel" class="tab-pane" id="changelog_detail">
This is the changelog panel


</div>
<!-- / End Changelog Panel -->


<!-- Documentation Panel -->
<div role="tabpanel" class="tab-pane" id="documentation_detail">
This is the documentation panel
<!-- / End Installation Panel -->


<!-- Dynamic Panels -->
<div role="tabpanel" class="tab-pane" id="{{doc}}_detail" ng-repeat="doc in docSections">
<div ng-bind-html="selectedAddon.docContents|sanitize"></div>
</div>
<!-- / End Documentation Panel -->


<!-- Support Panel -->
<div role="tabpanel" class="tab-pane" id="support_detail">
This is the support panel


</div>
<!-- / End Support Panel -->


<!-- / End Dynamic Panels -->

</div>

Expand Down
86 changes: 78 additions & 8 deletions server.js
Original file line number Diff line number Diff line change
Expand Up @@ -49,17 +49,54 @@ app.get('/api/addons/:addonsId', function (req,res) {
var item = findById(addons['community'],req.params.addonsId);
if (!item) {
item = findById(addons['core'],req.params.addonsId);
if (!item) {
}
if (!item) {
res.status(404);
res.end();
} else {
res.json(item);
}
});

app.get('/api/addons/:addonsId/docs', function (req,res) {
var docs = findAddonDocSections(req.params.addonsId);
if (!docs) {
res.status(404);
res.end();
} else {
// Return the IDs only
res.json(Object.keys(docs));
}
});

app.get('/api/addons/:addonsId/docs/:docSection', function (req,res) {
var docs = findAddonDocSections(req.params.addonsId);
if (!docs) {
res.status(404);
res.end();
} else {
var value = docs[req.params.docSection];
if (!value) {
res.status(404);
res.end();
return;
}
if (!value['contents']) {
fetchRedoculous(value, res, function(data) {
value['contents'] = data;
res.header("Content-Type", "text/html");
res.write(value['contents']);
res.end();
});
} else {
res.json(item);
res.header("Content-Type", "text/html");
res.write(value['contents']);
res.end();
}
} else {
res.json(item);
}
});


app.get('/api/contributors', function(req, res) {
var contrib = cache.get('allContributors');
if (!contrib) {
Expand Down Expand Up @@ -212,7 +249,7 @@ function allAddons() {
var coreAddons = yamlLoadAll(fs.readFileSync(config.get('FORGE_WEBSITE_DATA_DIR') + "/addons-core.yaml"))
.map(function (item) {
item.type = 'core';
item.installCmd = 'addon-install-from-git --url '+item.repo+' --coordinate '+item.id+ (item.ref != 'master' ? '-- ref '+item.ref : '');
item.installCmd = 'addon-install --coordinate '+item.id;
return item;
});
addons = { 'community': communityAddons, 'core' : coreAddons};
Expand All @@ -221,6 +258,30 @@ function allAddons() {
return addons;
}

function findAddonDocSections(addonId) {
var cacheKey = 'docs_'+addonId;
var docs = cache.get(cacheKey);
if (!docs) {
var addons = allAddons();
var item = findById(addons['community'],addonId);
if (!item) {
item = findById(addons['core'],addonId);
}
if (item) {
// TODO: Pick only addon doc sections that exist
docs = {
// 'stats' : {path: 'README.asciidoc', repo: item.repo, ref: item.ref},
// 'reviews' : {path: 'README.asciidoc', repo: item.repo, ref: item.ref},
// 'changelog' : {path: 'CHANGELOG.asciidoc', repo: item.repo, ref: item.ref},
'documentation' : {path: 'README.asciidoc', repo: item.repo, ref: item.ref},
// 'support' : {path: 'README.asciidoc', repo: item.repo, ref: item.ref}
}
cache.set(cacheKey, docs);
}
}
return docs;
}

function allNews() {
var news = cache.get('allNews');
if (!news) {
Expand Down Expand Up @@ -256,6 +317,10 @@ function fetchContents(col, id, res){
res.end();
return;
}
fetchRedoculous(item,res);
}

function fetchRedoculous(item, res, _callback) {
// Fetching from Redoculous
var urlOptions = {
protocol: 'http:',
Expand All @@ -268,9 +333,14 @@ function fetchContents(col, id, res){
}
};
fetchUrl(url.format(urlOptions), function(error, meta, response) {
if (meta.status == 200)
res.write(response);
res.end();
if (meta.status == 200) {
if (_callback) {
_callback(response);
} else {
res.write(response);
}
}
res.end();
});
}

Expand Down

0 comments on commit 0b2a863

Please sign in to comment.