Ejemplo n.º 1
0
 router.path('/' + path + '/', function() {
   var pages = require('./' + path).pages;
   for(var page in pages) {
     if(pages.hasOwnProperty(page)) {
       this.post(page).bind(pages[page]);
       //this.get(page).bind(pages[page]);
     }
   }
 });
Ejemplo n.º 2
0
  	var run = function(req,res){						
		
		if(!req.userGroup){
			res.send(400);
			return;	
		}
		
		if(!req.query.template || !/^[a-zA-Z0-9]+$/.test(req.query.template)){
			res.send(404);
			return;	
		}
		
		if(!req.query.type || !/^[a-zA-Z0-9]+$/.test(req.query.type)){
			res.send(404);
			return;	
		}
		
		delete require.cache[require.resolve('../views/templates/'+req.userGroup+'/'+req.query.template+'/config.js')];
		var config = require('../views/templates/'+req.userGroup+'/'+req.query.template+'/config.js');
				
		if(req.query.type == 'page'){
			
			if(!req.query.page || !/^[a-zA-Z0-9_\-]+$/.test(req.query.page)){
				res.send(404);
				return;	
			}			
			
			if(config.pages.indexOf(req.query.page) !== -1){
				
				if(req.query['preview-panel-id'] && req.query['preview-component']){
				
					config.pagesInfo[req.query.page]['panels-detail'][req.query['preview-panel-id']] = getTemplateHTML(req.query['preview-component'], {}, req.query.template, req.userGroup, config)
										
				}

				res.render('templates/'+req.userGroup+'/'+req.query.template+'/'+req.query.page+'.html', {showPanelNumber : req.query['show-panel-number'] == 'true' ? true : false, panels: config.pagesInfo[req.query.page]['panels-detail'], templateName: config.templateName, pageName: config.pagesInfo[req.query.page].name, preview: true}, function(err, html){
				
						html = html.replace(/<\$\$(.*)\$\$>/g, '');
						html = html.replace(/window\.self != window\.top/g, 'false')
						res.end(html);
					
				});
				
				
			}else res.send(404);
		}else if(req.query.type == 'thumbnail'){
						
			if(config.thumbnail)
											
				res.sendfile(require('path').resolve('views/templates/'+req.userGroup+'/'+req.query.template+'/'+config.thumbnail));
			else
				res.send(404);
		}
	}
Ejemplo n.º 3
0
content.sections.forEach(function(section){
  section.pages = content.pages.filter(function(page) {
    return section.id == page.section
  })

  // Sort section pages if any of the pages have an `order` property
  // Pages without the order property will come last
  if (any(section.pages, 'order')) {
    section.pages = sortBy(section.pages, function(page) {
      return Number(page.order || 10000)
    })
  }
})
Ejemplo n.º 4
0
function build() {
  const metadata = require(path.resolve(root, 'postMap.json'));
  const myInfo = require(path.resolve(root, 'my.json'));
  const htmlMenu = require('./tasks/menu')();
  const rootBuildPath = path.resolve(root, 'build.json');
  // 删除博客文件夹
  del.sync(path.resolve(root, 'blog'));
  if (fs.existsSync(rootBuildPath)) {
    const rootBuildList = require(rootBuildPath).pages;
    rootBuildList.forEach((item) => {
      const mdConfig = {
        entry: path.resolve(root, item.path, item.entry),
        output: {
          path: item.path,
          name: 'index'
        },
        format: ['html'],
        template: path.resolve(root, item.template),
        resources: {
          markdownCss: '/static/css/markdown.css',
          highlightCss: '/static/css/highlight.css',
          homepage: myInfo.homepage,
          name: myInfo.name,
          htmlMenu
        }
      };
      mdpack(mdConfig);
    });
  }

  fs.readdirSync(path.resolve(root, '_posts'))
  .filter(m => fs.statSync(path.resolve(root, '_posts', m)).isDirectory())
  .forEach((year) => {
    fs.readdirSync(path.resolve(root, '_posts', year))
      .forEach((post) => {
        const filename = post.split('.md')[0];
        const _meta = metadata.post.find(_m => _m.filename === filename).metadata;
        const currentUrl = url.resolve(myInfo.homepage, `blog/${year}/${filename}`);
        const mdConfig = {
          entry: path.resolve(root, '_posts', year, post),
          output: {
            path: path.resolve(root, 'blog', year, filename),
            name: 'index'
          },
          format: ['html'],
          plugins: [
            new mdpack.plugins.mdpackPluginRemoveHead()
          ],
          template: path.join(__dirname, 'pages/blog.ejs'),
          resources: {
            markdownCss: '/static/css/markdown.css',
            highlightCss: '/static/css/highlight.css',
            title: _meta.title,
            author: _meta.author,
            type: _meta.type,
            intro: _meta.intro,
            tag: _meta.tag,
            keywords: _meta.keywords,
            homepage: myInfo.homepage,
            name: myInfo.name,
            disqusUrl: myInfo.disqus ? myInfo.disqus.src : false,
            currentUrl,
            htmlMenu
          }
        };
        mdpack(mdConfig);
      });
  });
}
Ejemplo n.º 5
0
		db.getRowWithColumns('promobuilder', 'promo:'+(isGet ? req.query.pid : req.body.pid), ["pages:"], {}, function(err,data) {
								
			
			if (err || data.length == 0){
				
				console.log(err);
				res.writeHead(500);
				res.end(); 
				return;
			}		
													
			var response = {};	
			var panels = {};
			
			for(key in data[0].columns){
															
				var pageId = key.replace('pages:','').split(":")[0];
				
				if(pageId == pageItemId){
					
					var type = key.replace('pages:'+pageItemId+':','').split(":")[0];
					
					if(type == 'type'){ response.type = data[0].columns[key].value; continue; }
					if(type == 'name'){ response.name = data[0].columns[key].value; continue; }
					if(type == 'desc'){ response.desc = data[0].columns[key].value; continue; }
					if(type == 'template'){ response.template = data[0].columns[key].value; continue; }
					if(type == 'template-page'){ response['template-page'] = data[0].columns[key].value; continue; }
					if(type == 'configurables'){ 
						
						if(typeof response['configurables'] == 'undefined')response['configurables'] = {};
						response['configurables'][key.replace('pages:'+pageItemId+':configurables:','')] = data[0].columns[key].value;
						continue; 
					}
					
					var panelId = parseInt(key.replace('pages:'+pageItemId+':','').split(":")[0]);
					
					if(panelId != '' && !isNaN(panelId)){
								
						var column = key.replace('pages:'+pageItemId+':'+panelId+':','').split(":");
						var index = parseInt(column[0]);
						
						if(typeof panels[panelId] == 'undefined')panels[panelId] = {};
						
						if(column[0] != '' && /^[0-9]+$/.test(column[0])){
							
							if(typeof panels[panelId]['data'] == 'undefined')panels[panelId]['data'] = [];
																																		
							if(typeof panels[panelId]['data'][index] == 'undefined')panels[panelId]['data'][index] = {};

							panels[panelId]['data'][index][column[column.length-1]] = data[0].columns[key].value;
							
						}else{
						
							panels[panelId][column[column.length-1]] = data[0].columns[key].value;
							
						}
						
					}
				}
				
			
			}
			
			for(panelId in panels){
				
				panels[panelId]['data'].sort(function(a,b){
					rowA = parseInt(a.row);
					rowB = parseInt(b.row);
					colA = parseInt(a.col);
					colB = parseInt(b.col);
					sizeyA = parseInt(a.sizey);
					sizeyB = parseInt(b.sizey);
					
					 if(rowA > rowB)return 1;
					 	else if ( rowA < rowB )return -1;
					 	else if (colA > colB )return 1;
					 	else if ( colA < colB )return -1;
					 	else if (sizeyA > sizeyB)return -1;
					 	else if ( sizeyA < sizeyB )return 1;
					 	else return 0;
				})
				
				
			}
						
			if(!response.template){
				res.send(400);
				return;
			}
			delete require.cache[require.resolve('../views/templates/'+req.userGroup+'/'+response.template+'/config.js')];
			var config = require('../views/templates/'+req.userGroup+'/'+response.template+'/config.js');
						
			var panelInfo = {};
			
			var hasFormElement = [];
			
			includeFBInit = false;
			
			for(panelId in panels){
				
				panelInfo[panelId] = [];
				
				var rowsCounted = [];
				
				
				if(typeof panels[panelId]['data'] == 'object' &&  panels[panelId]['data'].length > 0){
										
					for(var i=0;i<panels[panelId]['data'].length;i++){
						
						panels[panelId]['data'][i].panel = panelId;
						
						var html = getTemplateHTML(panels[panelId]['data'][i].type, panels[panelId]['data'][i], response.template, req.userGroup, config);
						
						if(panels[panelId]['data'][i].isFormElement == 'true' && hasFormElement.indexOf(panelId) === -1){
							hasFormElement.push(panelId);
						}
						
						if(i==0 && panels[panelId]['data'][i].row == 1 && panels[panelId]['data'][i].col != 1){
							
								html = '<div class="col-md-'+(parseInt(panels[panelId]['data'][i].col) - 1)+'"></div>'+html;
							
						}
						
						if(typeof panels[panelId]['data'][i-1] == 'object' &&  (parseInt(panels[panelId]['data'][i-1].col)+parseInt(panels[panelId]['data'][i-1].sizex)) < parseInt(panels[panelId]['data'][i].col) && panels[panelId]['data'][i-1].row === panels[panelId]['data'][i].row){
							var blank_sizex = parseInt(panels[panelId]['data'][i].col) - (parseInt(panels[panelId]['data'][i-1].col)+parseInt(panels[panelId]['data'][i-1].sizex));
							
							if(blank_sizex>0){
								html = '<div class="col-md-'+blank_sizex+'"></div>'+html;
							}
							
							
						}
						
						if(typeof panels[panelId]['data'][i-1] == 'object' &&  panels[panelId]['data'][i-1].row !== panels[panelId]['data'][i].row && parseInt(panels[panelId]['data'][i].col) > 1){
																					
							var previous_col_on_row = 0;
							
							for(var x=(i-1); x>=0;x--){
							
								if(((parseInt(panels[panelId]['data'][x].row)+parseInt(panels[panelId]['data'][x].sizey))-1) >= panels[panelId]['data'][i].row){
									if((parseInt(panels[panelId]['data'][x].col)+parseInt(panels[panelId]['data'][x].sizex)) <= panels[panelId]['data'][x].col){
										previous_col_on_row = Math.max(previous_col_on_row, (parseInt(panels[panelId]['data'][x].col)+parseInt(panels[panelId]['data'][x].sizex)));
									}
									
								}
								
							}
														
							var blank_sizex = parseInt(panels[panelId]['data'][i].col) - previous_col_on_row -1;
							
							if(blank_sizex>0){
								html = '<div class="col-md-'+blank_sizex+'"></div>'+html;
							}
							
							
						}
						
						
						if(rowsCounted.indexOf(panels[panelId]['data'][i].row) === -1){
							
							html = '<div class="row">'+html;
							if(parseInt(panels[panelId]['data'][i].row) > 1)html = '</div>'+html;
							rowsCounted.push(panels[panelId]['data'][i].row);
							if(parseInt(panels[panelId]['data'][i].sizey) > 1){
								
								for(var x= (parseInt(panels[panelId]['data'][i].row)+1); x< (parseInt(panels[panelId]['data'][i].row)+parseInt(panels[panelId]['data'][i].sizey));x++){
									
									rowsCounted.push(x.toString());
									
								}
								
							}
							
						}
						
						panelInfo[panelId].push(html);
						
					}
					
				}
				
				
			}
			
			for(key in panelInfo){
												
				panelInfo[key] = panelInfo[key].join('')+'</div>';
				
				if(hasFormElement.indexOf(key) !== -1){
				
					panelInfo[key] = '<form data-submit="'+panels[key]['save-data-from']+'" data-path="/'+pageItemId+'.'+key+'">'+panelInfo[key]+'</form>';
					
					
				}
								
			}
			
			var reqType = isGet ? req.query.type : req.body.type;
						
			if(reqType == 'json'){
				
				response.panels = panels;
				response.html = panelInfo;
				res.send(response);
				return;
				
			}else if(reqType == 'generateHTML'){
				if(typeof cb == 'function')cb( req, res, response, panelInfo, config, pageItemId, panels, hasFormElement);
				
			}else{
								
				if(config.pages.indexOf(response['template-page']) !== -1){
					
					fs.readFile(require('path').resolve('views/templates/'+req.userGroup+'/'+response.template+'/'+response['template-page']+'.html'), function(err, file){
						
						if (err){
							console.log(err);	
							res.send(500);
							return;
						}												
						
					
						var compiled = ejs.compile(file.toString(), {filename: require('path').resolve('views/templates/'+req.userGroup+'/'+response.template+'/'+response['template-page']+'.html'), compileDebug: false, debug: false});
					
						var html = compiled({
							 showPanelNumber : false,
							 panels: panelInfo,
							 templateName: config.templateName,
							 pageName: config.pagesInfo[response['template-page']].name
						});
						
						html = html.replace(/<\$\$(.*)\$\$>/g, '');
						
						res.send(html);
						
					})
					
						
				}else{
					res.send(404);
				}
				
			}
		
					
		});