File: Global.asax

package info (click to toggle)
mono-tools 4.2-3.1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, bullseye, sid
  • size: 13,868 kB
  • sloc: cs: 100,909; sh: 3,845; makefile: 2,040; javascript: 1,557; xml: 126
file content (125 lines) | stat: -rw-r--r-- 3,561 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
<%@ Application ClassName="Mono.Website.Global" %>
<%@ Import Namespace="Monodoc" %>
<%@ Import Namespace="System.Web.Configuration" %>
<%@ Import Namespace="System.Collections.Generic" %>
<%@ Import Namespace="System.IO" %>
<%@ Import Namespace="System.Linq" %>
<%@ Assembly name="monodoc" %>

<script runat="server" language="c#" >
public static RootTree help_tree;
[ThreadStatic]
static SearchableIndex search_index;
public static string ua = null;

void Application_Start ()
{
	HelpSource.use_css = true;
	HelpSource.FullHtml = false;
	HelpSource.UseWebdocCache = true;
	var rootDir = WebConfigurationManager.AppSettings["MonodocRootDir"];
	if (!string.IsNullOrEmpty (rootDir))
		help_tree = RootTree.LoadTree (rootDir);
	else
		help_tree = RootTree.LoadTree ();
	
	//Google analytics if we want em
	ua = WebConfigurationManager.AppSettings["GoogleAnalytics"];

	SettingsHandler.Settings.EnableEditing = false;
}

/*----------------TREE BUILDING----------------*/
public static readonly string kipunji_root_url = "http://docs.go-mono.com/";
private static readonly string prefixes = "TNCFEMP";

public static bool should_redirect_to_kipunji (string link)
{
	return prefixes.IndexOf (link [0]) > -1;
}

public static void redirect_to_kipunji (HttpContext context, string link)
{
	StringBuilder res = new StringBuilder ();
        res.Append (kipunji_root_url);

	if (link.StartsWith ("T:")) {

	      int end = link.Length;
	      string post = String.Empty;
	      if (link.Length > 3 && link [link.Length - 2] == '/') {
                  end = link.Length - 2;
	          switch (link [link.Length - 1]) {
	      	     case '*':
		     	  post = "/Members";
			  break;
		     case 'M':
		           post = "/Members#methods";
			   break;
		     case 'P':
		     	   post = "/Members#properties";
			   break;
		     case 'C':
		     	   post = "/Members#ctors";
			   break;
	             case 'F':
		     	   post = "/Members#fields";
			   break;
		     case 'E':
		     	   post = "/Members#events";
			   break;
	          }
              }

	      res.Append (link.Substring (2, end - 2));
	      res.Append (post);
	          
	} else if (link.StartsWith ("C:")) {
	      // HACK: Instead of linking to the proper ctor just send them to all the ctors
	      res.AppendFormat ("{0}/Members#ctors", link.Substring (2, link.Length - 2));
	} else if (link.StartsWith ("N:") || link.StartsWith ("M:") || link.StartsWith ("P:") || link.StartsWith ("C:") || link.StartsWith ("E:"))
	      res.Append (link.Substring (2, link.Length - 2));

	context.Response.RedirectPermanent (res.ToString ());
}

public static string CreateTreeBootFragment ()
{
	var fragment = new System.Text.StringBuilder ();

	for (int i = 0; i < help_tree.Nodes.Count; i++){
		Node n = (Node)help_tree.Nodes [i];

		string url = n.PublicUrl;

		if (n.Caption == "Base Class Library" || n.Caption == "Mono Libraries")
			url = kipunji_root_url + (n.Caption == "Base Class Library" ? "?display_all=true" : String.Empty);

		fragment.Append ("tree.CreateItem (root, '" + n.Caption + "', '" + url + "', ");
	
		if (n.Nodes.Count != 0)
			fragment.Append ("'" + i + "'");
		else
			fragment.Append ("null");
	
		if (i == help_tree.Nodes.Count-1)
			fragment.Append (", true");
		else
			fragment.Append (", false");

		fragment.Append (@");
			");
	}

	return fragment.ToString ();
}

/*------------SEARCH------------*/
public static SearchableIndex GetSearchIndex ()
{
	if (search_index != null)
		return search_index;
	return (search_index = help_tree.GetSearchIndex ());
}

</script>