In the Content Editor go to the Review tab. Use the workflow section to progress the item through to approval.

In the Content Editor go to the Review tab. Use the workflow section to progress the item through to approval.
<?xml version="1.0" encoding="utf-8"?> <kml xmlns="http://earth.google.com/kml/2.1"> <NetworkLink> <name>GPS</name> <flyToView>1</flyToView> <Url> <href>path/to/auto/update/file.kml</href> <refreshMode>onInterval</refreshMode> <refreshInterval>2</refreshInterval> </Url> </NetworkLink> </kml>
Google hasn't been very successful in finding relevant information about Sitecore 6. Or perhaps I haven't been searching for the right terms. Still I've found the Security API Cookbook to be really useful for developing custom security providers.
The blog post Producing readable log4net output has some good ideas for excluding the Exception StackTrace from LoggingEvents.
In my case I used loggingEvent.GetLoggingEventData(FixFlags.All)
to get a copy of the LoggingEventData
. I then cleared the ExceptionString
in the LoggingEventData
and used this to create a new LoggingEvent
for use in RenderLoggingEvent.
I got caught up for a bit trying to use Google.GData.Documents.DocumentsFeed and Google.GData.Documents.DocumentEntry to download a Google Document as a PDF. Then I found the Google.Documents namespace and the problem became trivially easy.
using System; using System.IO; using System.Net; using Google.Documents; using Google.GData.Client; namespace Google { class Program { private static string applicationName = "Testing"; static void Main(string[] args) { GDataCredentials credentials = new GDataCredentials("username@gmail.com", "password"); RequestSettings settings = new RequestSettings(applicationName, credentials); settings.AutoPaging = true; settings.PageSize = 100; DocumentsRequest documentsRequest = new DocumentsRequest(settings); FeeddocumentFeed = documentsRequest.GetDocuments(); foreach (Document document in documentFeed.Entries) { Document.DownloadType type = Document.DownloadType.pdf; Stream downloadStream = documentsRequest.Download(document, type); Stream fileSaveStream = new FileStream(string.Format(@"C:\Temp\{0}.pdf", document.Title), FileMode.CreateNew); if (fileSaveStream != null) { int nBytes = 2048; int count = 0; Byte[] arr = new Byte[nBytes]; do { count = downloadStream.Read(arr, 0, nBytes); fileSaveStream.Write(arr, 0, count); } while (count > 0); fileSaveStream.Flush(); fileSaveStream.Close(); } downloadStream.Close(); } } } }
This is how a 1 by 1 pixel transparent gif appears when base 64 encoded.
R0lGODlhAQABAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAABAAEAAAgEAP8FBAA7
You can stream it back to the client browser in ASP.NET with:
Response.Clear(); string content = @"R0lGODlhAQABAPcAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAEAAP8ALAAAAAABAAEAAAgEAP8FBAA7"; Response.ContentType = "image/gif"; Response.BinaryWrite(System.Convert.FromBase64String(content)); Response.End();
When using the log4net (1.2.10) AdoNetAppender I needed to encrypt the connection string as it contained the DB users name and password. I couldn't find an easy way to do this so I ended up reading the connection string from the parent apps web.config. See: Stack Overflow: Encrypt the connectionString used by the log4ent AdoNetAppender