WiX skip dialog with conditions - dialog

I have a custom dialog that is showen when InstallPEDatabase feature is selected.
Here is that part of the sequence where MyEditConfig is my custom dialog:
<Publish Dialog="MyCustomizeDlg" Control="Next" Event="NewDialog" Value="MyEditConfigDlg"><![CDATA[(&CreatePEDatabase=3)]]></Publish>
<Publish Dialog="MyCustomizeDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg"><![CDATA[NOT(&CreatePEDatabase=3)]]></Publish>
<Publish Dialog="MyEditConfigDlg" Control="Next" Event="NewDialog" Value="VerifyReadyDlg">1</Publish>
<Publish Dialog="MyEditConfigDlg" Control="Back" Event="NewDialog" Value="MyCustomizeDlg">1</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyCustomizeDlg" Order="1">NOT CreatePEDatabase = 3 AND NOT Installed OR WixUI_InstallMode = "Change"</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MyEditConfigDlg" Order="2">CreatePEDatabase = 3 AND NOT Installed OR WixUI_InstallMode = "Change"</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="MaintenanceTypeDlg" Order="3">Installed AND NOT PATCH</Publish>
<Publish Dialog="VerifyReadyDlg" Control="Back" Event="NewDialog" Value="WelcomeDlg" Order="4">Installed AND PATCH</Publish>
Like this it works for selecting the feature then the MyEditConfigDlg is presented and when feature is not selected then it is not presented. The problem is that when i click next from my custom dialog and go to VerifyReadyDlg and click back from there it takes me back to the MyCustomizeDlg instead of MyEditConfigDlg. I know there is something wrong with the conditions, but i just cant figure out what.

The syntax of the "feature" CreatePEDatabase is being specified as a "property" (variable without a prefix). You need to prefix features with an ampersand. As it is now, the test is asking "NOT(Is the Property CreatePEDatabase =3)" which will be true because that property doesn't exist and is not equal to anything.
If you change the syntax to a feature, then it will be evaluted correctly.
Here's a great summary of the syntax used by the MSI engine (which reads the WiX resulting MSI file):
http://msdn.microsoft.com/en-us/library/aa368012(VS.85).aspx
Also, you can omit the "Order" values, as those are only used in special cases of multiple dialogs for the same conditions. Your tests will make each situation unique.

Related

CarouselView.FormsPlugin Not Properly Working on Xamarin IOS

I Installed CarouselView.FormsPlugin 6.0.0 on PCL Project
It's Working Fine on Android But When I Use On Ios facing Frame height not cover fully on CarouselView ItemTemplate
Code:-
<StackLayout>
<RefreshView>
<CollectionView x:Name="CollView">
<CollectionView.ItemTemplate>
<DataTemplate>
<cv:CarouselViewControl HeightRequest="110" AnimateTransition="False" ShowIndicators="True" Position="0" InfiniteScrolling="True" InterPageSpacing="20" VerticalOptions="Fill" HorizontalOptions="FillAndExpand" IsSwipeEnabled="True" AutoplayInterval="5" IndicatorsTintColor="#E5E5E5" ItemsSource="{Binding HomeDisplayOffers}" HorizontalIndicatorsPosition="Bottom">
<cv:CarouselViewControl.ItemTemplate >
<DataTemplate >
<StackLayout HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<Frame Padding="0" HeightRequest="110" "HorizontalOptions="FillAndExpand" VerticalOptions="FillAndExpand">
<!--- Binding Source Code --->
</Frame>
</StackLayout
</DataTemplate >
</cv:CarouselViewControl.ItemTemplate>
</cv:CarouselViewControl>
</DataTemplate>
</CollectionView.ItemTemplate>
</CollectionView>
</RefreshView>
</StackLayout>
pls Check the Attached Screenshot.. Some Frame Coverup and Some Frame Getting Space on Bottom
That has nothing to do with the control and everything to do with your XAML code, Giving it a static height is going to obviously do this, options that you have are quite simple to be honest get a container that covers the whole frame like Absolute or Grid
<AbsoluteLayout>
<cv:CarouselViewControl AnimateTransition="False" ShowIndicators="True" Position="0" InfiniteScrolling="True" InterPageSpacing="20" AbsoluteLayout.LayoutBounds="0,0,1,1"
AbsoluteLayout.LayoutFlags="All" VerticalOptions="Fill" HorizontalOptions="FillAndExpand" IsSwipeEnabled="True" AutoplayInterval="5" IndicatorsTintColor="#E5E5E5" ItemsSource="{Binding HomeDisplayOffers}" HorizontalIndicatorsPosition="Bottom">
<cv:CarouselViewControl.ItemTemplate >
<DataTemplate >
<Frame Padding="0">
<!--- Binding Source Code --->
</Frame>
</StackLayout
</DataTemplate >
</cv:CarouselViewControl.ItemTemplate>
</cv:CarouselViewControl>
</AbsoluteLayout>

Sitecore: creating new <site> equal to existing one with different hostname causes "Layout not found" error

I want to be able to reach my Sitecore website from two different Hostnames, and to do so I created a new entry under <sites> in web.config; here are the code snippets (I omitted the non relevant parts):
<site name="Site1" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" hostName="mysyte.dev" />
<site name="Site2" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" hostName="mysyte.mydev" />
I have saved the config and republished the whole website just to be sure, but to no avail: if I access the second site, I get the "The layout for the requested document was not found." error, apparently generated from requesting layout {00000000-0000-0000-0000-000000000000}.
IIS is configured properly, with both hostnames mapped to the same port in the relevant website - yet only one of them works.
Am I missing something really obvious here?
EDIT: the full site entries are as follows:
<site name="Site1" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" hostName="mysyte.dev" startItem="/AppName" loginPage="/login" database="master" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false"/>
<site name="Site2" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" hostName="mysyte.mydev" startItem="/AppName" loginPage="/login" database="master" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false"/>
Yes. StartItem is missing. But for what you want, separate multiple hostnames in the same attribute by using the pipe delimiter, instead of two separate site definitions.
What is most likely happening here is that the SiteResolver pipeline process is not actually hitting the site definition you think it should. That's the first place I would look. Make sure you have a default catch-all site defined (no hostName) and drop a basic rendering there so you can easily identify it. That being said, Mark's answer is the way to go.
Edit: Remember also that order of site definitions matters here.
Try with this:
<site name="Site1" hostName="Site1.dev" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/Site1" startItem="/home" loginPage="/login" database="master" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enableAnalytics="true" enablePreview="false" enableWebEdit="false" enableDebugger="false" disableClientData="false" />
<site name="Site2" hostName="Site2.dev" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content/Site1" startItem="/home" loginPage="/login" database="master" domain="extranet" allowDebug="true" cacheHtml="false" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="false" enableWebEdit="false" enableDebugger="false" disableClientData="false" />`
Set the targetHostName attribute on the 'site' node and set Rendering.SiteResolving to true.
<site name="Site1" hostName="mysyte.dev" targetHostName="mysyte.dev" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" startItem="/AppName" loginPage="/login" database="master" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false"/>
<site name="Site2" hostName="mysyte.mydev" targetHostName="mysyte.mydev" virtualFolder="/" physicalFolder="/" rootPath="/sitecore/content" startItem="/AppName" loginPage="/login" database="master" domain="extranet" allowDebug="true" cacheHtml="true" htmlCacheSize="10MB" registryCacheSize="0" viewStateCacheSize="0" xslCacheSize="5MB" filteredItemsCacheSize="2MB" enablePreview="true" enableWebEdit="true" enableDebugger="true" disableClientData="false"/>

How to detect DataFormWebPart list name

i m learning sharepoint and i have a project which has lots of codes.
now i want to determine a list which is the source of a DataFormWebPart. but i do not know how to do it.
i m sharing the codes below
<WebPartPages:DataFormWebPart runat="server" Description="" ImportErrorMessage="Bu Web Bölümü alınamıyor." PartOrder="0" HelpLink="" AllowRemove="True" IsVisible="True" AllowHide="True" UseSQLDataSourcePaging="True" ExportControlledProperties="True" Title="Tablo4" ViewFlag="8" NoDefaultStyle="TRUE" AllowConnect="True" FrameState="Normal" PartImageLarge="" AsyncRefresh="False" ExportMode="All" Dir="Default" DetailLink="" ShowWithSampleData="true" ListId="df76ae41-38ce-47d2-b71c-00c35cef2b1a" ListName="{DF76AE41-38CE-47D2-B71C-00C35CEF2B1A}" FrameType="None" PartImageSmall="" IsIncluded="True" SuppressWebPartChrome="False" AllowEdit="True" ManualRefresh="False" ChromeType="None" AutoRefresh="False" AutoRefreshInterval="60" AllowMinimize="True" ViewContentTypeId="" InitialAsyncDataFetch="False" MissingAssembly="Bu Web Bölümü alınamıyor." HelpMode="Modeless" ID="g_51527b71_a960_4999_8c5c_655ad7d5cba0" ConnectionID="00000000-0000-0000-0000-000000000000" AllowZoneChange="True" IsIncludedFilter="" __MarkupType="vsattributemarkup" __WebPartId="{51527B71-A960-4999-8C5C-655AD7D5CBA0}" __AllowXSLTEditing="true" WebPart="true" Height="" Width="">
<ParameterBindings>
<ParameterBinding Name="dvt_apos" Location="Postback;Connection"/>
<ParameterBinding Name="ManualRefresh" Location="WPProperty[ManualRefresh]"/>
<ParameterBinding Name="UserID" Location="CAMLVariable" DefaultValue="CurrentUserName"/>
<ParameterBinding Name="Today" Location="CAMLVariable" DefaultValue="CurrentDate"/>
<ParameterBinding Name="ListID" Location="None" DefaultValue="{DF76AE41-38CE-47D2-B71C-00C35CEF2B1A}"/>
<ParameterBinding Name="yil" Location="QueryString(yil)" DefaultValue=""/>
</ParameterBindings>
<DataFields>
#Title,Başlık;#FileLeafRef,Ad (formlarda kullanmak için);#FSObjType,Öğe Türü;#ContentType,İçerik Türü;#Created_x0020_Date,Oluşturma Tarihi;#FileRef,URL Yolu;#File_x0020_Type,Dosya Türü;#ContentTypeId,İçerik Türü Kimliği;#ID,Kimlik;#FolderChildCount,Alt Klasör Sayısı;#_UIVersionString,Sürüm;#Author,Oluşturan;#Y_x0131_l,Yıl;#_x00d6_zkaynak,Özkaynak;#Bakanl_x0131_k,Bakanlık;#D_x0131__x015f_,Dış;#_x00d6_zkaynak0,Özkaynak0;#Bakanl_x0131_k0,Bakanlık0;#D_x0131__x015f_0,Dış0;#_x00d6_zkaynak1,Özkaynak1;#Bakanl_x0131_k1,Bakanlık1;#D_x0131__x015f_1,Dış1;#_x00d6_zkaynak2,Özkaynak2;#Bakanl_x0131_k2,Bakanlık2;#D_x0131__x015f_2,Dış2;#TGBId,TGBId;#_x00d6_zkaynak3,Özkaynak3;#Bakanl_x0131_k3,Bakanlık3;#D_x0131__x015f_3,Dış3;#Harcama_x0020_T_x00fc_r_x00fc_,Harcama Türü;#Harcama_x0020_T_x00fc_r_x00fc__x,Harcama Türü:No;#Harcama_x0020_T_x00fc_r_x00fc__x0,Harcama Türü:IsChild;#Bakanl_x0131_kT,BakanlıkT;#_x00d6_zkaynakT,ÖzkaynakT;#D_x0131__x015f_T,DışT;#Harcama_x0020_T_x00fc_r_x00fc__x1,Harcama Türü:Kimlik;#TGBId_x003a_TGB,TGBId:TGB;#TGBId_x003a_Kimlik,TGBId:Kimlik;#yil_,yil_;#Harcama_x0020_T_x00fc_r_x00fc__x2,Harcama Türü:Destek_;#Harcama_x0020_T_x00fc_r_x00fc__x3,Harcama Türü:parent_;#IDO,IDO;#Modified,Değiştirme;#Created,Oluşturma Tarihi;#Editor,Değiştiren;#Attachments,Ekler;#FileDirRef,Yol;#_HasCopyDestinations,Kopyalama Hedefleri Var;#_CopySource,Kopyalama Kaynağı;#_ModerationStatus,Onay Durumu;#_UIVersion,Kullanıcı Arabirimi Sürümü;#ItemChildCount,Öğe Alt Öğe Sayısı;</DataFields>
Do the following:
Consider the following Parameter.
<ParameterBinding Name="ListID" Location="None" DefaultValue="{DF76AE41-38CE-47D2-B71C-00C35CEF2B1A}"/>
Append this list ID {DF76AE41-38CE-47D2-B71C-00C35CEF2B1A} to your web address.
So it will look something like this:
http://servername/WebName/_layouts/listedit.aspx?List={DF76AE41-38CE-47D2-B71C-00C35CEF2B1A}
Open the URL thus created and you will be redirected to the respective list's settings page where you'll find the name of the list. Enjoy!

Silverlight control InitializeComponent freezes application

I have a control that I create hundreds of times during the application.
I have noticed that my app freezes because in the Initializecomponent function,
there is
System.Windows.Application.LoadComponent(this, new System.Uri("/fa;component/Controls/Common/Popup/PopupItem.xaml", System.UriKind.Relative));
if I comment this out, the application runs smoothly (of course without the control rendered).
How can I avoid/increase performance so the XAML won't be loaded each time, but somehow to recycle the control??
for (int i = 5; i < colValues.Count; i++)
{
if (colValues[i].Count == "1")
continue;
PopupItem pi = new PopupItem(colValues[i], false, this, FilterCategorySearch.PopupContent);
FilterCategorySearch.PopupContent.spItemsContainer.Children.Add(pi);
}
and the XAML is
<UserControl x:Class="FacetedSearch.Controls.Common.Popup.PopupItem"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:FacetedSearch.Controls.Common"
mc:Ignorable="d">
<UserControl.Resources>
<SolidColorBrush x:Key="TextNormalBrush" Color="#FF656565"/>
<SolidColorBrush x:Key="TextHoverBrush" Color="#FFA39F9F"/>
</UserControl.Resources>
<StackPanel MouseEnter="LayoutRoot_MouseEnter" MouseLeave="LayoutRoot_MouseLeave" Orientation="Horizontal" Margin="0,4,0,0">
<local:CTLCheckBox x:Name="cbFilter" MouseLeftButtonUp="cbFilter_MouseLeftButtonUp" Cursor="Hand" Height="14" Width="10" Margin="4,0" />
<TextBlock x:Name="tbFilterName" Foreground="{StaticResource TextNormalBrush}" MouseLeftButtonUp="tbFilterName_MouseLeftButtonUp" TextWrapping="Wrap" FontFamily="Arial" Margin="0,0,4,0" Cursor="Hand"/>
<TextBlock x:Name="tbFilterCount" TextWrapping="Wrap" Foreground="{StaticResource TextNormalBrush}" FontFamily="Arial"/>
</StackPanel>
thanks
The xaml for UserControls is parsed by Silverlight for every new instance of the UserControl. This means that if you add 100 instances of the same UserControl, the xaml will be read, parsed, instantiated as objects then visual objects 100 times.
You have 2 possibilities:
Access your UserControl from another location by referencing it from within a DataTemplate (used by means of, say, a ContentControl)
Rewrite your UserControl to be a "real" control (i.e. a sublass of Control or ContentControl)

Adding an item to ItemControl which is not from binding Items Source

I am working on generating a list of check boxes with the first check box to be "SelectAll". SelectAll checkbox will check or uncheck all the check box in the list. However my check list is binding to a data source. Right now I want to put all check box including selectAll check box in the same wrappanel so that they can be wrapped together at the end of the panel.
<ContentControl Name="FilterContent">
<WrapPanel Orientation="Horizontal" HorizontalAlignment="Stretch">
<CheckBox Name="SelectedAll" MinWidth="100" Margin="2"
VerticalAlignment="Center" HorizontalAlignment="Left"
IsChecked="{Binding IsSelectAll, Mode=TwoWay}"
Content="{Binding Path=SelectAllText}">
<i:Interaction.Triggers>
<i:EventTrigger EventName="Click">
<cmd:EventToCommand Command="{Binding Path=OnClickCommand}"/>
</i:EventTrigger>
</i:Interaction.Triggers>
</CheckBox>
<ItemsControl ItemsSource="{Binding StandardItems}"
Margin="2,5,2,-1"
BorderBrush="{x:Null}"
Background="Transparent"
Grid.ColumnSpan="2"
ScrollViewer.VerticalScrollBarVisibility="Hidden"
ScrollViewer.HorizontalScrollBarVisibility="Hidden">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Name="ItemsPanel" Orientation="Horizontal"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<CheckBox Name="ItemCheckBox"
MinWidth="100" Margin="2"
VerticalAlignment="Center" HorizontalAlignment="Left"
IsChecked="{Binding Path=IsChecked, Mode=TwoWay}"
Content="{Binding Path=Label}"/>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>
</WrapPanel>
</ContentControl>
This piece of code does not allow me to do that, the result UI only have the items inside item control wrapped in the second line but not consider all check box in the same wrappanel. I need help on adding "SelectAll" check box to the wrappanel that is used by itemscontrol.
Thank you!
When loading the control I would add an empty StandardItem in the StandardItems list which will mean "select all". When I process the checkbox click event, I check if the item is an empty item and I use this as a call to "select all"

Resources