Discuz.Forum/NVelocity.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Commons.Collections;
using NVelocity;
using NVelocity.App;
using NVelocity.Context;
using System.IO;
using NVelocity.Runtime;
using System.Text;
using Discuz.Common;
using Discuz.Config;
namespace Discuz.Forum
{
public class NVelocity
{
public static VelocityEngine engine;
public static ExtendedProperties props;
public static string filePath = "";
public static Template template;
static NVelocity()
{
filePath = Utils.GetMapPath(BaseConfigs.GetForumPath);
engine = new VelocityEngine();
props = new ExtendedProperties();
props.AddProperty(RuntimeConstants.INPUT_ENCODING, "utf-8");
props.AddProperty(RuntimeConstants.OUTPUT_ENCODING, "utf-8");
props.AddProperty(RuntimeConstants.FILE_RESOURCE_LOADER_PATH, filePath);
engine.Init(props);
}
public static string GetTemplateData(string name)
{
template = engine.GetTemplate(name);
return template.Data.ToString();
}
public static string TemplateMerge(string name, Hashtable table)
{
template = engine.GetTemplate(filePath+name);
VelocityContext content = new VelocityContext();
foreach (DictionaryEntry entry in table)
{
content.Put(entry.Key.ToString(), entry.Value);
}
StringWriter writer = new StringWriter();
template.Merge(content, writer);
return writer.GetStringBuilder().ToString();
}
public static string StringMerge(string templateContext, Hashtable table)
{
var engine = new VelocityEngine();
engine.Init();
var content = new VelocityContext();
if (table != null)
foreach (DictionaryEntry entry in table)
{
content.Put(entry.Key.ToString(), entry.Value);
}
using (var writer = new StringWriter())
{
engine.Evaluate(content, writer, "", templateContext);
return writer.GetStringBuilder().ToString();
}
}
public static bool CreateTemplate(string path, string str)
{
try
{
using (FileStream fs = new FileStream(filePath +path, FileMode.Create, FileAccess.ReadWrite, FileShare.ReadWrite))
{
str = str.Replace("%include", "#include");
Byte[] info = Encoding.UTF8.GetBytes(str);
fs.Write(info, 0, info.Length);
fs.Close();
}
return true;
}
catch (Exception e)
{
return false;
}
}
}
}
作者:Bober Song
出处:http://bober.cnblogs.com/
CARE健康网: http://www.aicareyou.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
出处:http://bober.cnblogs.com/
CARE健康网: http://www.aicareyou.com/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。